API

Настрой под свои нужды
Интеграция с QUICKTEL по API: просто и быстро
Рассылка SMS по протоколам HTTP, SMTP, SMPP, SOAP, XML, JSON-протоколам. Интегрируйте возможности платформы QUICKTEL в свой проект.

Протокол SMPP

Протокол обмена определяется спецификацией SMPP версии 3.4.

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

Расшифровку ошибок можно найти в спецификации SMPP версии 3.4.

Внимание: Вам необходимо прислать список IP адресов, с которых Вы будете подключаться, перед тем как начать использовать SMPP протокол.

Параметры подключения

  • system_id — зарегистрированное в системе имя пользователя вида XXXX.X
  • password — пароль пользователя
  • Адрес — smpp.qtelecom.ru
  • Порт — 8056

Поддерживаемые команды

КомандаОписание
BIND_TRANSMITTERПодключиться как TRANSMITTER
BIND_TRANSCEIVERПодключиться как TRANSCEIVER
SUBMIT_SMОтправить сообщение
QUERY_SMЗапросить статус сообщения
DELIVER_SMОтправка Delivery Receipt сервером
ENQUIRE_LINKПроверка связи
GENERIC_NAKОшибочная команда
UNBINDОтключение

На не поддерживаемые команды сервер будет отвечать GENERIC_NAK сообщением с кодом ошибки ESME_RINVCMDID.

Правила работы с SMPP подключением

При установке подключения клиенту дается 10 секунд, что бы отправить команду BIND_TRANSMITTER или BIND_TRANSCEIVER. Иначе соединение будет разорвано сервером.

Клиент обязан отвечать на все пакеты отправленные сервером соответствующим resp пакетом в течение 1 минуты. Иначе соединение будет разорвано сервером без отсылки UNBIND.

После установки подключения и авторизации сервер будет отправлять ENQUIRE_LINK пакеты каждую минуту. На этот пакет клиент также обязан ответить в течение 1 минуты.

Одновременно возможно только одно подключение от одного имени пользователя. На все дополнительные подключения будет отправлена ошибка (0x00000005 ESME Already in Bound State). Если необходимо сделать несколько подключений для одного кабинета, для каждого необходимо создать отдельного пользователя и использовать его подключение.

Если при отправке в пакете Submit_sm установлен флаг registered_delivery, то статус сообщения будет возвращен только в подключение, установленное от имени пользователя, отправившего сообщения.

Получение статуса доставки сообщения

Есть две возможности получения статуса доставки (активный и пассивный). Пассивный вариант является предпочтительным.

Пассивный вариант предусматривает установки флага registered_delivery пакета SUBMIT_SM. После перехода сообщения в финальное состояние сервер отправит DELIVER_SM пакет с Delivery Receipt сообщением. Формат Delivery Receipt сообщения ниже.

Активный вариант предусматривает периодический опрос статуса сообщения отсылкой QUERY_SM.

Формат Delivery Receipt

"id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . ."
ПолеОписание
id IDсообщения
subКоличество отправленных сообщений
dlvrdКоличество доставленных сообщений
submit dateВремя отправки сообщения
done dateВремя перехода сообщение в финальное состояние
statСтатус сообщения (расшифровка статусов см. ниже)
errМожет содержать код ошибки в случае не доставки сообщения
textПервые 20 байт сообщения
СтатусОписание
delivrd Доставлено
expiredНе доставлено из-за истечения периода ожидания доставки
deletedУдалено
undelivНе может быть доставлено
acceptdПринято на обработку
unknownСтатус не известен (поле err может содержать код ошибки)
rejectdСообщение отвергнуто

Зарезервированные коды ошибок

КодОписание
0x0400 (1024) Кодировка не распознана
0x0401 (1025)Слишком большой текст сообщения. Максимальная длина не должна превышать 160 байт.
0x0402 (1026)Ошибка регистрации сообщения на отправку. При возникновении этой ошибки обратитесь в службу поддержки.
0x0403 (1027)Не прошла проверка текста сообщения на наличие недопустимых слов и/или фраз
0x0404 (1028)Отправитель или получатель в черном списке
0x0453 (1107)Сработало ограничение по отправке одинакового текста на один и тот же номер в течение небольшого промежутка времени. Обратитесь в поддержку, если хотите отключить или уменьшить период.
0x043C (1084)Нет доступного тарифа для запрашиваемого направления.
0x043F (1087)Нет подходящего тарифа у вышестоящего контрагента.
0x045A (1114)Политика маршрутизации не найдена.
0x0446 (1094)Ошибка транспорта. При возникновении этой ошибки обратитесь в службу поддержки.
0x433 (1075)Недостаточно средств на счете.

Установка защищенного соединения

Для обеспечения более высокого уровня безопасности передаваемых данных предусмотрена возможность устанавливать защищенное соединение по протоколу TLS или SSL. TLS-соединение позволяет передавать в зашифрованном виде не только текст сообщения, но и параметры учетной записи (логин и пароль). Дополнительно может осуществляться проверка сертификата SMPP-сервера, что предотвращает реализацию фишинговых атак, направленных на перехват учетных данных.

Аутентификация по сертификатам предусматривает наличие корневого сертификата доверенного издателя и самого сертификата SMPP-сервера.
Проверяются следующие параметры:

1. Корневой сертификат издателя действителен (не истек срок действия сертификата);
2. Сертификат SMPP-сервера выдан доверенным издателем (подписан доверенным корневым сертификатом);
3. Сертификат SMPP-сервера также действителен (не истек срок действия).

Параметры подключения остаются стандартными, необходимо только изменить порт на 8057.

