Перейти к основному содержимому

SMS gateway

· 2 мин. чтения

SMS или short message system разрабатывалась еще в восьмидесятых, но реально пришла на смену пейджерам с появлением мобильных телефонов.

Получение

В настоящее время SMS широко используется при:

  • оплате некоей услуги с таким же принципом как и платный звонок - договор создаётся между предоставляющим услугу лицом и телефонным оператором, а клиент платит обоим
  • оповещении об выставленном счёте, о принятой оплате счёта или ином срочном и коротком оповещении
  • общении из-за границы благодаря более дешёвому тарифу
  • передаче точных данных, цифр, кодов

Я приведу пример как первые два пункта реализуются. Система состоит из трёх лиц.
Клиент, SMS-gateway, наша инфосистема. SMS-gateway - посредник между провайдером телекоммуникационных услуг и internet-систем.

В качестве реальных прибалтийских провайдеров есть - mobi и fortumo.

Стандартная операция происходит таким образом:

  • Проводится кампания типа "Отправь сообщение на короткий номер 1311 со словом keyword чтобы принять участие в розыгрыше супер-приза - канцелярского карандаша с твёрдостью B!"
  • Сообщение получает SMS-gateway и находит кто связан с ключевым словом keyword
  • Выделенный сервер SMS-gateway вызывает по http URL нашей инфосистемы, который мы заранее договорились использовать. Кроме того в URL передаются GET параметры типа phonenumber, message.
  • Наш скрипт обрабатывает эти данные и при необходимости ответа на SMS - отвечает в XML виде . Для того что-бы никто не вбил вручную данные в скрипт - ставится ограничение на IP.

Следует обратить однако внимание, что при таком Use-case речь идёт об инициативе со стороны клиента. Рассылки же со стороны нашей инфосистемы надо решать с немного иными подходами.

Отправка

Cardboardfish - очень простой сервис. Достаточно такого кода

$client = new Zend_Http_Client();
$client->setUri('http://sms1.cardboardfish.com:9001/HTTPSMS?');
$client->setParameterGet(array(
'S' => 'H',
'SA' => 'myservicename',
'UN' => 'mylogin',
'P' => 'mypassword',
'DA' => $mobile,
'M' => $txt
));

Clickatell чуть похуже

$client = new Zend_Http_Client();
$client->setUri('http://api.clickatell.com/http/sendmsg?');
$client->setParameterGet(array(
'user' => 'mylogin',
'password' => 'mypassword',
'api_id' => 'myapiid',
'to' => $mobile,
'text' => $txt
));