11.11. [DKSF 488.] Как отправлять произвольные SMS?
Отправка SMS-сообщений посредством протокола SNMP
Максимальная длина произвольных SMS-сообщений не может превышать 70 символов для латиницы и 70 символов для кириллицы (кодировка UTF-8).
Для отправки SMS при помощи протокола SNMP нужно воспользоваться переменной «npGsmSendSms», в которую записывается телефонный номер адресата и текст SMS-сообщения. Для этого см. MIB-файл, который можно скачать на странице описания устройства, раздел «Документация и файлы».
OID | Имя | Тип | Доступ |
.1.3.6.1.4.1.25728.3800.1.9.0 | npGsmSendSMS | DisplayString | READ/WRITE |
Формат произвольного SMS-сообщения:
[phone_number1,phone_number2,phone_number3,phone_number4] Message
где:
phone_number – номер адресата в квадратных скобках, указывается в формате: Код_страныКод_оператораНомер_абонента (Можно отправить SMS до четырёх адресатов, указав их в квадратных скобках через запятую, без пробелов. Если не указывать адресатов вообще, SMS уйдёт на номера, заданные в настройках на странице «SMS» web-интерфейса устройства);
Message – текст сообщения (пишется через пробел от номера адресата)
Пример последовательности команд для отправки произвольных SMS через SNMP при помощи пакета NET-SNMP
1. Для отправки произвольной SMS можно воспользоваться специальным пакетом NET-SNMP. Для этого нужно загрузить дистрибутив пакета NET-SNMP из раздела Download сайта: http://net-snmp.sourceforge.net/download.html
2. После установки пакета NET-SNMP запустить утилиту snmpset.exe в командной строке. Для запуска командной строки воспользоваться сочетанием клавиш «Windows+L». После открытия окна «Выполнить» ввести команду «cmd» и нажать клавишу «Enter». Далее в командной строке перейти в директорию установки утилиты snmpset.exe:
3. Запустить утилиту snmpset.exe со следующими параметрами командной строки:
snmpset.exe -v 1 -c COMMUNITY IP OID TYPE VALUE
где:
COMMUNITY – специальное кодовое слово, устанавливаемое на странице «НАСТРОЙКИ» web-интерфейса устройства. В устройствах NetPing по умолчанию community=SWITCH;
IP – IP адрес устройства NetPing, через которое будет отправлено произвольное SMS-сообщение;
OID – SNMP идентификатор переменной «npGsmSendSms», который используется для отправки произвольного SMS-сообщения;
TYPE – тип записываемого значения SNMP идентификатора переменной. Условное обозначение типов приведено на рисунке:
VALUE – записываемое значение, то есть номер/номера абонентов и текст SMS-сообщения
Исходя из вышеизложенного описания команда для отправки произвольной SMS при помощи утилиты snmpset.exe:
C:\Program Files (x86)\net-snmp\usr\bin>snmpset.exe -v 1 -c SWITCH 192.168.0.100 .1.3.6.1.4.1.25728.3800.1.9.0 s "[+79130000000] Hello! Test SMS!"
4. После успешного выполнения команды должен придти следующий ответ:
SNMPv2-SMI::enterprises.25728.3800.1.9.0 = STRING: "[+79130000000] Hello! Test SMS!"
Отправка SMS-сообщений через сторонние web-приложения (HTTP API)
Максимальная длина произвольных SMS-сообщений не может превышать 70 символов для латиницы и 70 символов для кириллицы (кодировка UTF-8).
Пример отправки произвольных SMS при помощи JavaScript кода
Для отправки SMS через сторонние web-приложения можно воспользоваться следующим JavaScript кодом:
var r = new XMLHttpRequest();
r.open('POST', 'http://192.168.0.100/sendsms.cgi?utf8', true, 'visor', 'ping'); // visor:ping – имя пользователя и пароль
r.withCredentials = true;
r.send('[+79130000001,+79130000002,+79130000003,+79130000004] Houston, we have a problem!');
где:
192.168.0.100 – IP адрес устройства NetPing по умолчанию.
visor – имя пользователя по умолчанию для подключения к web-интерфейсу устройства NetPing.
ping – пароль по умолчанию для подключения к web-интерфейсу устройства NetPing.
Можно отправить SMS до четырёх адресатов, указав их в квадратных скобках через запятую, без пробелов. Если не указывать адресатов вообще, SMS уйдёт на номера, заданные в настройках на странице «SMS» web-интерфейса устройства.
Если формат данных правильный, в качестве результата возвращается JavaScript код:
sendsms_result('ok');
Результат посылки сообщения не влияет на возвращаемый CGI (Common Gateway Interface) ответ. CGI только инициирует посылку сообщения.
Пример отправки произвольных SMS при помощи скрипта PowerShell
Для отправки SMS через сторонние web-приложения можно воспользоваться следующим скриптом PowerShell:
$url = "http://192.168.137.100/sendsms.cgi?utf8"
$username = "visor"
$password = "ping"
$reqBody = "[+79130000001,+79130000002,+79130000003,+79130000004] Тестовое сообщение"
$req = [System.Net.WebRequest]::Create($url)
$req.Method = "POST";
$req.Credentials = new-object System.Net.NetworkCredential($username, $password)
$Body = [System.Text.Encoding]::UTF8.GetBytes($reqBody);
$stream = $req.GetRequestStream();
$stream.Write($Body, 0, $Body.Length);
$stream.Flush();
$stream.Close();
$resp = $req.GetResponse().GetResponseStream()
$resp.Close()
где:
$url – переменная, в которую задается URL-адрес устройства NetPing со скриптом для отправки произвольных SMS-сообщений;
$username – переменная, в которую задается имя пользователя для авторизации на устройстве NetPing;
$password – переменная, в которую задается пароль для авторизации на устройстве NetPing;
$reqBody – переменная, в которую задается номер адресата в квадратных скобках, указывается в формате: Код_страныКод_оператораНомер_абонента и текст SMS-сообщения (пишется через пробел от номера адресата) (Можно отправить SMS до четырёх адресатов, указав их в квадратных скобках через запятую, без пробелов. Если не указывать адресатов вообще, SMS уйдёт на номера, заданные в настройках на странице «SMS» web-интерфейса устройства)