Поддерживаемые протоколы: TLSv1.2, TLSv1.1, TLSv1, SSLv3

Согласование протоколов при установке соединения происходит от наиболее новой версии, к более ранним:
(больший приоритет) TLSv1.2 › TLSv1.1 › TLSv1 › SSLv3 (меньший приоритет)

SMPP-клиенты с поддержкой TLS или SSL

Если используемое приложение (SMPP-клиент) поддерживает работу по указанным протоколам, необходимо:
1) изменить стандартный порт 8056 на порт 8057;
2) добавить корневой сертификат издателя и/или сертификат SMPP-сервера в доверенные (опционально, если проверка сертификатов поддерживается SMPP-клиентом).

SMPP-клиенты без поддержки TLS или SSL

SMPP-клиенты, в которых не реализована возможность работы по SSL или TLS, также могут устанавливать защищенное соединение, используя бесплатное кроссплатформенное приложение для проксирования траффика Stunnel (www.stunnel.org).

Приложение Stunnel позволяет выполнить проверку сертификата SMPP-сервера.

Пример раздела файла конфигурации Stunnel:

[smpp]
client = yes
accept = 127.0.0.1:8057
connect = smpp.qtelecom.ru:8057
checkHost = smpp.qtelecom.ru
CAfile = ca-certs.pem
verify = 1

Расшифровка параметров файла конфигурации

accept — принимает значение, на которое будет отправляться трафик SMPP-клиентом.
connect — адрес и порт, с которыми устанавливается защищененое соединение.
checkHost — проверка DNS-имени сервера
CAfile — тектовый файл со списком доверенных сертификатов. По умолчанию данный файл находится в той же директории, что и файл конфигурации Stunnel.
verify — определяет, проводить ли проверку сертификатов SMPP-сервера:
     0 — не производить проверку сертификата SMPP-сервера;
     1 — проверить, действителен ли сертификат SMPP-сервера, только если соответствующий корневой сертификат присутствует в файле ca-certs.pem;
     2 — проверить, действителен ли сертификат SMPP-сервера, но если соответствующего корневого сертификата нет в файле ca-certs.pem, не устанавливать соединение;

Следующий текст — корневой сертификат издателя в кодировке Base64 — нужно добавить в конец файла ca-certs.pem (или другой файл, указанный в параметре CAfile конфигурации Stunnel):

-----BEGIN CERTIFICATE-----
MIID0DCCArigAwIBAgIJALRekcH3GQWnMA0GCSqGSIb3DQEBCwUAME4xEzARBgNVBAoTCklTQkMg
R3JvdXAxEDAOBgNVBAMTB0lTQkMgQ0ExJTAjBgNVBAsTHElTQkMgQ2VydGlmaWNhdGlvbiBBdXRo
b3JpdHkwHhcNMTUwMzA0MjMwNDA0WhcNMjUwMzAxMjMwNDA0WjBOMRMwEQYDVQQKEwpJU0JDIEdy
b3VwMRAwDgYDVQQDEwdJU0JDIENBMSUwIwYDVQQLExxJU0JDIENlcnRpZmljYXRpb24gQXV0aG9y
aXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1S9DrHML1bhOEY6UKyXoTh/qzgZ7
SHzHB5WQVhh/fnl2SW/RnSk+w+/feTadzwG3n6hRQ1b03D179NRoUbtA7y1NN+eiroc+VVEt6DK4
WGwrk06PzbEt+TkZpIABGO5M8soGP5t15d0wTYNjyOhsNr1QWsyFWqirncEgpXFW4QFvLTqqiULE
KTA3CyT6NdpkB4tWuNC82+mLJgp3l2fDJrZOAG2ollIMY5Vd97yQPd9HFCxIcEYIdOo4SFuNisIc
nM/TkvFPnitDba5aJciT60yIOZY7k1kR8XYVvE9Cicp9x5FsMqV8z4q91kLnQz6KgAHseThiwEuY
kR1qj+eoDwIDAQABo4GwMIGtMB0GA1UdDgQWBBQrD/aUCfRnuLdfsy/zDFet3WCXTzB+BgNVHSME
dzB1gBQrD/aUCfRnuLdfsy/zDFet3WCXT6FSpFAwTjETMBEGA1UEChMKSVNCQyBHcm91cDEQMA4G
A1UEAxMHSVNCQyBDQTElMCMGA1UECxMcSVNCQyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eYIJALRe
kcH3GQWnMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBADouneCa/BQYvEixg/llSqhU
gq1YMYzEXuD1tjLoJZkDAUZjIAqQQkJNYZjR24UiPHK/2ftcHdHtDKnoqXO0mhFtf7Qh+nrH0uQa
ZeYHnT/5mCkd4rnsdorm9C5fUKe+gTeFSMH7HcnyHreVlGOiIiIKAENLQwLmkbvMhyhs74Pt2Ty3
Cwu0CpHbomaDm4WjK+74S1wtTWxFfxazTE5BwFOhV4ICzis3Xk9VF8HMPg4ZzLqhBEtpVs2zJw2N
ESvu/ZELas16NaGqDKAuqyH/vhSucSj8RKvKxXbDxp/SW+bfEf+JIa6Y3WZPf2t5P6C11jnySNeJ
+qks2Hin0wcVo5A=
-----END CERTIFICATE----- 

Уровни проверки (параметр verify в файле конфигурации) могут отличаться в разных версиях Stunnel.

Приложение

Спецификация SMPP версии 3.4 – smpp34.pdf

При возникновении вопросов по подключению и использованию SMS-шлюза, обращайтесь в техническую поддержку
Задавайте вопросы любым удобным способом