---
title: SMS gateway
date: 2007-01-17T10:00
tags: [integration, php, tech]
---

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

<!-- truncate -->

### Получение

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

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

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

В качестве реальных прибалтийских провайдеров есть - [mobi](http://www.mobisolutions.com/en/) и [fortumo](http://fortumo.ee/).

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

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

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

### Отправка

[Cardboardfish](http://www.cardboardfish.com/products/business/httpsms_xmlsms_quickstart.html) - очень простой сервис. Достаточно такого кода

```php
$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](http://www.clickatell.com/) чуть похуже  

```php
$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
));
```

## Related

- [Backend-авторизация в facebook через OAuth 2.0](/ru/blog/tech/integration/backend-avtorizatsiya-v-facebook-cherez-oauth-20/)
- [OpenID](/ru/blog/tech/integration/openid/)
- [Pangalink](/ru/blog/tech/integration/pangalink/)
