Протокол HTTP

SMStele.ru обеспечивает использование сервисов системы по протоколу HTTP.

Доступ к услугам по HTTP предоставляет пользователям системы надежный, простой и удобный способ взаимодействия между сервисами SMStele.ru и клиентскими приложениями прикладного уровня — программами, веб-сайтами, скриптами.

Поддерживается шифрование HTTPS.

Файл с описанием HTTP-API

 

Описание API

Для HTTP и HTTPS выбраны нестандартные порты — 8881 и 8882 соответственно.

По запросу отправителю может быть предоставлен доступ к сервису по стандартным портам HTTP(S).

Отправка сообщений

Для отправки сообщения необходимо вызвать методом GET или POST адрес:

http://rexsmsc.rex400.ru:8881/cgibin/sendsms?login=<login>&psw=<password>&phones=<phones>&charset=utf-8&mes=<message>

https://rexsmsc.rex400.ru:8882/cgibin/sendsms?login=<login>&psw=<password>&phones=<phones>&charset=utf-8&mes=<message>

Основные параметры

  • login — логин Клиента.
  • psw — пароль Клиента.
  • phones — телефонный номер или список телефонных номеров получателей сообщений. Номера задаются в международном формате без знака «+». Номера в списке разделяются запятой, или точкой с запятой список.
  • mes — текст отправляемого сообщения. При необходимости, при передаче сообщение будет автоматически разбито на сегменты.

Дополнительные параметры

  • id — идентификатор сообщения, назначенный Клиентом. Служит для дальнейшей идентификации сообщения Клиентом. Идентификатор не обязан быть уникальным, если не указывать, будет назначен автоматически.
  • sender — имя отправителя, отображаемое в телефоне получателя. Разрешено использование только зарегистрированных ранее имен.
  • translit — признак того, что сообщение необходимо транслитерировать.
    Возможные значения: 0 (по умолчанию) — не переводить в транслит; 1 — перевести в транслит.
  • deferred — желаемое время отложенной доставки сообщения получателю. Если не указано, сообщение будет отправлено немедленно.
    Формат: 2017-12-10 09:00:00
  • flash — признак FLASH-SMS (отображается на экране телефона сразу при получении).
    Возможные значения: 0 (по умолчанию); 1 — FLASH-SMS.
  • hlr — признак HLR-запроса для получения информации о номере из базы оператора без отправки реального SMS.
    Возможные значения: 0 (по умолчанию); 1 — будет выполнен HLR-запрос для каждого номера телефона в списке. Переданный параметр mes игнорируется.
  • viber — признак Viber-сообщения, отправляемого пользователям мессенджера Viber.
    Возможные значения: 0 (по умолчанию); 1 — сообщение на Viber.
  • viber_validity — «срок жизни» Viber-сообщения в секундах — от 0 до 86400 секунд.
  • charset — кодировка переданного сообщения.
    Возможные значения: windows-1251 (по умолчанию); utf-8; koi8-r.
  • validity — «срок жизни» SMS-сообщения.

Обязательными параметрами являются:

  • либо login, psw, phones и mes,
  • либо login, psw, phones и hlr=1.

Ответ сервера

После получения и обработки данных Сервер возвращает Клиенту подтверждение с указанием результата обработки.

В случае ошибки:

{
"error":"<error_code>",
"description":"<description>"
}

где
<error_code> — отрицательное значение;
<description> — дополнительная информация об ошибке.

Примеры:

Запрос 1 (не задан psw=):

curl -d "mes=Test message 1&id=custom-message-id-test-11" "http://rexsmsc.rex400.ru:8881/cgi-bin/sendsms?login=test:http&charset=utf-8"

Запрос 2 (слишком длинный id=):

curl -d "charset=windows-1251&mes=Test message 1&id=custommessage-id-test-11-too-long-1234567890abcdefghijklmnopqrstuvwxyz" "http://rexsmsc.rex400.ru:8881/cgibin/sendsms?login=test:http&psw=~test123&charset=utf-8"

Запрос 3 (пустой phones)

curl -d "phones=&mes=Test message 1&id=custom-message-id-test-11" "http://rexsmsc.rex400.ru:8881/cgibin/sendsms?login=test:http&psw=~test123&charset=utf-8"

Запрос 4 (не задан phones)

curl -d "mes=Test message 1&id=custom-message-id-test-11" "http://rexsmsc.rex400.ru:8881/cgibin/sendsms?login=test:http&psw=~test123&charset=utf-8"

Ответ сервера 1:

{
"error":"-22",
"description":"No password"
}

Ответ сервера 2:

{
"error":"-35",
"description":"Invalid attribute: 'id=custom-message-id-test-11-too-long-1234567890abcdefghijklmnopqrs'"
}

Ответ сервера 3:

{
"error":"-25",
"description":"Invalid attribute: 'phones='"
}

Ответ сервера 4:

{
"error":"-24",
"description":"Missing attribute: 'phones'"
}

 

В случае успеха:

{
"id":"<id>",
"cnt":"1",
"messages":[
{
"id":"<id>",
"phone":"<phone1>",
"status":"<status_code>",
"error":"<error_code>",
"cnt":"<cnt>",
"operator":"<operator>",
"region":"<regioncode>",
"mnc":"<mnc>"
},
{
"id":"<id>",
"phone":"<phone2>",
"status":"<status_code>",
"error":"<error_code>",
"cnt":"<cnt>",
"operator":"<operator>",
"region":"<regioncode>",
"mnc":"<mnc>"
},

{
}
]
}

