Manual:Tools/Sms
Applies to RouterOS: v5 +
Summary
Sub-menu: /tool sms
Package: advanced-tools
Standards:
It is possible to connect GSM modem to RouterOS device and use it to send and receive SMS messages. RouterOS lists such modem as serial port that appears in '/port print' listing. GSM standard defines AT commands for sending SMS messages, and defines how messages should be encoded in these commands.
'advanced-tools' package provides command '/tool sms send'
that uses standard GSM AT commands to send SMS.
Sending
Command: /tool sms send
Example
Sending command for ppp interface:
/tool sms send usb3 "20000000" \ message="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#\$%^&*(){}[]\"'~"
For lte interface use lte interface name in port field:
/tool sms send lte1 "20000000" \ message="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#\$%^&*(){}[]\"'~"
Send command takes following parameters:
Parameter | Description |
---|---|
port (string) | Name of port from /port list that GSM modem is attached to. |
phone-number (string) | Recepient phone number. Allowed characters are "0123456789*#abc". If first character is "+" then phone number type is set to international, otherwise it is set to unknown. |
channel (integer) | Which modem channel to use for sending. |
message (string) | Message contents. It is encoded using GSM 7 encoding (UCS2 currently is not supported), so message length is limited to 160 characters (characters ^{}\[]~ |
smsc (string) | |
type (string) | If set to class-0, then send class 0 SMS message. It is displayed immedeately and not stored in phone. |
Note: Since V3.23 there is one port per modem, and modem has channels used for commands and data. Channels have numbers 0,1,2, etc. Some modems may have just two channels, some have more. The SMS tool has channel support since v3.28
Receiving
Since v3.24 RouterOS also supports receiving of SMS messages, and can exectue scripts, and even respond to the sender.
Before router can receive SMS, relevant configuration is required in general /tool sms menu. Following parameters are configurable:
Parameter | Description |
---|---|
allowed-number (string; Default: "") | Sender number that will be allowed to run commands, must specify country code ie. +371XXXXXXX |
channel (integer; Default: 0) | Which modem channel to use for receiving. |
keep-max-sms (integer; Default: 0) | Maximum number of messages that will be saved. If you set this bigger than SIM supports, new messages will not be received!' |
port (string; Default: (unknown)) | Modem port (modem can be used only by one process "/port> print" ) |
receive-enabled (yes | no; Default: no) | Must be turned on to receive messages |
secret (string; Default: "") | the secret password, mandatory |
Inbox
Sub-menu: /tool sms inbox
If you have enabled the reader, you will see incoming messages in this submenu.
Read-only properties:
Property | Description |
---|---|
phone (string) | Senders phone number. |
message (string) | Message body |
timestamp (time) | Time when message was received. It is the time sent by operator, not the router's local time. |
type (string) | Message type |
Syntax
:cmd SECRET script NAME [[ VAR[=VAL] ] ... ]
- SECRET - the password
- NAME - name of the script that's available in "/system script"
- VAR - variables that will be passed to the script (can be passed as VAR or as VAR=value), separated by spaces.
Other things to remember:
- *Parameters can be put into quotes "VAR"="VAL" if necessary.
- *Escaping of values is not supported (VAR="\"").
- *Combined SMS are not supported, every SMS will be treated separately
- * 16Bit unicode messages are not supported
- * SMS are decoded with the standard GSM7 alphabet, so you can't send in other encodings, otherwise it will be decoded incorrectly
Examples
Wrong:
:cmd script mans_skripts :cmd slepens script mans skripts :cmd slepens script mans_skripts var= :cmd slepens script mans_skripts var= a :cmd slepens script mans_skripts var=a a
Right:
:cmd slepens script mans_skripts :cmd slepens script "mans skripts" :cmd slepens script mans_skripts var :cmd slepens script mans_skripts var=a :cmd slepens script mans_skripts var="a a"
Debugging
/tool sms send command is logging data that is written and read. It is logged with tags gsm,debug,write and gsm,debug,read For more information see system logging.
Implementation details
AT+CMGS and AT+CMGF commands are used. Port is acquired for the duration of the command and cannot be used concurently by another RouterOS component. Message sending process can take a long time, it times out after a minute and after two seconds during initial AT command exchange.
See also
- http://www.3gpp.org/ftp/Specs/html-info/27-series.htm
- http://www.3gpp.org/ftp/Specs/html-info/23-series.htm
[ Top | Back to Content ]