SMS Gateway communication protocol

Communication line configuration
Communication station configuration
I/O tag configuration
Document revisions


SMS Gateway protocol supports:

  • sending SMS
  • receiving SMS
  • dialing calls
  • receiving calls

The implementation is based on the sending and processing of AT commands that are exchanged through the asynchronous serial line.

Communication line configuration

Communication line category: Modem

Communication line parameters:

ParameterDefault valueMeaning
Name of communication port.
Init commandAT&F

AT command that reinitializes a device.
In the case of some GSM modems (e.g. HUAWEI E3372), this command needs to be enhanced to  AT&F^CURC=0 so that the modem stops reporting signal levels (RSSI- Radio Signal Strength Indication) by sending spontaneous messages e.g.  <CR><LF>^RSSI:28<CR><LF>.

Dial commandATDAT command used when dialing a telephone number.
Hangup+++~~~~ATHAT command to hang up the connection.
DTRCheckedDTR signal is used to hang up connection instead of AT command.

Communication station configuration

ParameterDefault valueMeaning
Trace Data
YESBoth received and sent data are written to the log file.
PIN Code
0000PIN code of SIM card (GSM modem).
Use Semicolon
YESA semicolon is inserted at the end of the ATD command.
Hang Up Incoming Call
YESEnable to hang up the incoming call in a defined time.
Hang Up Time
35 secDefines the duration of an incoming call.
Delay Between Rings
3 secSome of the modems do not inform about change of status: "ringing -> received", "ringing -> hung up". In "ringing" status, the flags that indicate ringing are sent. If during the interval configured by this parameter, the ringing is not indicated, the status automat of the protocol will change its status to "hang up". Zero disables to use this indication.
Outgoing Call Duration
3 secThe time after which the outgoing call is terminated.
Modem Is Ready Interval
600 secAfter elapsing of this time, the modem is reinitiated.
Acknowledgment of Receipt
YESWhether the receipts acknowledgments are enabled when sending SMS messages.
Service Center Address
+421905303303Phone number of the service center for SMS messages.
Slovakia O2: +421 949 909 909
Slovakia Orange: +421 905 303 303
Slovakia Telecom (T-Mobile): +421 903 333 000
Read From Modem SMS
60 secInterval of checking the received messages and receipts in the modem.
Expect OK After Dial
YESIndicates whether a device sends the answer "OK" after dialing the phone number.

Reinit On Every Operation


Modem reinitialization before every SMS sending and before every dialing. If this parameter has the value NO, then the modem is initialized at the beginning of work and regularly according to the value of the Modem Is Ready Interval parameter.

Query Signal Quality


Querying signal quality before every SMS sending and before every dialing. The detected signal quality is not shown anywhere and can only be found in the communication line logs.

I/O tag configuration

I/O tags: Ci, Co, Di , Do, TxtI, TxtO

Value typeAddressMeaning
Outgoing calls
TxtOOUTGOINGTELNUMit sets the phone number of the outgoing call.
TxtIOUTGOINGRESULTNUMBERThe protocol can send multiple requests to dial a phone number at the same time. These requests are saved to the list and they are dialed gradually. In the I/O tag, the value of the last dialed number is saved. Together with the I/O tag with the OUTGOINGRESULTFLAG address, it informs about the result of the call.
CoOUTGOINGRINGTIMEIt sets the duration of the outgoing call including the dialing. It can be used as a trigger to start dialing. If the phone number cannot be dialed at that time (the value of the I/O tag with the BUSY address is TRUE), the values of the required I/O tags are stored in a queue and postponed for later processing.
DiOUTGOINGRESULTFLAGIt informs about the result of the call. If the outgoing call has been received, the value is TRUE, otherwise FALSE.

An I/O tag that informs whether a modem error occurred when the call was made.
If the call was successful or was not successful for another reason (e.g. exceeded ringing time or call duration), the value of the I/O tag will be False.

Incoming calls
TxtIINCOMMINGTELNUMContains the phone number of an incoming call.
DiINCOMMINGRINGINGIt indicates that the incoming call is active. At a given moment the value INCOMMINGTELNUM is not valid yet.
Outgoing SMS messages
TxtOOUTGOINGSMSNUMBERSets the phone number to which an SMS message will be sent.
TxtOOUTGOINGSMSIDIt keeps the value of the user-defined unique identifier of the message. This value helps to find out whether the message was sent. It also couples the message receipts with the sent message.
TxtOOUTGOINGSMSBODYSets the text of an SMS message. It is a trigger of sending the message, which means that its value must be set as the last. After starting the trigger, the values of all necessary I/O tags are saved into the queue. The SMS message is ready to be sent.
DiOUTGOINGSMSRESULTTogether with the identifier, which is set in I/O tag with address OUTGOINGSMSRESULTID, it informs about the status of sending the SMS message.
TxtIOUTGOINGSMSRESULTIDIf there are multiple SMS messages in the queue, it is necessary to inform about the status of each SMS message, together with the identifier, which is set in the I/O tag with OUTGOINGSMSID address.
Incoming SMS messages
TxtiINCOMMINGSMSNUMBERIt contains the phone number of the received SMS message.
TxtiINCOMMINGSMSBODYIt contains the text of the received SMS message.
CiINCOMMINGSMSTRIGGERINIf the new SMS message has been received, the value is incremented by 1. It may be used as the trigger of receiving the new SMS message.
CoINCOMMINGSMSTRIGGEROUTIt confirms the reading of the SMS message. The value from the I/O tag with INCOMMINGSMSTRIGGERIN address must be written to this I/O tag.
SMS receipts
TxtIINCOMMINGRECEIPTIDIt keeps the unique identifier of an SMS message, which was chosen during its sending.
CiINCOMMINGRECEIPTTRIGGERINIf a new SMS receipt has been received, the value is incremented by 1. The value of the I/O tag with INCOMMINGRECEIPTID address is valid at the particular moment.
CoINCOMMINGRECEIPTTRIGGEROUTIt confirms the reading of SMS receipt. The value from the I/O tag with INCOMMINGRECEIPTTRIGGERIN address must be written to this I/O tag.
DiBUSYThe I/O tag informing about modem status.

Document revisions

  • Ver. 1.0 – January 23, 2012 – Creation of document.

An example of communication

The attached ZIP contains the configuration of the line, station and I/O tags for communication with the SMS Gateway protocol.

Write a comment...