Протокол HTTP
SMStele.ru обеспечивает использование сервисов системы по протоколу HTTP.
Доступ к услугам по HTTP предоставляет пользователям системы надежный, простой и удобный способ взаимодействия между сервисами SMStele.ru и клиентскими приложениями прикладного уровня — программами, веб-сайтами, скриптами.
Поддерживается шифрование HTTPS.
Описание 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 игнорируется. - 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)