External pin interrupt on GSM Shield

Please i need your help !!!
I want to make an external interrupt project that notifying me via my gsm m10 Quectel shield which is connected with my arduino uno. The problem is :

When i try this TEST code with serial print everything WORKS GREAT .

every time i change state to pin 3 i get the serial print

#include <GSM.h>
GSM gsmAccess;
GSM_SMS sms;


volatile int state = LOW;

void setup()
{
    Serial.begin (9600);
  pinMode (3,INPUT_PULLUP); 
 attachInterrupt(1, blink, CHANGE);
}

void loop()
{
  
}

void blink()
{

delay (2000);
 if (digitalRead (3) == HIGH){ 
 
   
  }
  else {
        Serial.println ("  test2  ");

  }

}

but when put in, the gsm parameters for sending me an sms like the code below NOTHING HAPPENS

#include <GSM.h>
GSM gsmAccess;
GSM_SMS sms;


volatile int state = LOW;

void setup()
{
    Serial.begin (9600);
  pinMode (3,INPUT_PULLUP); 
 attachInterrupt(1, blink, CHANGE);
}

void loop()
{
  
}

void blink()
{

delay (2000);
 if (digitalRead (3) == HIGH){ 
        gsmAccess.begin() ;
 char remoteNum[20]="694......";
  char txtMsg[200]="SOS 1 ";
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS();
   
  }
  else {
        Serial.println ("  test2  ");
        gsmAccess.begin() ;
 char remoteNum[20]="694........";  
  char txtMsg[200]="SOS 2 ";
  sms.beginSMS(remoteNum);
  sms.print(txtMsg);
  sms.endSMS();
  }

}

I would suggest that you rethink your program. The interrupt service routine should simply set a flag - the loop() function should check the state of that flag and act upon it.

What i wanna do is just send me back an sms every time my arduino pin change state from high to low..
please help me

First of all, why do you think you need to use an interrupt?

Why are you triggering the interrupt on CHANGE (changes from HIGH to LOW, and from LOW to HIGH)? Surely you should be using FALLING? https://www.arduino.cc/en/Reference/AttachInterrupt

What happened when you made the changes I suggested?

problem solved using "lastbuttonstate"

here is my code !!!

#include <GSM.h>

GSM gsmAccess;
GSM_SMS sms;

const int VOLTAGE  = 12;    
int buttonState      = 0;
int lastButtonState  = 0;     

void setup() {
  
  Serial.begin(9600);
  pinMode(VOLTAGE, INPUT);  

 boolean notConnected = true;
   while (notConnected)
  {
    if (gsmAccess.begin() == GSM_READY)
      notConnected = false;
   }
}

void loop() {
  
  buttonState = digitalRead(VOLTAGE);
  
  if (buttonState != lastButtonState) {

    if (buttonState == 1) {
 
      Serial.println("YOUR VOLTAGE IS OK");
          char remoteNum[20]="694........";
          char txtMsg[200]="YOUR VOLTAGE IS OK ";
          sms.beginSMS(remoteNum);
          sms.print(txtMsg);
          sms.endSMS();
    }
      else  {   
       
      Serial.println("LOSS OF VOLTAGE");
          char remoteNum[20]="694........";
          char txtMsg[200]="LOSS OF VOLTAGE ";
          sms.beginSMS(remoteNum);
          sms.print(txtMsg);
          sms.endSMS();
      }      
    
    
    lastButtonState = buttonState;
  }
  
  
  delay(1000);
}