Начиная с версии 1.3.1084 WNAM поддерживает функцию отправки идентификационных СМС через шлюз любого провайдера, поддерживающий работу протокола HTTP и метод GET или POST. Так как универсального стандарта формата сообщения не существует (в отличие от протокола SMPP), выбор параметров запроса отправки зависит от регламента работы СМС-провайдера. Такой способ настройки WNAM позволяет обеспечить взаимодействие с практически любым провайдером без просьбы модификации нашего исходного кода.

Для настройки этого способа первым шагом необходимо обратиться к используемому СМС-провайдеру за документом, описывающим параметры взаимодействия - формат GET или POST запроса, а также за учетной записью (ваши собственные логин и пароль, возможно - заголовок (отправитель) СМС-сообщения).

В настройках метода авторизации (пункт меню "Конфигурация", далее "Гостевая конфигурация" → "Методы авторизации" → "Создать", или в настройках для индивидуальной площадки) необходимо выбрать метод "Отправка СМС абоненту", а в качестве провайдера "Произвольный шлюз по протоколу HTTP GET" (или POST, если требуется).

Параметры учетной записи ("Логин" и "Пароль") заполнять обычно не следует. Логин и пароль для шлюза провайдера следует заполнить позже в поле "Текст", то есть в тексте запроса. Исключением может являться провайдер, который в GET или POST запросе требует предварительной авторизации в режиме HTTP Basic Auth: в этом случае указанные логин и пароль передаются в авторизационной части HTTP-заголовка.

Параметр "Заголовок СМС" не используется.

Параметр "Текст" содержит полную ссылку-запрос до HTTP-шлюза провайдера, со всеми необходимыми параметрами. Запрос должен начинаться со слова "http". Поддерживается протокол HTTP и HTTPS, а также произвольный выбор TCP-порта.

Например, для провайдера SMSC.RU полный формат запроса будет выглядеть так:

https://smsc.ru/sys/send.php?login=MyUserName&psw=MySecretPassword&phones=%PHONE%&charset=utf-8&mes=Код доступа в Интернет: %CODE%

Для провайдера Kazinfoteh формат запроса будет выглядеть так:

http://212.124.121.186:9501/api?action=sendmessage&username=MyUserName&password=MySecretPassword&recipient=%PHONE%&messagetype=SMS:TEXT&originator=INFO_KAZ&messagedata=Код доступа в Интернет: %CODE%

Необходимо указать полный URL в соответствии с требованиями провайдера. Вместо номера телефона получателя следует использовать %PHONE%, вместо МАС-адреса устройства - %MAC%, вместо кода доступа - %CODE%.

При отправке методом POST сообщение серверу передается в обычном для этого метода режиме (пары типа ключ-значения, в отдельных строках). Если используемый сервер требует формата сообщений JSON, например, в теле POST:

{
 "sourceId":"9999",
 "customerNumber":"79012345678",
 "message":"SMS CODE 1234"
}

В набор URL запроса необходимо добавить параметр json=yes, чтобы текст выглядел так:

https://smsc.ru/sys/send.php?json=yes&login=MyUserName&psw=MySecretPassword&phones=%PHONE%&charset=utf-8&mes=Код доступа в Интернет: %CODE%

Затем нажать на кнопку "Сохранить изменения".

При отправке сообщения происходит преобразование всех полей в формат URLEncode в кодировке UTF-8.

При выборе метода отправки HTTP POST  настройка производится так же (ссылка указывается в GET-формате), но перед отправкой WNAM производит её преобразование в POST-запрос.

Проверить работоспособность шлюза можно путем отправки тестового запроса из интерфейса WNAM: http://адресвашегосервера/cp/testsend.

В логе WNAM, в файле /var/log/tomcat8/wnam.log должна появиться следующая запись:

19:19:12.706 DEBUG [com.netams.wnam.services.SmsService:192] - url=http://212.124.121.186:9501/api, data=action=sendmessage&username=MyUserName&password=MySecretPassword&recipient=79123456789&messagetype=SMS%3ATEXT&originator=INFO_KAZ&messagedata=%D0%9A%D0%BE%D0%B4+%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0%3A+%25CODE%25
19:19:13.037 DEBUG [com.netams.wnam.services.SmsService:211] - sms_http to: +79123456789 return '<?xml version="1.0" encoding="utf-8"?>'

 

 

  • No labels