Интегрированные решения 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);

Вы можете скачать этот пример.