SMS

Отправка сообщений через СМС сервис провайдеров с помощью Rest API

Описание

Средство связи SMS предназначено для формирования и отправки СМС сообщений через провайдеров, поддерживающих отправку сообщений по протоколам HTTP\HTTPS. Поддерживается работа через HTTP прокси сервер, сжатие трафика, Basic авторизация. Компонента позволяет формировать HTTP GET или POST запросы с параметрами, необходимыми для работы с различными СМС сервис провайдерами.

Описание параметров файла конфигурации config.json

  • description: Описание средства связи, например "Sending email via SMTP"
  • address: Описание адреса средства связи, например "E-mail address" или ""Phone number"
  • re: регулярное выражение с помощью которого можно проверить корректность адреса для средства связи
  • <configID>: идентификатор конфигурации средства связи. Для одного средства связи можно сделать несколько конфигураций и в дальнейшем выбирать требуемую конфигурацию при отправке сообщения. Например, в разных конфигурациях одного и того же средства связи могут быть различные провайдеры для отправки СМС.
    • transport: объект с параметрами для средства связи. Если значение transport не объект, а строка, то она будет интерпретирована как ссылка на идентификатор конфигурации, из которого необходимо взять параметры средства связи.
    • message: объект, который служит в качестве шаблона сообщения для средства связи. Параметр message может отсутствовать.

Описание transport

  • protocol: - http или https. Если не указан, то используется http
  • method: - GET или POST. Если не указан, то используется GET
  • host: - имя хоста с помощью которого будут отправляться СМС сообщения
  • port: <0-65536> - TCP порт сервиса для отправки сообщений СМС. Если не указано, то для протокола http будет выбран порт 80, а для http будет выбран порт 443
  • path: - путь в URL до сервиса СМС провайдера. Например в URL https://go.sms.com/services/send_sms/?user=smsUser&pass=smsPass путь будет "/services/send_sms/"
  • user: - пользователь для авторизации на сервере СМС сервис провайдера Поддерживается Basic авторизация. Если не указан, авторизация не осуществляется
  • pass: - пароль для авторизации на сервере СМС сервис провайдера
  • family: <4|6> - используется IPv4 или IPv6. Если не указано, используется доступный
  • localAddress: - если указан, то подключение будет осуществляться с указанного IP адреса
  • timeout: - таймаут для сокета в миллисекундах. Инициализируется до установки соединения
  • proxyHost: - имя хоста HTTP прокси. Если не указан, то прокси не используется
  • proxyPort: <0-65536> - TCP порт HTTP прокси
  • proxyUser: - пользователь для авторизации на HTTP прокси сервере. Поддерживается Basic авторизация. Если не указан, авторизация не осуществляется
  • proxyPass: - пароль для авторизации на HTTP прокси сервере
  • phonesDiv: - если СМС сервис провайдер поддерживает одновременную отправку СМС на несколько телефонных номеров, объединенных в строку, с помощью этого параметра можно указать для них разделитель. Если не указан, то используется запятая ','
  • phonePrefix: префикс, который будет устанавливаться перед каждым телефонным номером. Например это может быть префикс выхода на линию '98' или внутренний префикс для междугородних номеров '8' и т.д.
  • phoneLen: - длина телефонного номера. Если в телефонном номере символов больше, чем указано в phoneLen, то лишние символы слева будут удалены. Пробелы и тире не считаются символами и будут удалены в любом случае. Если указан параметр phonePrefix, он будет добавлен в начало номера после удаления лишних символов. Таким образом, например если phonePrefix = 8, phoneLen = 10, то номер телефона "+7 913 988 01-23" будет преобразован в "89139880123".
  • response: - регулярное выражение для проверки значения, возвращаемого СМС сервис провайдером. Если в response есть переменная %:PHONE:%, она будет заменена на номер телефона, на который было отправлена СМС сообщение. В этом случае проверка возвращаемого значение будет осуществляться для каждого номера телефона, на который было отправлено СМС сообщение.

Описание message

Объект message состоит из параметров и значений, которые будут превращены в GET запрос для отправки СМС сервис провайдеру. В значениях можно использовать следующие переменные:

  • %:TEXT:% - заменяется на текст сообщения
  • %:SENDER_PHONE:% - заменяется на номер телефона отправителя
  • %:PHONES:% - заменяется на номера телефонов получателей, соединенных между собой разделителем, указанным в transport.phonesDiv. По умолчанию это запятая ','
  • %:PHONE:% - заменяется на один номер телефона получателя. Если получателей несколько и в message указана переменная %:PHONE:%, то для каждого получателя будет сформирован свой запрос СМС сервис провайдеру.

Пример конфигурации SMS

Данная конфигурация сформирует следующий запрос СМС сервис провайдеру:

https://go.sms.com:443/services/send_sms/?user=userName&pass=password&action=post_sms&sender=<sender phone>&message=<message>&target=<phone1,phone2,phone3>

Отправка сообщения будет осуществлена через HTTP прокси сервер proxy.my-domain.com, порт 3128 с использованием Basic авторизации с пользователем proxyUserName и паролем proxyUserPassword

{
    "description": "Sending SMS via SMS provider",
    "address": "SMS phone number",
    "re": "^+\\d{11}$",
    "default": {
        "transport": {
            "protocol": "https",
            "method": "GET",
            "host": "go.sms.com",
            "port": 443,
            "path": "/services/send_sms",
            "family": 4,
            "localAddress": "192.168.0.1,
            "timeout": 30000,
            "proxyHost": "proxy.my-domain.com",
            "proxyPort": 3128,
            "proxyUser": "proxyUserName",
            "proxyPass": "proxyUserPassword",
            "phonesDiv": ",",
            "phonePrefix": 8,
            "phoneLen": 10,
            "response": "phone=\"%:PHONE:%\" sms_res_count=\"1\""
        },
        "message": {
            "user": "userName",
            "pass": "password",
            "action": "post_sms",
            "sender": "%:SENDER_PHONE:%",
            "message": "%:TEXT:%",
            "target":  "%:PHONES:%"
        }
    }
}