Интегрированные решения HTTP: прием сообщений и проверка статусов
Для того, чтобы принять SMS, необходимо открыть веб-сервис, получающий запросы с SMS-шлюза с IP-адреса 212.124.121.186. Мы отправляем запросы методом GET или POST (на ваш выбор).
При получении запроса от SMS-шлюза необходимо сверить авторизационные данные и вернуть форматированный ответ.
Параметры в запросе:
Обязательные:
| Ключ | Значение |
|---|---|
| userin | логин |
| passwordin | пароль |
| sender | номер телефона абонента |
| short | короткий номер |
| msgdata | текст SMS (с префиксом) |
Дополнительные:
| Ключ | Значение |
|---|---|
| senttime | время отправки сообщения абонентом |
| receivedtime | время доставки на сервер |
| messageid | ID сообщения |
Формат телефона абонента:
Необходимо опускать впередиидущий символ «+» при формировании ответа.
Формат короткого номера:
Короткий номер, для некоторых операторов, может содержать transactionID. Например, +8785#12345.
Необходимо опускать впередиидущий символ «+» при формировании ответа.
Формат даты и времени:
YYYY-MM-DD HH:mm:ss
GMT+0600 (Asia/Almaty)
Формат ответа:
{SMS:TEXT}{}{КороткийНомерБезПлюса}{НомерАбонентаБезПлюса}{ТекстОтветногоСообщения}
Текст ответного SMS должен быть не длиннее 70 символов на латинице или 160 символов на кириллице, т.е. не более 1 SMS.
Любой запрос от SMS-шлюза должен быть обработан и вернуть форматированный ответ.
Например, {SMS:TEXT}{}{8785}{77771234567}{Текст ответного SMS}.
Пример реализации на PHP:
// Логин и пароль, полученные при регистрации:
define('LOGIN', 'demo');
define('PASSWORD', 'demo');
// Логин и пароль должны быть обязательно получены, иначе это запрос не от SMS-шлюза:
if ( ! isset($_REQUEST['userin'], $_REQUEST['passwordin'])) die;
// Логин и пароль должны соответствовать выданым, иначе это запрос не от SMS-шлюза:
if ($_REQUEST['userin'] !== LOGIN || $_REQUEST['passwordin'] !== PASSWORD) die;
// Обазятельные параметры:
if ( ! isset($_REQUEST['sender'], $_REQUEST['short'], $_REQUEST['msgdata'])) die;
define('SENDER', ltrim($_REQUEST['sender'], '+'));
define('SHORT', ltrim($_REQUEST['short'], '+'));
define('MSGDATA', $_REQUEST['msgdata']);
// @TODO выполните все необходимые действия с получеными данными (сохраните в базу данных и т.п.).
// Текст ответа обязательно должен быть в кодировке UTF-8:
define('TEXT', mb_convert_encoding('Спасибо,\\0x0A\\0x0Dваш ответ принят!', 'UTF-8'));
printf('{SMS:TEXT:FORMATTED}{}{%s}{%s}{%s}', SHORT, SENDER, TEXT);
Вы можете скачать этот пример.