Пример 1:

Запрос:

curl -d "phones=79160001234&mes=Test message 1&id=custom-messageid-test-21" "http://rexsmsc.rex400.ru:8881/cgibin/sendsms?login=test:http&psw=~test123&charset=utf-8"

Ответ:

{
"id":"custom-message-id-test-21",
"cnt":"1",
"messages":[
{
"id":"custom-message-id-test-21",
"phone":"79160001234",
"status":"-99",
"error":"-99",
"cnt":"1",
"operator":"mMTS",
"region":"77",
"mnc":"01"
}
]
}

Пример 2 (4 получателя, 2 из них «плохие»):

Запрос:

curl -d
"phones=79160001234,79072233645,79676771707,79260004567&mes=Test message 1&id=custom-message-id-test-22" "http://rexsmsc.rex400.ru:8881/cgibin/sendsms?login=test:http&psw=~test123&charset=utf-8"

Ответ:

{
"id":"custom-message-id-test-22",
"cnt":"2",
"messages":[
{
"id":"custom-message-id-test-22",
"phone":"79160001234",
"status":"-99",
"error":"-99",
"cnt":"1",
"operator":"mMTS",
"region":"77",
"mnc":"01"
},
{
"id":"custom-message-id-test-22",
"phone":"79072233645",
"status":"-99",
"error":"-99",
"cnt":"1",
"operator":"",
"region":"",
"mnc":""
},
{
"id":"custom-message-id-test-22",
"phone":"79676771707",
"status":"-99",
"error":"-99",
"cnt":"1",
"operator":"",
"region":"",
"mnc":""
},
{
"id":"custom-message-id-test-22",
"phone":"79260004567",
"status":"-99",
"error":"-99",
"cnt":"1",
"operator":"mMEGAFON",
"region":"77",
"mnc":"02"
}
]
}

Запрос статуса сообщения

Для отправки сообщения необходимо вызвать методом GET или POST адрес:

http://rexsmsc.rex400.ru:8881/cgibin/status?login=<login>&psw=<password>&phone=<phone>&charset=utf-8&id=<id>

https://rexsmsc.rex400.ru:8882/cgibin/status?login=<login>&psw=<password>&phone=<phone>&charset=utf-8&id=<id>

Возможные параметры запроса: login, psw, phone | id | phone+id

Ответ сервера

{
"results":[
{
"id":"<id>",
"phone":"<phone>",
"sender":"<sender>",
"status":"<status_code>",
"err":"<error_code>",
"stat":"<status_string>",
"type":"<type_of_message>",
"send_timestamp":"<send_timestamp>",
"last_timestamp":"<last_timestamp>",
"operator":"<operator>",
"region":"<regioncode>",
"mnc":"<mnc>"
},
{
...
},
...
]
}

Пример:

curl -d "id=custom-message-id-test-22" "http://rexsmsc.rex400.ru:8881/cgibin/status?login=test:http&psw=~test123"

Ответ сервера:

{
"results":[
{
"id":"custom-message-id-test-22",
"phone":"79160001234",
"sender":"REX400.RU",
"status":"-99",
"err":"-99",
"stat":"DELIVRD",
"type":"1",
"send_timestamp":"2018-06-04 18:41:09+03",
"last_timestamp":"2018-06-04 18:41:09+03",
"operator":"mMTS",
"region":"77",
"mnc":"01"
},
{
"id":"custom-message-id-test-22",
"phone":"79260004567",
"sender":"REX400.RU",
"status":"-99",
"err":"-99",
"stat":"DELIVRD",
"type":"1",
"send_timestamp":"2018-06-04 18:41:10+03",
"last_timestamp":"2018-06-04 18:41:10+03",
"operator":"mMEGAFON",
"region":"77",
"mnc":"02"
}
]
}

Коды ошибок (запрос отвергнут)

  • REXSMSC_E_NOERROR (0)
  • REXSMSC_E_SYSERR (-1)
  • REXSMSC_E_NOMEMORY (-2)
  • REXSMSC_E_NYI (-6)
  • REXSMSC_E_MISSING_LOGIN (-21)
  • REXSMSC_E_MISSING_PASSWORD (-22)
  • REXSMSC_E_INVALID_LOGIN_OR_PASS (-23)
  • REXSMSC_E_IP_NOT_ALLOWED (-24)
  • REXSMSC_E_MISSING_DESTINATION_ADDRESS (-25)
  • REXSMSC_E_INVALID_DESTINATION_ADDRESS (-26)
  • REXSMSC_E_MISSING_TEXT (-27)
  • REXSMSC_E_INVALID_VALIDITY (-28)
  • REXSMSC_E_INVALID_DEFERRED (-29)
  • REXSMSC_E_INVALID_PRIOIRITY (-30)
  • REXSMSC_E_INVALID_SENDER (-31)
  • REXSMSC_E_SENDER_NOT_ALLOWED (-32)
  • REXSMSC_E_INVALID_CHARSET (-33)
  • REXSMSC_E_MISSING_MESSAGE_ID (-34)
  • REXSMSC_E_INVALID_MESSAGE_ID (-35)
  • REXSMSC_E_TOO_LONG_TEXT (-41)
  • REXSMSC_E_TOO_MANY_SEGMENTS (-42)
  • REXSMSC_E_NOT_ENOUGH_CREDITS (-43)