Call after message received and wait another sms gsm module

Hello,

I hope this is the right place to post this question.
I'm working with sim800 module to light up a led on pin 4, everything's okay when it comes to receive an sms without calling but I wanted the module to call me to be sure that the message is received, when I add the "atdxxxxxx" command the module calls mes but when i send another sms nothing happens;

here's my code, please let me know what's my mistake

#include <gprs.h>
#include <softwareserial.h>
 
#define TIMEOUT    4000
 
bool ledStatus;
GPRS gprs;
 
void setup() {
  pinMode(4, OUTPUT);
  Serial.begin(9600);
  while(!Serial);
 
  Serial.println("Starting SIM800 SMS Command Processor");
  gprs.preInit();
  delay(1000);
 
  while(0 != gprs.init()) {
      delay(1000);
      Serial.print("init error\r\n");
  } 
 
  //Set SMS mode to ASCII
  if(0 != gprs.sendCmdAndWaitForResp("AT+CMGF=1\r\n", "OK", TIMEOUT)) {
    ERROR("ERROR:CNMI");
    return;
  }
   
  //Start listening to New SMS Message Indications
  if(0 != gprs.sendCmdAndWaitForResp("AT+CNMI=1,2,0,0,0\r\n", "OK", TIMEOUT)) {
    ERROR("ERROR:CNMI");
    return;
  }
 ledStatus = 0;
  Serial.println("Init success");
}
 
//Variable to hold last line of serial output from SIM800
char currentLine[500] = "";
int currentLineIndex = 0;
 
//Boolean to be set to true if message notificaion was found and next
//line of serial output is the actual SMS message content
bool nextLineIsMessage = false;
 
void loop() {
  //Write current status to LED pin
  if (ledStatus==1) {
  digitalWrite(4, HIGH);
  } else {
  digitalWrite(4, LOW);
  }

  //If there is serial output from SIM800
  if(gprs.serialSIM800.available()){
    char lastCharRead = gprs.serialSIM800.read();
    //Read each character from serial output until \r or \n is reached (which denotes end of line)
    if(lastCharRead == '\r' || lastCharRead == '\n'){
        String lastLine = String(currentLine);
         
        //If last line read +CMT, New SMS Message Indications was received.
        //Hence, next line is the message content.
        if(lastLine.startsWith("+CMT:")){
           
          Serial.println(lastLine);
          nextLineIsMessage = true;
           
        } else if (lastLine.length() > 0) {
           
          if(nextLineIsMessage) {
            Serial.println(lastLine);
             
            //Read message content and set status according to SMS content
            if(lastLine.indexOf("004F004E") >= 0 || lastLine.indexOf("ON") >= 0){
              ledStatus = 1;
              gprs.sendCmd("ATD0550xxxxxx;\r\n");
              delay(10000);
              gprs.sendCmd("ATH\r\n");
              delay(300);
              
            } else if(lastLine.indexOf("004F0046") >= 0 || lastLine.indexOf("OFF") >= 0) {
              ledStatus = 0;
              gprs.sendCmd("ATD0550xxxxxxx;\r\n");
              delay(10000);
              gprs.sendCmd("ATH\r\n");
              delay(300);
            }
             
            nextLineIsMessage = false;
          }
           
        }
         
        //Clear char array for next line of read
        for( int i = 0; i < sizeof(currentLine);  ++i ) {
         currentLine[i] = (char)0;
        }
        currentLineIndex = 0;
    } else {
      currentLine[currentLineIndex++] = lastCharRead;
    }
  }
}