11.11. [DKSF 70/71.7 IU] Как отправлять произвольные SMS?

Информация в разделе относится к устройствам UniPing server solution v4/SMS и UniPing server solution v3/SMS со встроенным GSM-модемом.

В прошивке устройства UniPing server solution v3/SMS в версии DKSF 70.7.X реализована возможность отправки произвольных SMS-сообщений посредством SNMP-протокола и сторонних web-приложений (HTTP API).

Отправка SMS-сообщений посредством протокола SNMP

Для отправки произвольных SMS на кириллице посредством SNMP-протокола необходимо использовать кодировку UTF-8 (Converting files to UTF-8) или Windows-1251 в тексте SMS-сообщения.

Для отправки SMS при помощи протокола SNMP нужно воспользоваться переменной «npGsmSendSmsUtf8» или «npGsmSendSmsWin1251», в которую записывается телефонный номер адресата и текст SMS-сообщения. Для этого см. MIB-файл, который можно скачать на странице описания устройства в разделе «Документация и файлы».

OID

Имя

Тип

Доступ

Description
.1.3.6.1.4.1.25728.3800.1.9.0

npGsmSendSmsUtf8 

DisplayStringREAD/WRITEОтправка произвольного SMS-сообщения в кодировке UTF-8.
.1.3.6.1.4.1.25728.3800.1.10.0

npGsmSendSmsWin1251 

DisplayStringREAD/WRITEОтправка произвольного SMS-сообщения в кодировке Windows-1251.

Формат произвольного 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.

2. После установки пакета NET-SNMP запустить утилиту snmpset.exe в командной строке. Для запуска командной строки воспользоваться сочетанием клавиш «Windows+L». После открытия окна «Выполнить» ввести команду «cmd» и нажать клавишу «Enter». Далее в командной строке перейти в директорию установки утилиты snmpset.exe:

В командной строке перейти в директорию установки утилиты 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-идентификатор переменной «npGsmSendSmsUtf8» или «npGsmSendSmsWin1251», который используется для отправки произвольного SMS-сообщения;

TYPE — тип записываемого значения SNMP-идентификатора переменной. Условное обозначение типов приведено на рисунке:

Тип записываемого значения 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-сообщений не может превышать 255 символов.

Пример отправки произвольной 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] Хьюстон, у нас проблема!');

где:

192.168.0.100 — IP-адрес устройства по умолчанию.

visor — имя пользователя по умолчанию для подключения к web-интерфейсу устройства.

ping — пароль по умолчанию для подключения к web-интерфейсу устройства.

Можно отправить SMS нескольким адресатам, указав их в квадратных скобках через запятую, без пробелов. Если не выбирать адресатов, SMS уйдет на номера, указанные в настройках на странице «SMS» web-интерфейса устройства.

Если формат данных правильный, в качестве результата возвращается JavaScript-код:

sendsms_result('ok');

Результат посылки сообщения не влияет на возвращаемый CGI (Common Gateway Interface) ответ. CGI только инициирует посылку сообщения.

Пример отправки произвольной SMS при помощи скрипта PowerShell

Для отправки SMS через сторонние web-приложения можно воспользоваться следующим скриптом PowerShell:

$url = "http://192.168.0.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 — переменная, в которую задается IP адрес устройства NetPing и скрипт для отправки произвольных SMS-сообщений;

$username — переменная, в которую задается имя пользователя для авторизации на устройстве NetPing;

$password — переменная, в которую задается пароль для авторизации на устройстве NetPing;

$reqBody — переменная, в которую задается номер адресата в квадратных скобках и текст SMS-сообщения (пишется через пробел от номера адресата. Можно отправить SMS нескольким адресатам, указав их в квадратных скобках через запятую, без пробелов).