Номер телефона абонента всегда должен передаваться в международном формате в виде : код_страны код_оператора номер_телефона (без ведущего знака «+») .
| Код страны | Код оператора | Номер телефона | Страна, оператор |
|---|---|---|---|
| 7 | 916 | 1112233 | Россия, МТС |
| 375 | 29 | 2134567 | Беларусь, МТС |
| 7 | 701 | 1234567 | Казахстан, Кселл |
| 380 | 67 | 1234567 | Украина, Киевстар |
| 34 | 6400 | 12345 | Испания, Jazz Telecom |
| 371 | 2231 | 1234 | Латвия, Tele2 |
Если у абонента прямой городской номер (это касается только российских абонентов), у него должен быть также и второй номер в федеральном формате. В частности, московские абоненты Билайн имеют федеральный аналог своего номера с кодом 903, московские абоненты МТС — с кодом 985, московские абоненты МегаФон — с кодом 925. Прямые номера необходимо указывать с федеральным кодом, например, для абонентов московского МТС не 74951234567, а 79851234567. Если нет информации, какому оператору принадлежит прямой московский номер, можно указывать его с кодом 495. Нам известны большинство диапазонов прямых московских номеров и, как правило, мы можем сконвертировать номер в федеральный формат. В этом случае в журнале сообщений номер будет отображаться в федеральном формате. В отчёте о доставке, переданном через любой из предоставляемых нами протоколов, номер телефона так же будет в федеральном формате.
При отправке СМС в качестве адреса
отправителя можно подставить число или
альфанумерическую (буквенно-цифровую)
последовательность. При этом максимальная
длина числового отправителя ограничена 15
цифрами, а альфанумерического - 11
символами. Это ограничение стандарта GSM. В
сетях других стандартов могут быть другие
ограничения. Например, в CDMA
альфанумерические отправители недоступны.
Помимо базовых ограничений стандарта,
операторы могут накладывать дополнительные
ограничения на длину и содержание имени
отправителя. Например: запрет буквенных
имен, требование предварительной активации
имени отправителя у оператора, запрет
использования несуществующих номеров, запрет
использования номеров из определённого
диапазона и т.п.
На российские номера телефонов запрещена
отправка сообщений с цифровым отправителем.
Принимаются только альфанумерические.
Большинство операторов создают и используют
чёрные списки имён отправителей. В них
заносятся имена, замеченные в
спам-рассылках, мошенничестве и иных
нарушениях, предусмотренных
законодательством страны. У SMS Traffic тоже
есть подобный список. Как и чёрные списки
операторов, наш список не публикуется и не
предоставляется по запросу, так как является
коммерческой тайной организации.
Если в сеть оператора поступает сообщение с
именем, не подходящим под налагаемые
ограничения, наиболее типичная реакция —
отказ в передаче (хотя все зависит от
конкретного оператора, а в некоторых случаях
- даже от настроек каждого отдельного
СМС-центра в пределах одного оператора). У
зарубежных операторов встречается практика
передачи ложно-положительных статусов
доставки.
Формально, в адресе отправителя можно
использовать любой символ из основной
таблицы кодировки «default GSM alphabet»
(см. GSM 03.38). При этом, если в тексте
встречаются символы из расширенной таблицы,
они будут заменены на нашей стороне на
похожие по начертанию символы из основной
таблицы.
Некоторые СМС-центры и мобильные телефоны
поддерживают не весь диапазон символов GSM
кодировки в имени отправителя. Поэтому мы
рекомендуем пользоваться символами из
набора: "A-Z", "a-z", "0-9", "-", "_", ".".
Для обеспечения отказоустойчивости и надежности сервисов, мы предоставляем два физически распределённых узла. В случае проблем с соединением с основным узлом, рекомендуется направлять сообщения на дублирующий.
| Протокол | Основной | Дублирующий |
|---|---|---|
| HTTP API | https://api.smstraffic.ru | https://api2.smstraffic.ru |
| SMPP | server1.smstraffic.ru:4442 | server2.smstraffic.ru:4442 |
| SMPP (TLS) | server1.smstraffic.ru:4441 | server2.smstraffic.ru:4441 |
Для SOAP протокола адрес дублирующего
сервера прописан в WSDL.
Для SMTP протоколов все запасные сервера
прописаны в MX записях соответствующих
протоколам доменов. Согласно спецификации
SMTP, распределение трафика между MX
серверами происходит автоматически и, как
правило, производить дополнительные
настройки для обеспечения отказоустойчивости
не нужно.
В версии HTTP API v2 используется современный
формат обмена данными JSON и авторизация по
ключу API Key, который передаётся в
HTTP-заголовке
Authorization: Bearer <API_KEY>.
Тело запроса (при наличии) и ответы сервера
передаются в формате JSON с кодировкой UTF-8.
При отправке запросов методом POST обязательно
указание заголовка
Content-Type: application/json. Имена
параметров в теле запроса чувствительны к
регистру.
Токен состоит из двух частей, разделённых
прямым слешем (символ «/»). Первая часть —
несекретная, её можно сообщить службе
технической поддержки в случае вопросов по
работе протокола; вторая часть — секретная, её
необходимо хранить в тайне. Пример токена —
1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR.
Несекретная часть — 1837, секретная — ptf…waR.
Каждый токен имеет ограниченную область
действия. Если у токена отсутствует разрешение
на выполнение действия, сервер вернёт ответ с
HTTP-кодом 403. Также у токена есть ограничение
по количеству запросов в единицу времени: при
его превышении сервер возвращает HTTP-код 429,
в ответе может присутствовать заголовок
Retry-After с рекомендуемым временем
для совершения повторного запроса.
В таблицах с описанием параметров обязательные
параметры помечены символом *. Колонка
«Тип» содержит тип данных: string —
строка; string (RFC 3339) — строка в
формате RFC 3339 (раздел 5.6), например
2025-01-01T23:59:59+03:00; number —
число; boolean — логическое значение
(true/false); object — вложенный
JSON-объект; array[x] — массив
элементов типа x; enum — перечисление
разрешённых значений. Вложенность параметров
может описываться через точечную нотацию:
запись name.nested.subnested
эквивалентна структуре
{ "name": { "nested": { "subnested": … } } }.
В настоящее время получить API Key и
отредактировать список разрешений для
конкретного ключа можно по запросу через
техническую поддержку.
POST api.smstraffic.ru/v2/send
Описание параметров запроса
| Поле | Тип | Описание |
|---|---|---|
| channels.sms | object | Настройка отправки по СМС каналу. См. таблицу параметров объекта SendRequest.Channels.Sms. |
| destinations * | array[object] | Список абонентов и их индивидуальные параметры. См. таблицу параметров объекта SendRequest.Destinations. |
| originator | string | Имя отправителя. Если не задано, берётся значение по умолчанию, установленное в личном кабинете. |
| trackingData | string | Глобальная пользовательская метка trackingData для всех сообщений без индивидуального параметра trackingData. Не более 40 символов. |
| scheduling | object | Планирование отправки сообщений. См. таблицу параметров объекта SendRequest.Scheduling. |
| batchName | string | Идентификатор рассылки. |
| restrictiveId | string | Уникальный идентификатор, предотвращающий повторную отправку в течение часа. Не более 36 символов. |
Параметры объекта SendRequest.Channels.Sms
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| message | string | - | Текст сообщения, общий для всех получателей, если у них не указан индивидуальный текст. |
| transliterate | boolean | false | Транслитерировать текст сообщения. |
| maxParts | number | 255 | Максимальное количество частей сообщения для абонента. |
Параметры объекта SendRequest.Destinations
| Поле | Тип | Описание |
|---|---|---|
| to | number | Номер телефона абонента. |
| params | object | Параметры подстановки в тексте сообщения. |
| trackingData | string | Пользовательская метка для отслеживания. Не более 40 символов. |
| content.sms.message | string | Индивидуальный текст СМС сообщения. |
Параметры объекта SendRequest.Scheduling
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| startDateTime | string (RFC 3339) | - | Дата-время отправки сообщений. |
| localtime | boolean | true | Учитывать локальное время абонента. |
POST /v2/send HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR
{
"channels": {
"sms": {
"message": "Hello, [[name]]!",
"timeout": 86400,
"transliterate": false,
"maxParts": 255
}
},
"destinations": [
{
"to": 78000000001,
"params": { "name": "John" },
"trackingData": "2de9efa4-3ee7-4691-bec0-81d93c5a54cf"
},
{
"to": 78000000002,
"content": {
"sms": { "message": "Individual message for 78000000002" }
}
}
],
"originator": "Originator",
"trackingData": "common-tracking-0001",
"scheduling": {
"startDateTime": "2025-01-01T10:30:00+03:00",
"localtime": false
},
"batchName": "Batch via API 0001",
"restrictiveId": "ba52-5ad86d408887"
}
Описание параметров ответа
| Поле | Тип | Описание |
|---|---|---|
| success * | boolean | Признак успешности всего запроса. |
| error | object | Ошибка, из-за которой весь запрос не был принят к обработке. Присутствует при success = false. См. таблицу параметров объекта Error. |
| destinations * | array[object] | Список абонентов и статусы отправки по каждому. См. таблицу параметров объекта SendResponse.Destinations. |
Параметры объекта SendResponse.Destinations
| Поле | Тип | Описание |
|---|---|---|
| phone * | number | Номер телефона абонента. |
| id * | string | Идентификатор отправленного сообщения. |
| trackingData | string | Пользовательская метка, переданная из запроса. |
| error | object | Ошибка, из-за которой сообщение конкретному абоненту не было принято к обработке или отправке. См. таблицу параметров объекта Error. |
Параметры объекта Error
| Поле | Тип | Описание |
|---|---|---|
| code * | number | Код ошибки. Возможные коды указаны в таблице «Коды ошибок API». |
| message * | string | Текстовое описание ошибки. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": true,
"destinations": [
{
"phone": 78000000001,
"id": "1046379029789147161",
"trackingData": "2de9efa4-3ee7-4691-bec0-81d93c5a54cf"
},
{
"phone": 78000000002,
"id": "1046379029789147194",
"trackingData": "common-tracking-0001",
"error": {
"code": 432,
"message": "blocked phone: 78000000002. No messages has been sent"
}
}
]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": false,
"error": {
"code": 105,
"message": "Duplicated request"
}
}
POST api.smstraffic.ru/v2/statuses/list
Описание параметров запроса
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
| ids | array[string] | - | Список идентификаторов СМС, полученных при отправке через /send. |
| trackingData | array[string] | - | Список пользовательских trackingData, присвоенных сообщениям при отправке через /send. |
| extendedInfo | boolean | false | Нужно ли возвращать дополнительное поле statusExtended с деталями ошибки от оператора. |
POST /v2/statuses/list HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR
{
"ids": [ "1046379029789147161", "1046379029789147162" ],
"trackingData": [
"108c3492-98ef-44b4-ab17-ee20c864584a",
"108c3492-98ef-44b4-ab17-ee20c864584b"
],
"extendedInfo": false
}
Описание параметров ответа
| Поле | Тип | Описание |
|---|---|---|
| success * | boolean | Признак успешности всего запроса. |
| error | object | Ошибка, из-за которой весь запрос не был принят к обработке. Присутствует при success = false. См. таблицу параметров объекта Error. |
| data * | array[object] | Список сообщений и их текущих статусов. См. таблицу StatusesListResponse.Data. |
Параметры объекта StatusesListResponse.Data
| Поле | Тип | Описание |
|---|---|---|
| smsId * | string | Идентификатор отправленного СМС сообщения. |
| trackingData | string | Пользовательская trackingData метка. |
| submissionDate * | string (RFC 3339) | Дата и время принятия сообщения платформой. |
| sendDate | string (RFC 3339) | Дата и время отправки сообщения оператору. |
| deliveryDate | string (RFC 3339) | Дата и время получения финального статуса. |
| status * | string | Текущий статус сообщения. Возможные значения см. в справке по статусам СМС сообщений. |
| statusExtended | object | Дополнительная информация об ошибке от оператора (возвращается при extendedInfo = true). См. таблицу StatusesListResponse.StatusExtended. |
| operatorId | number | Идентификатор оператора. |
| mcc | number | Mobile Country Code. |
| mnc | number | Mobile Network Code. |
Параметры объекта StatusesListResponse.StatusExtended
| Поле | Тип | Описание |
|---|---|---|
| code * | number | Код ошибки от оператора. |
| description * | string | Описание ошибки от оператора. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": true,
"data": [
{
"smsId": "1046379029789147161",
"trackingData": "108c3492-98ef-44b4-ab17-ee20c864584a",
"submissionDate": "2025-11-27T13:56:41.562+03:00",
"sendDate": "2025-11-27T13:56:41.593+03:00",
"deliveryDate": "2025-11-27T13:56:42.341+03:00",
"status": "Delivered",
"operatorId": 1971,
"mcc": 250,
"mnc": 99
},
{
"smsId": "1046379029789147162",
"submissionDate": "2025-11-27T13:58:12.021+03:00",
"sendDate": "2025-11-27T13:58:12.593+03:00",
"deliveryDate": "2025-11-27T13:59:42.341+03:00",
"status": "Non Delivered",
"statusExtended": {
"code": 3,
"description": "Unknown subscriber"
}
}
]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": false,
"error": {
"code": 105,
"message": "Invalid request format"
}
}
Можно автоматически получать от нас статусы
сообщений после каждого изменения статуса
(рекомендуется) в формате JSON. Вы будете
получать JSON-запросы, в теле которых будет
массив из объектов, в одном запросе по
умолчанию не более 50 статусов (ограничение
можно отрегулировать через обращение в
техническую поддержку).
Вашему серверу необходимо отдавать в ответ на
запросы HTTP статус-код 200 или 204 (заголовки
и тело ответа не имеют значения), в противном
случае наша система отправки статусов пометит
ваш скрипт как «временно недоступный», и
частота отправки статусов будет снижена до
момента, пока скрипт снова не начнёт отдавать
корректные HTTP статус-коды.
Для включения автоматического получения
статусов в JSON формате необходимо обратиться
в техническую поддержку.
Описание параметров объектов-элементов массива
| Поле | Тип | Описание |
|---|---|---|
| login * | string | Логин учётной записи. |
| sms_id * | string | Идентификатор отправленного сообщения. |
| phone_number * | string | Номер телефона абонента. |
| status * | string | Текущий статус сообщения. Возможные значения см. в справке по статусам СМС сообщений. |
| delivery_date * | string | Дата получения текущего статуса в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС», часовой пояс UTC+3. |
| channel * | string | Канал сообщения, по которому пришёл статус. Всегда значение «sms». |
| parts_count | number | Количество частей сообщения. Возвращается только при отправке сообщений через /v2/send. |
| error_code * | number | Код ошибки. Если указан 0, то запрос был обработан без ошибок. Возможные коды указаны в таблице «Коды ошибок API». |
| tracking_data | string | Пользовательская метка для отслеживания, указанная при отправке через /v2/send. |
| operator_id | number | Идентификатор оператора. |
| mcc | number | Mobile Country Code. |
| mnc | number | Mobile Network Code. |
POST /status_callback_url HTTP/1.1
User-Agent: StatusSender/2.0 Java/21
Host: example.com
Content-type: application/json
[
{
"login": "login:subacc",
"sms_id": "8049537157380826112",
"phone_number": "78000000001",
"status": "Delivered",
"delivery_date": "2025-12-06 12:31:00",
"channel": "sms",
"parts_count": 2,
"err_code": 0,
"tracking_data": "2de9efa4-3ee7-4691-bec0-81d93c5a54cf",
"operatorId": 1971,
"mcc": 250,
"mnc": 99
}
]
HTTP/1.1 200 OK Content-Type: text/plain
POST api.smstraffic.ru/v2/statuses/checked
Описание параметров запроса
| Поле (body) | Тип | Описание |
|---|---|---|
| body | array[string] | Список идентификаторов сообщений, которым необходимо установить статус Checked. |
POST /v2/statuses/checked HTTP/1.1 Host: api.smstraffic.ru Content-Type: application/json Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR [ "1046379029789147161", "1046379029789147162" ]
Описание параметров ответа
| Поле | Тип | Описание |
|---|---|---|
| success * | boolean | Признак успешности всего запроса. |
| error | object | Ошибка, из-за которой весь запрос не был принят к обработке. Присутствует при success = false. См. таблицу параметров объекта Error. |
| data * | object | Результат обработки запроса. См. таблицу параметров объекта StatusesCheckedResponse.Data. |
Параметры объекта StatusesCheckedResponse.Data
| Поле | Тип | Описание |
|---|---|---|
| updated * | array[string] | Список id сообщений, для которых статус Checked был успешно установлен. |
| failed * | array[object] | Список сообщений, для которых не удалось установить статус Checked. См. таблицу StatusesCheckedResponse.Data.Failed. |
Параметры объекта StatusesCheckedResponse.Data.Failed
| Поле | Тип | Описание |
|---|---|---|
| id * | string | Id сообщения, которому не был установлен статус. |
| error * | string | Текстовое описание причины ошибки. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": true,
"data": {
"updated": [ "1046379029789147161" ],
"failed": [
{
"id": "1046379029789147162",
"error": "no such message or this message does not belong to you 1046379029789147162"
}
]
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": false,
"error": {
"code": 403,
"message": "Access denied"
}
}
GET api.smstraffic.ru/v2/account
Без параметров.
GET /v2/account HTTP/1.1 Host: api.smstraffic.ru Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR
Описание параметров ответа
| Поле | Тип | Описание |
|---|---|---|
| success * | boolean | Признак успешности всего запроса. |
| data.account * | string | Текущий баланс. Может быть отрицательным числом. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"success": true,
"data": { "account": "12520.35" }
}
POST api.smstraffic.ru/v2/event-log
Описание параметров запроса
| Поле | Тип | Описание |
|---|---|---|
| from * | string (RFC 3339) | Дата и время начала журнала событий. |
| to * | string (RFC 3339) | Дата и время окончания журнала событий. |
| department | string | Логин департамента, по которому отфильтровать журнал. Специальное значение «» (пустая строка) обозначает главную учётную запись. Если параметр не задан, выгружаются сообщения по главной учётке и всем департаментам. Если запрос совершается от имени департамента, параметр игнорируется и автоматически устанавливается в логин этого департамента. |
POST /v2/event-log HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR
{
"from": "2025-01-01T00:00:00+03:00",
"to": "2025-01-01T23:59:59+03:00",
"department": "0"
}
Описание параметров ответа
| Поле | Тип | Описание |
|---|---|---|
| count * | number | Количество событий. |
| events * | array[object] | Список событий. См. таблицу параметров объекта Events. |
Параметры объекта Events
| Поле | Тип | Описание |
|---|---|---|
| login * | string | Логин учётной записи. |
| event * | string | Текст события. |
| ip * | string | IP, с которого совершено событие. |
| event_date * | string | Дата и время события. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"count": 1,
"events": [
{
"login": "login",
"event": "Created batch: 2025-01-01 17:03:45. Start date: 2025-01-01 17:03:45. Phones: 1",
"ip": "127.0.0.1",
"event_date": "2025-01-01T17:03:45+03:00"
}
]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"code": 105,
"description": "Department 123 not found"
}
Выгрузка списка сообщений осуществляется двумя
отдельными вызовами REST API:
1. Создание задания на выгрузку отчёта.
2. Скачивание отчёта.
Создание задания на выгрузку отчёта и
скачивание этого отчёта должны выполняться на
одном и том же узле — оба запроса должны идти
либо на api.smstraffic.ru, либо на
api2.smstraffic.ru, поскольку сгенерированные
отчёты не синхронизируются между узлами.
Создание задания на выгрузку отчёта
POST api.smstraffic.ru/v2/report
| Поле | Тип | Описание |
|---|---|---|
| from | string (RFC 3339) | Дата и время начала отчёта. В отчёт попадут сообщения, отправленные с указанного времени (включительно). |
| to | string (RFC 3339) | Дата и время окончания отчёта. В отчёт попадут сообщения, отправленные до указанного времени (включительно). |
| originator | string | Имя отправителя. Будут выгружены сообщения с указанным именем отправителя (регистр учитывается). |
| subscriber | string | Получатель сообщения, в зависимости от канала: номер телефона в sms, viber, whatsapp, vk, ok и telegram, произвольный идентификатор в push. |
| type | string (enum: mt, mo) | Тип сообщения — mt (исходящее), mo (входящее). Если параметр не задан, выгружаются сообщения всех типов. |
| status | string (enum: delivered, not_delivered, read) | Статус доставки сообщений. delivered — сообщение в статусах «Delivered» или «Read»; not_delivered — любые статусы, кроме промежуточных, «Delivered» и «Read»; read — только в статусе «Read». Если не задан, выгружаются сообщения в любом статусе. |
| channels | array[string] (enum: sms, push, viber, whatsapp, vk, ok, telegram) | Список каналов отправки в формате JSON-массива. Если не задан, выгружаются сообщения по всем каналам. |
| department | string | Логин департамента, отправившего сообщение. Значение «» (пустая строка) — главная учётная запись. Если не задан, выгружаются сообщения по главной учётке и всем департаментам. При запросе от имени департамента параметр игнорируется. |
| fields | array[string] (enum: id, subscriber, message, submission_date, send_date, delivery_date, read_date, channel, status, cost, originator, ip, error, parts, operator_name, country_name, batch_name, department_name) | Список полей для выгрузки в формате JSON-массива. Поля идут в том порядке, в котором указаны в запросе. Значение по умолчанию — [id, subscriber, message, submission_date, send_date, delivery_date, status, originator]. Описание полей см. в таблице «Описание полей fields». |
| format | string (enum: zip, csv, json) | Формат выгрузки. Значение по умолчанию — json. JSON генерирует отчёт в форме JSON-объекта вида {"count":1,"messages":[["1","2"]]}, где count — общее количество отфильтрованных данных, messages — массив сообщений в виде массива полей, указанных в параметре fields. Формат zip — это csv, упакованный в zip-архив. |
| limit | number | Максимальное количество сообщений в ответе. Диапазон от 1 до 1000, по умолчанию — 50. Обычно используется совместно с offset для постраничной навигации. Применяется только при format=json. |
| offset | number | Номер сообщения, начиная с которого производится выгрузка. От 0 до 1000, по умолчанию — 0. Обычно используется совместно с limit. Применяется только при format=json. |
Описание полей fields
| Поле | Описание |
|---|---|
| id | Уникальный идентификатор сообщения на платформе SMS Traffic (строка, содержащая до 40 цифр). |
| subscriber | Получатель сообщения, в зависимости от канала: номер телефона в sms, viber, whatsapp, vk и ok, произвольный идентификатор в push. |
| message | Текст сообщения. |
| submission_date | Дата и время поступления сообщения от клиента в формате RFC 3339. |
| send_date | Дата и время отправки сообщения в канал в формате RFC 3339. Может быть пустым, если сообщение ещё не отправлялось в канал. |
| delivery_date | Дата и время доставки или последнего изменения статуса в формате RFC 3339. Может быть пустым, если сообщение ещё не получило финальный статус. |
| read_date | Дата и время прочтения сообщения получателем в формате RFC 3339. Может быть пустым, если сообщение ещё не прочитано или канал не поддерживает статус Read. |
| channel | Канал отправки сообщения. |
| status | Статус доставки. |
| originator | Имя отправителя, с которым сообщение отправлялось в канал. |
| ip | IP-адрес, с которого было отправлено сообщение. |
| error | В случае недоставки здесь указан код причины недоставки. |
| parts | Количество сегментов СМС. Заполняется только для сообщений из канала sms. |
| operator_name | Имя оператора, за которым закреплён номер получателя. Заполняется для каналов, где получатель — номер телефона (sms, viber, whatsapp, vk, ok, push). Пример: «Мобильные ТелеСистемы», «Йота». |
| country_name | Название страны, за которой закреплён номер получателя. Пример: Russian Federation, Kazakhstan. |
| batch_name | Имя рассылки, в которой участвует данное сообщение. |
| department_name | Имя департамента, отправившего сообщение, или пустая строка, если сообщение отправлено с основной учётной записи. |
POST /v2/report HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/json
Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR
{
"from": "2025-01-01T00:00:00+03:00",
"to": "2025-01-01T23:59:59+03:00",
"channels": [ "sms" ],
"fields": [ "id", "submission_date", "message", "status" ]
}
Описание параметров ответа
| Поле | Тип | Описание |
|---|---|---|
| code * | number | Числовой код ошибки при обработке запроса. Принимает значение 0 в случае успеха. |
| description * | string | Текстовая расшифровка кода ошибки. Если code = 0, в данном параметре будет пустая строка. |
| report_id * | string | Идентификатор отчёта. Данный параметр отсутствует, если code > 0. |
HTTP/1.1 200 OK
Content-Type: application/json
{
"code": 0,
"description": "",
"reportId": "16e15fec1d27803e18511793b5bf699e"
}
Скачивание отчёта
GET api.smstraffic.ru/v2/report/{report_id}
Вместо {report_id} необходимо подставить идентификатор отчёта, выданный на предыдущем этапе. Если отчёт уже готов, в ответе будет HTTP статус-код 200, а в теле ответа — содержимое самого отчёта.
GET /v2/report/16e15fec1d27803e18511793b5bf699e HTTP/1.1 Host: api.smstraffic.ru Authorization: Bearer 1837/ptf9Bs9Apk4EgyP4gUCy2ajwfFVchwaR
HTTP/1.1 200 OK Content-Disposition: attachment; filename="16e15fec1d27803e18511793b5bf699e.csv" Accept-Ranges: bytes Content-Type: text/csv Content-Length: 53 12345;2021-01-01T00:00:00+03:00;hello world;Delivered
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 78
{"count":1,"messages":[["12345","2021-01-01T00:00:00+03:00","hello world","Delivered"]]}
Архитектурно возможно появление в JSON-ответе
новых свойств, поэтому при проектировании
архитектуры HTTP-клиента необходимо учитывать
эту возможность.
Если отчёт ещё не готов, запрос будет
заблокирован до момента готовности отчёта
(техника long polling). Максимальное время
нахождения запроса в блокировке — 5 минут, по
истечении которых сервер генерирует ответ с
HTTP статус-кодом 204 (отчёт ещё не готов). В
этом случае рекомендуется повторять запросы до
получения 200, 404 или иного ответа, выдерживая
интервал не менее 1 секунды. Готовые отчёты
хранятся 7 дней, по истечении которых запрос на
скачивание будет возвращать статус-код 404.
HTTP/1.1 204 No Content
HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 76
{"code":1, "description":"Report 16e15fec1d27803e18511793b5bf699e not found"}
Отправка сообщений на телефон абонента
осуществляется через вызов веб-скрипта
api.smstraffic.ru/multi.php, которому
передаются необходимые параметры методом GET
или POST. При отсутствии связи или других
проблемах на api.smstraffic.ru,
можно использовать наш запасной сервер:
api2.smstraffic.ru/multi.php.
Обращения принимаются как по протоколу HTTP,
так и по HTTPS (с использованием
TLS-шифрования). Номера портов стандартные:
HTTP — 80, HTTPS — 443.
HTTP-запросы должны соответствовать
официальным спецификациям протокола HTTP (RFC 2616). Параметры должны
быть корректно кодированы (RFC 2396, раздел
2.4). Поддерживается HTTP протокол версий
1.0 и 1.1. При работе по протоколу HTTP 1.1
ответ может передаваться в chunked transfer encoding.
При отправке запросов методом POST
обязательно указание заголовка
«Content-Type:
application/x-www-form-urlencoded».
| Имя параметра | Возможные значения | Описание |
|---|---|---|
| login | Текст | Ваш логин в системе SMS Traffic. Параметр обязателен. |
| password | Текст | Пароль от вашего аккаунта. Параметр обязателен. |
| phones | Список номеров через запятую | Список телефонов в международном формате, разделённых запятыми (формат номера телефона описан в разделе «Формат номера телефона»). Можно ограничиться только одним номером. Этот параметр обязателен (кроме случаев с использованием параметра group). |
| message | Текст длиной до 17085 (при rus=1 или 5) или 39015 (при rus=0) символов |
Текст сообщения, не более
160 символов латинскими
буквами или 70 символов
по-русски в кодировке
Windows-1251. При превышении
этих границ сообщение
автоматически разделится на
несколько частей, каждая из
которых не превышает 153
символа в латинице и 67
символов по-русски.
Максимальное количество
частей регулируется
параметром
max_parts. Параметр обязателен (кроме случаев с использованием параметра individual_messages). |
| rus | 0 |
Сообщение передано в
кодировке Windows-1251.
Русские символы будут
транслитерироваться в
латиницу. Максимальное
количество символов в одном
СМС сообщении — 160 (153 для
склеенного сообщения). Значение по умолчанию — 0. |
| 1 | Сообщение передано в кодировке Windows-1251. Максимальное количество символов в одном СМС сообщении — 70 (67 для склеенного сообщения). Если сообщение состоит исключительно из латинских символов, максимальное количество символов не изменяется. | |
| 5 | Сообщение передано в кодировке UTF-8. Максимальное количество символов в одном СМС-сообщении — 70 (67 для склеенного сообщения). Если сообщение состоит исключительно из латинских символов, максимальное количество символов не изменяется. | |
| originator | Альфанумерический (максимальная длина 11 символов) | Параметр задаёт отправителя сообщения, как он будет выглядеть на телефоне получателя. Может состоять из латинских букв, цифр и знаков пунктуации. Русские буквы в отправителе принудительно транслитерируются в латинские. Так же допустимо использовать схожие с русскими по начертанию латинские буквы. На альфанумерического отправителя нельзя позвонить или отправить ответное сообщение. Примеры: «MyCompany», «787-35-95», «SMS.Traffic», «CMC.TPAFIK». |
| Только цифры (максимальная длина 15 цифр) | Если указан цифровой отправитель, абонент может отправить ответное сообщение или перезвонить по указанному в отправителе номеру. Примеры: «74957873595», «88001000258», «3299». | |
| flash | 1 | Сообщение отправляется как flash SMS. Flash SMS появляется сразу на экране телефона и не сохраняется в памяти телефона автоматически. Сообщения данного типа имеют максимальную длину: в латинице - 160 символов (rus=0), в кириллице — 70 символов (rus 1 или 5). |
| 0 | СМС отправляется как обычное сообщение. Значение по умолчанию — 0. | |
| start_date | Дата в формате «ГГГГ-ММ-ДД ЧЧ:ММ:СС» | Дата и время отправки СМС. Поле можно оставить пустым, в таком случае сообщения уйдут немедленно. Время указывается в московском часовом поясе (MSK). Start_date может быть не более чем на 3 суток в будущем. Если start_date находится в будущем более чем на 5 минут, то применение параметра want_sms_ids невозможно. Пример: «2020-05-09 09:00:00». |
| max_parts | Число от 1 до 255 | Максимальное количество частей, на которые будет при необходимости разбит текст сообщения. Если текст сообщения не укладывается в одну часть, то длина одной части сообщения ограничивается 153 символами для латиницы и 67 для кириллицы. Если сообщение после разбивки превышает установленное значение max_parts, то отправлены будут первые max_parts частей, а остальные отброшены. По умолчанию установлено максимальное значение — 255. |
| group | Текст | Имя группы (списка для рассылок), определенное в личном кабинете клиента, на которую идет рассылка. Этот параметр заменяет параметр phones. Сообщение будет отправлено на все телефоны в группе. |
| timeout | Положительное целое число | С помощью этого параметра можно установить время жизни СМС. Сообщение перестанет автоматически доставляться через timeout секунд с момента получения сообщения платформой. Данный параметр поддерживается не всеми операторами. Минимально возможное значение так же зависит от оператора. Большинство операторов ограничивают минимальное значение 10 минутами. При указании меньшего значения, параметр может быть проигнорирован (сброшен до максимального значения), или же в ответ на запрос оператор может вернуть статус "отклонено". Со стороны нашего СМС-центра минимальное значение не ограничивается. Максимальное значение — 86400 (24 часа). |
| individual_messages | 0 или 1 |
Если необходимо отправить
индивидуальное сообщение
каждому абоненту, можно либо
несколько раз запрашивать
скрипт, передавая в качестве
параметра phones только один
телефон, либо (что более
предпочтительно) передать
дополнительный параметр
individual_messages=1,
оставить поле message
пустым, а в поле phones
передать список телефонов и
сообщений в формате:
телефон1 сообщение1 телефон2 сообщение2 телефон3 сообщение3 Телефон и сообщение разделяются одним пробелом, а пары телефон-сообщение разделяются знаком перевода строки (символ с ASCII-кодом 0xA или 0xD), при этом текст сообщения не может содержать символа перевода строки. Значение по умолчанию — 0 . |
| delimiter | Текст |
Этот параметр работает
совместно с параметром
individual_messages при
необходимости передачи
символа перевода строки
внутри сообщения. Например,
при указании delimiter=ABC
параметр phones может
принимать вид: 76161234567 текст сообщенияABC7903123456 текст сообщения на нескольких строках В итоге каждый абонент получит предназначенное ему сообщение, даже если в нём есть перевод строки. При этом текст сообщения не должен содержать в себе ABC, иначе произойдёт некорректный разбор параметра. По умолчанию разделителем является символ переноса строки (ASCII-код 0xA или 0xD). |
| want_sms_ids | 0 или 1 |
Если необходимо получить
информацию об
идентификаторах, присвоенных
каждому сообщению (они
понадобятся при проверке
статуса доставки сообщения),
нужно передать параметр
want_sms_ids=1. Тогда
ответный XML будет содержать
информацию о каждом телефоне
и идентификаторе,
присвоенном соответствующему
сообщению. Параметр
want_sms_ids=1 нельзя
использовать в отсроченной
рассылке, то есть
одновременно с параметром
start_date. Этот параметр
можно применять только при
условии, что сообщение
отправится не позднее 5
минут с момента поступления
запроса.
Идентификатор представлен
целым беззнаковым числом
размером 8 байт.
Максимальное число сообщений
в одном запросе с
использованием данного
параметра не должно
превышать 6000. Значение по умолчанию — 0. |
| with_push_id | 0 или 1 |
Используется только
совместно с параметрами
want_sms_ids=1 и
individual_messages=1.
Параметр
with_push_id
необходим, когда требуется
передать каждое сообщение со
своим уникальным
идентификатором и в ответ
получить привязку переданных
идентификаторов к выданным
нашей системе
идентификаторам. Типичный
случай использования -
передача длинных сообщений.
В обычных условиях, при
отправке длинного сообщения,
оно разбивается на несколько
частей и каждой части
присваивается свой
идентификатор. Чтобы связать
несколько идентификаторов
одного сообщения,
используется
with_push_id. При
этом, в параметре phones
перед каждым номером должен
быть указан произвольный
идентификатор (это может
быть идентификатор сообщения
в вашей базе), отделённый от
номера двоеточием. Сам
идентификатор не должен
содержать двоеточия. Пример:
push_id1:телефон1 сообщение1 из двух частей 12345678:телефон2 сообщение2 из двух частей one-more:телефон3 сообщение3 из двух частей Значение по умолчанию — 0. |
| ignore_phone_format | 0 или 1 |
Данный параметр используется
при единовременной рассылке
на несколько номеров
телефонов. Если при отправке
сообщения хотя бы один номер
в запросе будет некорректен,
то при
ignore_phone_format=0,
возвращается ошибка 418 и ни
одно из сообщений не
отправляется. Если же
установить параметр
ignore_phone_format=1,
то проверка номеров
отключается и все сообщения,
независимо от корректности
номеров, становятся в
очередь на отправку и
биллингуются соответственно
вашему тарифу. Значение по умолчанию — 0. |
| two_byte_concat | 0 или 1 |
Параметр позволяет указать
способ UDH-склейки.
Если указано 1 —
используется склейка с reference
number размером 2
байта. В противном случае
используется склейка с
reference number размером 1
байт. 2-х байтовый reference
number позволяет значительно
снизить вероятность
некорректной склейки
сообщений в телефоне, однако
уменьшает максимальный
размер одной части на 1
символ. То есть, не более
152 символов латиницей и 66
символов - кириллицей. Значение по умолчанию — 0. |
Для SOAP протокола адрес дублирующего
сервера прописан в WSDL.
Для SMTP протоколов все запасные сервера
прописаны в MX записях соответствующих
протоколам доменов. Согласно спецификации
SMTP, распределение трафика между MX
серверами происходит автоматически и, как
правило, производить дополнительные
настройки для обеспечения отказоустойчивости
не нужно.
В качестве ответа скрипт отдает XML с результатом постановки сообщений в очередь. В примерах ниже по тексту, XML представлен в отформатированном виде, поэтому значение заголовка Content-Length может не совпадать с актуальной длиной отформатированного XML в примере. Так же, для удобочитаемости, параметры запроса могут разбиваться на несколько строк. На самом деле, при использовании протокола HTTP(S) всё тело запроса должно идти в одной строке.
Пример отправки одного сообщения:
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&phones=78001234567&message=test+%F2%E5%F1%F2
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130
<?xml version="1.0" ?>
<reply>
<result>OK</result>
<code>0</code>
<description>queued 1 messages</description>
</reply>
В случае успеха:
поле result - содержит строку OK;
code = 0;
description - содержит число
сообщений, успешно поставленных в очередь.
В случае возникновения ошибки:
result = ERROR;
code больше 0;
description - содержит описание
ошибки (например, 'Authentication
failed'). Все сообщения в
description передаются на английском языке.
Ошибка 1000 означает временные проблемы на
сервере. При ее получении можно попробовать
повторить запрос через некоторое время или
отправить запрос на дублирующий сервер.
Остальные ошибки следует обрабатывать
соответственно их описанию.
Пример ответа скрипта в случае ошибки:
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&phones=78001234567&message=test+%F2%E5%F1%F2
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130
<?xml version="1.0" ?>
<reply>
<result>ERRO</result>
<code>401</code>
<description>login param is missing</description>
</reply>
При передаче параметра want_sms_ids=1 в ответном XML появляется дополнительный элемент со списком идентификаторов. Идентификатор представлен целым беззнаковым числом размером 8 байт.
Пример:
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&want_sms_ids=1&phones=
79051112233,79261112233&message=test+%F2%E5%F1%F2
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130
<?xml version="1.0" ?>
<reply>
<result>OK</result>
<code>0</code>
<description>queued 2 messages</description>
<message_infos>
<message_info>
<phone>79051112233</phone>
<sms_id>1000472891</sms_id>
</message_info>
<message_info>
<phone>79261112233</phone>
<sms_id>1000472892</sms_id>
</message_info>
</message_infos>
</reply>
При передаче параметра with_push_id=1 в ответном XML появляются дополнительные данные:
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&want_sms_ids=1&with_push_id=1&individual_messages
=1& delimiter=ABC&phones=a:79051112233+<длинное сообщение>ABCb:79261112233+hello+test
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130
<reply>
<result>OK</result>
<code>0</code>
<description>queued 3 messages</description>
<message_infos>
<message_info>
<phone>79051112233</phone>
<sms_id>8287366071</sms_id>
<push_id>a</push_id>
</message_info>
<message_info>
<phone>79051112233</phone>
<sms_id>8287366073</sms_id>
<push_id>a</push_id>
</message_info>
<message_info>
<phone>79261112233</phone>
<sms_id>8287366075</sms_id>
<push_id>b</push_id>
</message_info>
</message_infos>
</reply>
Для проверки статуса отправленного сообщения
вызывается скрипт
api.smstraffic.ru/multi.php с
параметрами:
login - ваш логин;
password - ваш пароль;
operation = status;
sms_id - список идентификаторов,
разделённых запятой.
В ответ сервер возвращает XML с результатом
запроса, где:
submition_date - содержит дату
приёма сообщения платформой SMS Traffic;
send_date - дата отправки сообщения
оператору;
last_status_change_date - дата
доставки или время последнего изменения
статуса сообщения.
Мы работаем с операторами по протоколу SMPP,
в котором используется время с точностью до
минуты. Поэтому дата доставки всегда имеет
нулевые секунды. Таким образом, если
сообщение было отправлено, например, в
18:43:38, а в last_status_change_date
указано время 18:43:00, это означает что
сообщение было доставлено в 43 минуту 18
часа. В данном случае на секунды можно не
обращать внимания.
Время доставки на российские номера
телефонов передаётся в московском часовом
поясе (MSK). Время доставки на номера других
стран передаётся в локальном часовом поясе
абонента. Из-за особенностей работы с
иностранными операторами невозможно
достоверно выяснить часовой пояс, в котором
находится дата доставки, передаваемая в
отчётах о доставке. Однако, мы делаем все
возможное, чтобы передать отчет о доставке с
корректной датой доставки.
Статусы хранятся в течение двух дней, после
чего они перемещаются в архив. На попытки
запроса статусов сообщений, отправленных
более двух дней назад, будет возвращаться
ошибка
"No such message or this message does not belong to you".
Пример запроса статуса одного сообщения:
Пример запроса статуса одного сообщения:
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&operation=status&sms_id=8287713301
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130
<reply>
<submition_date>2020-05-09 14:11:39</submition_date>
<send_date>2020-05-09 14:11:39</send_date>
<last_status_change_date>2020-05-09 14:12:00</last_status_change_date>
<status>Delivered</status>
<error></error>
<sms_id>8287713301</sms_id>
</reply>
Пример запроса нескольких идентификаторов:
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&operation=
status&sms_id=8287713301,8287713303,82877133031
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130
<reply>
<sms>
<error></error>
<submition_date>2020-05-09 14:11:39</submition_date>
<send_date>2020-05-09 14:11:39</send_date>
<last_status_change_date>2020-05-09 14:12:00</last_status_change_date>
<sms_id>8287713301</sms_id>
<status>Expired</status>
</sms>
<sms>
<error></error>
<submition_date>2020-05-09 14:11:39</submition_date>
<send_date>2020-05-09 14:11:40</send_date>
<last_status_change_date>2020-05-09 14:12:00</last_status_change_date>
<sms_id>8287713303</sms_id>
<status>Delivered</status>
</sms>
<sms>
<error>
no such message or this message does not belong to you
</error>
<sms_id>82877133031</sms_id>
</sms>
</reply>
Можно автоматически получать от нас статусы
сообщений после каждого изменения статуса
(рекомендуется). Для этого вам нужно
установить на своем веб-сервере скрипт,
который должен принимать методом POST
следующие параметры:
sms_id – идентификатор сообщения;
status – статус доставки (см.
список ниже);
delivery_date – дата доставки или
последнего изменения статуса;
error_code - код ошибки в случае,
если СМС не доставлено (0, если СМС
доставлено или же оператор не передал
информацию о коде ошибки). Значения кодов
ошибок описаны в разделе «Список
кодов ошибок в поле err отчёта о
доставке».
Идентификатор представлен целым беззнаковым
числом размером 8 байт. Дата доставки или
последнего изменения статуса указывается в
московском часовом поясе, в формате
«ГГГГ-ММ-ДД ЧЧ:ММ:СС». Передайте нам URL
этого скрипта и мы настроим, чтобы он
автоматически вызывался после каждого
изменения статуса.
POST /status_callback_url HTTP/1.1
Connection: Close
User-Agent: Java/1.7.0_17
Host: example.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-type: application/x-www-form-urlencoded
Content-Length: 69
sms_id=15166254108&status=Delivered&delivery_date=2020-05-09 17:04:00
HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Sat, 09 May 2020 13:05:08 GMT
Content-Type: text/plain
Content-Length: 0
Connection: close
Для проверки баланса своего счета следует
вызывать скрипт www.smstraffic.ru/multi.php
с параметрами:
login - ваш логин
password - ваш пароль
operation = _account _
POST /multi.php HTTP/1.0
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
Connection: close
login=mylogin&password=mypassword&operation=account
HTTP/1.1 200 OK
Server: nginx
Date: Sat, 09 May 2020 11:05:15 GMT
Content-Type: text/xml
Connection: close
Content-Length: 130
<?xml version="1.0" ?>
<reply>
<account>10025</account>
</reply>
Для обеспечения отказоустойчивости и надежности сервисов, мы предоставляем два физически распределённых узла. В случае проблем с соединением с основным узлом, рекомендуется направлять сообщения на дублирующий.
| При запросе статуса через multi.php | При ручном просмотре статистики на странице lk.smstraffic.ru/logs.php | Тип |
|---|---|---|
| Нет статуса (пустая строка) | Нет данных | Промежуточный |
| Buffered SMSC | Доставляется | Промежуточный |
| Delivered | Доставлено | Окончательный |
| Non Delivered | Не доставлено | Окончательный |
| Rejected | Отказ в передаче | Окончательный |
| Expired | Просрочено | Окончательный |
| Deleted | Удалено | Окончательный |
| Unknown status | Неизвестный статус | Окончательный |
Любое сообщение достигает окончательного статуса не позднее чем через сутки после отправки. Подробное описание статусов вы найдете на странице lk.smstraffic.ru/sms-statuses.php.
| Код | Описание |
|---|---|
| 401 | Не указан логин |
| 402 | Не указан пароль |
| 403 | Не указаны номера телефонов |
| 404 | Несовместимые параметры запроса |
| 405 | Не указан текст сообщения |
| 407 | Не указан ни один телефон |
| 408 | Неподдерживаемый тип сообщения: "тип_сообщения" |
| 409 | Не указан udh |
| 410 | Нельзя использовать параметр max_parts: автоматическая разбивка бинарных сообщений не поддерживается. |
| 411 | Неверный логин или пароль |
| 412 | Неверный IP |
| 413 | Такой группы не существует: "имя_группы" |
| 414 | В группе нет ни одного телефона |
| 415 | Недостаточно средств |
| 416 | Неверный формат даты начала рассылки: "дата_старта_рассылки". |
| 417 | Дата начала рассылки "дата_старта_рассылки" находится в прошлом. |
| 418 | Идентификаторы не предоставляются для отложенных сообщений. |
| 419 | Вам не разрешено использовать данный маршрут. |
| 420 | Сообщение "текст_сообщения" слишком длинное. |
| 421 | Имя отправителя слишком длинное |
| 422 | Не указан телефон в строке "номер_строки": "строка". |
| 423 | Пустое сообщение для телефона "номер_телефона". |
| 424 | Сообщение "текст_сообщения" для телефона "номер_телефона" слишком длинное. |
| 425 | Номер телефона "номер_телефона" слишком короткий. Ни одно сообщение не было отправлено. |
| 426 | Номер телефона "номер_телефона" слишком длинный. Ни одно сообщение не было отправлено. |
| 427 | "номер_телефона": неверная длина номера телефона. Ни одно сообщение не было отправлено. |
| 428 | "номер_телефона": неверный формат номера телефона. Ни одно сообщение не было отправлено. |
| 429 | "номер_телефона": неподдерживаемый оператор. Ни одно сообщение не было отправлено. |
| 430 | "номер_телефона": неверный номер телефона. Ни одно сообщение не было отправлено. |
| 431 | Телефон "номер_телефона" не подписан на рассылку. Ни одно сообщение не было отправлено. |
| 432 | Заблокированный номер телефона: "номер_телефона". Ни одно сообщение не было отправлено. |
| 433 | Не указан параметр sms_id. |
| 434 | Такого сообщения нет или оно вам не принадлежит. |
| 435 | Невозможно отменить сообщение "sms_id". |
| 436 | Отправитель "отправитель" запрещен. |
| 437 | Сообщение превышает 160 символов после транслитерации "текст_сообщения". |
| 438 | В сообщении найден шаблон, но не задана ни одна группа. |
| 439 | Вы не можете отправлять SMS-сообщения через HTTP. |
| 440 | Параметр "phones" не задан или задан некорректно. |
| 441 | Неверный формат файла параметров. |
| 442 | Неверное число параметров. |
| 501 | Время окончания рассылки в прошлом. |
| 502 | Время начала рассылки больше времени окончания рассылки. |
| 503 | Время старта продолжения рассылки должно быть раньше времени приостановки рассылки. |
| 504 | Невозможно создание рассылки с отложенным более чем на 30 дней стартом. |
| 1000 | Временные проблемы на сервере. |
Чтобы управлять списками для рассылок необходимо запросить скрипт по адресу api.smstraffic.ru/list.php.
| Имя параметра | Возможные значения | Описание |
|---|---|---|
| login | Текст | Ваш логин в системе SMS Traffic. Параметр обязателен. |
| password | Текст | Пароль от вашего аккаунта. Параметр обязателен. |
| operation | status_all | Возвращается информация обо всех списках в аккаунте. Считается значением по умолчанию при отсутствии в запросе параметра operation. |
| status | Возвращается информация о конкретном списке. | |
| add_member | Добавление номеров телефонов в список для рассылки. | |
| remove_member | Удаление номеров телефонов из списка для рассылки. | |
| member | Список номеров через запятую | В данном параметре указывается список номеров телефонов при совершении запросов с указанием operation=add_member или remove_member. Рекомендуется указывать не более 5000 номеров за один раз. |
| group_id | Положительное целое число (4 байта) | Уникальный идентификатор списка для рассылок. Используется при совершении манипуляций с ним. Узнать идентификатор списка можно запросом с operation=status_all. |
Получение всех списков для рассылки:
POST /list.php HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: close
login=mylogin&password=mypassword
HTTP/1.1 200 OK
Date: Sat, 09 May 2020 13:21:30 GMT
Server: Apache
Content-Length: 365
Connection: close
Content-Type: text/xml
<?xml version="1.0" ?>
<reply>
<result>OK</result>
<code>0</code>
<description>total groups: 4</description>
<groups>
<group>
<id>59353</id> (1)
<name>hello world</name> (2)
<created>2020-05-09 11:46:06</created> (3)
<congratulate>0</congratulate> (4)
</group>
<group>
<id>59355</id>
<name>клиенты</name>
<created>2020-05-09 11:48:15</created>
<congratulate>0</congratulate>
</group>
<group>
<id>59357</id>
<name>test</name>
<created>2020-05-09 11:48:49</created>
<congratulate>0</congratulate>
</group>
</groups>
</reply>
Поля результата:
| 1 | уникальный идентификатор списка для рассылки. |
| 2 | текстовое имя списка для рассылки. Отображается в личном кабинете. |
| 3 | дата и время создания списка. Указывается в часовом поясе Москвы. |
| 4 | статус поздравления c днём рождения. |
Добавление номеров в список:
POST /list.php HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: close
login=mylogin&password=mypassword&group_id=59353&
operation=add_member&member=79012223344,79082223344
HTTP/1.1 200 OK
Date: Sat, 09 May 2020 13:21:30 GMT
Server: Apache
Content-Length: 365
Connection: close
Content-Type: text/xml
<?xml version="1.0" ?>
<reply>
<result>OK</result>
<code>0</code>
<description>added or updated members: 2</description>
</reply>
Удаление номеров из списка:
POST /list.php HTTP/1.1
Host: api.smstraffic.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: close
login=mylogin&password=mypassword&group_id=59353&
operation=remove_member&member=79012223344,79082223344
HTTP/1.1 200 OK
Date: Sat, 09 May 2020 13:21:30 GMT
Server: Apache
Content-Length: 365
Connection: close
Content-Type: text/xml
<?xml version="1.0" ?>
<reply>
<result>OK</result>
<code>0</code>
<description>added or updated members: 2</description>
</reply>
тправку сообщений, получение информации о
статусе доставки, а также получение входящих
сообщений от абонентов можно осуществлять
через SMPP (Short Message Peer to Peer) —
стандартный протокол передачи коротких
сообщений. Мы используем версию 3.4
протокола. Скачать спецификацию вы можете с
нашего сайта.
На нашем СМС-центре можно ограничивать
доступ к SMSC по IP-адресу. По умолчанию
никакие ограничения по IP не накладываются.
Если вы хотите установить ограничения, то
необходимо написать соответствующее письмо в
адрес технической поддержки, и мы пропишем
ваши подключения только на указанных
адресах. Помимо конкретных IP адресов мы
можем прописать подсети классов A, B и C
(/8, /16 и /24 по CIDR классификации).
Поддерживается любой вид соединения со
следующим ограничением: на один наш
хост+system_id не более одного
receiver/transceiver. Если вам необходимо
больше соединений и есть возможность
увеличить количество receiver’ов, то
рекомендуем создать дополнительные
департаменты в рамках вашей основной учетной
записи. При создании департамента вы
автоматически получаете новый system_id.
Рекомендуемая интенсивность передачи — до 20
смс/сек. Для каждого клиента пропускная
способность выставляется индивидуально, при
превышении пропускной способности
отправляется ошибка ESME_RTHROTTLED.
Enquire_links обязательны. Если клиент
подключается к нам transmitter’ом, мы
ожидаем от него enquire_links и, при их
отсутствии в течение двух минут, связь
считается нарушенной и принудительно рвется.
Если клиент подключается к нам receiver’ом,
мы отправляем ему enquire_links каждые 30
секунд и ожидаем от него enquire_link_resps.
При их отсутствии в течение двух минут,
связь считается нарушенной и принудительно
рвется. При подключении transceiver’ом обмен
enquire_links ведется с обеих сторон.
Рекомендуемый интервал отправки
enquire_links в нашу сторону — 30 секунд.
Особенностей PDU нет, они определяются
протоколом. Не поддерживаются: query_sm,
data_sm, submit_multi_sm, replace_sm, sar,
tlv (для SUBMIT_SM).
| Параметр | Описание |
|---|---|
| Хост | server1.smstraffic.ru (основной сервер) или server2.smstraffic.ru (дублирующий сервер) |
| Порт | 4442 |
| system_id | Логин и пароль для подключения выдаются вашим менеджером. Они совпадают с логином и паролем от личного кабинета. |
| password | |
| interface_version | 0x34 |
| system_type | Игнорируется нашим SMPP-сервером. Можно оставить пустым. |
| addr_ton | Игнорируется нашим SMPP-сервером. Можно оставить пустым. |
| addr_npi | Игнорируется нашим SMPP-сервером. Можно оставить пустым. |
| address_range | Игнорируется нашим SMPP-сервером. Можно оставить пустым. |
Предпочтительно присоединяться к server1.smstraffic.ru, так как он является основным, а server2.smstraffic.ru — дублирующим.
| Параметр | Описание |
|---|---|
| source_addr_ton | 1 для цифрового отправителя или 5 - для буквенного |
| source_addr_npi | 1 для цифрового отправителя или 0 - для буквенного |
| source_addr | Альфанумерический отправитель (длина до 11 символов) или цифровой (длина до 15 цифр). См. раздел «Адрес отправителя». |
| dest_addr_ton | 1 |
| dest_addr_npi | 1 |
| destination_addr | Номер телефона в международном формате. См. раздел «Формат номера телефона». |
| esm_class | Согласно спецификации SMPP |
| protocol_id | Согласно спецификации SMPP |
| validity_period | Согласно спецификации SMPP |
| registered_delivery | Согласно спецификации SMPP |
| data_coding | Согласно спецификации SMPP |
| sm_length | Согласно спецификации SMPP |
| short_message | Согласно спецификации SMPP |
| service_type | Не поддерживается |
| priority_flag | Не поддерживается |
| schedule_delivery_time | Не поддерживается |
| replace_if_present_flag | Не поддерживается |
| sm_default_msg_id | Не поддерживается |
| Field | Size (octets) | Type |
|---|---|---|
| Id | 10 | C-Octet String (Decimal) |
| sub | 3 | C-Octet String Fixed Length (Decimal) |
| dlvrd | 3 | C-Octet String Fixed Length (Decimal) |
| submit date | 10 | C-Octet String Fixed Length (Decimal) |
| done date | 10 | C-Octet String Fixed Length (Decimal) |
| stat | 7 | C-Octet String Fixed Length |
| err | var. max. 3 | C-Octet String (Decimal) |
| text | var. max. 65 | C-Octet String (Decimal) |
В отчёт о доставке добавляются два TLV:
message_state (0x0427) - в нем
передаётся статус доставки сообщения;
receipted_message_id (0x001e) -
указывается идентификатор сообщения,
назначенный нашей платформой. Если отчёт о
доставке негативный, добавляется TLV
network_error_code (0x0423). Байт
"Network Type" устанавливается в 0x08.
В разделе «Список
кодов ошибок в поле err отчёта о
доставке» вы найдете подробное
описание возможных ошибок.
Default SMSC alphabet (data_coding=0) на наших серверах воспринимается как default GSM alphabet (GSM 03.38). При отправке сообщений в кодировке GSM 03.38 или latin1 (data_coding=0 или 3, соответственно) поддерживаются только следующие символы (hex коды символов указаны для кодировки GSM):
| .0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0. | @ | £ | $ | ¥ | è | é | ù | ì | ò | Ç | Ø | ø | Å | å | ||
| 1. | _ | Æ | æ | ß | É | |||||||||||
| 2. | SP | ! | " | # | ¤ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3. | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4. | ¡ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5. | P | Q | R | S | T | U | V | W | X | Y | Z | Ä | Ö | Ñ | Ü | § |
| 6. | ¿ | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
| 7. | p | q | r | s | t | u | v | w | x | y | z | ä | ö | ñ | ü | à |
При использовании data_coding=0 или
3 поддерживается корректная передача только
символов из таблицы выше. По всем остальным
значениям data_coding не
выполняется анализ или модификация исходного
текста сообщения (текст передается оператору
как есть).
При отправке сообщений в кодировке GSM 03.38
упаковывать текст сообщения в 7 бит не
нужно.
При взаимодействии по протоколу SMPP могут возникать различные ошибки. В данном разделе перечислены наиболее часто встречающиеся из них, а также рассматриваются способы их устранения.
ESME Already in Bound State (0x00000005)
Ошибка ESME_RALYBND возникает при попытке инициировать новое подключение в режимах transceiver или receiver при уже имеющемся активном соединении с таким же system_id на одном нашем сервере в режиме transceiver или receiver. Если необходимо держать несколько соединений в режиме transceiver или receiver (на режим transmitter ограничение не распространяется), можно создать дополнительные учётные записи. Дополнительные учётные записи привязаны к основному аккаунту и используют единый биллинг. Подробное описание этой возможности вы найдете в «Руководстве по работе с личным кабинетом» (требуется предварительная авторизация в ЛК). Для включения функционала обратитесь к вашему менеджеру.
Throttling error (0x00000058)
Ошибка ESME_RTHROTTLED возникает при превышении максимально допустимой скорости отправки сообщений по SMPP соединению. По умолчанию ограничение составляет 20 СМС/сек. Необходимо настроить своё ПО таким образом, чтобы возвращенные с этой ошибкой сообщения перепосылались через небольшой таймаут, либо следует уменьшить интенсивность передачи сообщений.
Invalid Password (0x0000000E)
Ошибка ESME_RINVPASWD возникает на этапе выполнения операции BIND при указании неверного system-id и(или) пароля. Проверьте корректность логина и пароля. Убедитесь, что логин и пароль совпадают с теми, которые выдал ваш менеджер.
Bind Failed (0x0000000D)
Ошибка ESME_RBINDFAIL возникает на этапе выполнения операции BIND при отсутствии денежных средств на аккаунте. Проверьте состояние баланса на аккаунте.
Invalid Source Address (0x0000000A)
Ошибка ESME_RINVSRCADR возникает при
отправке сообщения с некорректным именем
отправителя. Возможно, вам не разрешено
отправлять сообщения с данным именем, либо
по требованию операторов имя отправителя
заблокировано на нашей платформе. Убедитесь,
что имя отправителя соответствует
требованиям и рекомендациям, описанным в
разделе «Адрес отправителя».
Проверьте, что оно не содержит лишних
пробелов в начале и в конце. Если имя
корректно, то свяжитесь со своим менеджером
для прояснения ситуации. Контакты менеджера,
а также удобная форма обратной связи
находятся в вашем личном кабинете.
Invalid Dest Address (0x0000000B)
Ошибка ESME_RINVDSTADR возникает при отправке сообщения на некорректный номер телефона. Возможно, на вашем аккаунте запрещена отправка сообщений на данное направление, либо по требованию операторов номер телефона заблокирован на нашей платформе. Проверьте, что номер указан в международном формате так, как описано в разделе «Формат номера телефона». Вместо прямых городских номеров должны быть указаны их федеральные аналоги. Убедитесь, что номер телефона принадлежит оператору, отправка на который прописана в вашем договоре. Принадлежность к оператору можно определить в личном кабинете на странице определения оператора.
Для передачи склеенных сообщений (сообщений из нескольких частей) следует использовать UDH-склейку (User Data Header). Это единственно возможный способ передачи длинных сообщений в GSM сетях. UDH является частью тела сообщения (поле short_message из обязательных параметорв). Существует два вида склейки, которые различаются сигнатурой и размером reference number.
Наиболее часто используемый вариант — reference number размером 1 байт (в примере тело сообщения в hex форме):
| длина UDH | сигнатура (IEI) | длина IE | reference number | общее кол-во частей | текущая часть (отсчет идёт от 1) | текст части сообщения |
|---|---|---|---|---|---|---|
| 05 | 00 | 03 | D4 | 03 | 02 | 04 3F 04 40 04 38 04 32 04 35 04 42 00 20 00 3A 00 29 … |
Другой вариант — reference number размером 2 байта (в примере тело сообщения в hex форме):
| длина UDH | сигнатура (IEI) | длина IE | reference number | общее кол-во частей | текущая часть (отсчет идёт от 1) | текст части сообщения |
|---|---|---|---|---|---|---|
| 06 | 08 | 04 | A7 D4 | 03 | 02 | 04 3F 04 40 04 38 04 32 04 35 04 42 00 20 00 3A 00 29 … |
При применении 2-х байтовой склейки
значительно снижается вероятность
неправильной склейки сообщений на телефоне
абонента. Под неправильной склейкой
подразумевается ситуация, когда, например,
первая половина текста передана верно, а
вторая - взята из старого, ранее
отправленного СМС-сообщения. Такое может
проиходить из-за малого количества вариантов
reference number.
Для того чтобы указать наличие UDH в теле
сообщения, необходимо взвести бит UDHI
Indicator (седьмой бит) в esm_class.
Например, типичное значение esm_class для
склеенных сообщений — 0x40.
Пример СМС из двух частей:
— первая часть
— вторая часть
Из-за того, что невозможно заранее
предугадать маршрут доставки каждого
отдельно взятого сообщения, используется
параметр reference number (в примере это
AF). Он позволяет принимающему аппарату
определить, что поступившие части относятся
к одному и тому же склеенному сообщению.
Последние два октета позволяют аппарату
склеить сообщения в правильном порядке и
определить общее количество частей сообщения
для корректной индикации о неполном
сообщении.
Правила индикации зависят от конкретной
модели телефона. Наиболее часто встречаются
два алгоритма индикации:
Телефон копит во внутреннем буфере все части
сообщения и отображает его на своем экране
только после получения всех частей.
Телефон сразу начинает отображать
поступившие части, а в списке сообщений
неполное сообщение отмечается особым
значком.
Из-за того, что UDH является частью
сообщения, максимальный размер текста
уменьшается на длину UDH. Например, для
сообщений в семибитной кодировке,
максимальныая длина текста — 153 символа, а
для UCS-2 — 67.
При использовании склейки с 2-х байтовым
reference number максимальная длина текста
уменьшается до 152 символов в семибитной
кодировке и до 66 символов в UCS-2.
Отправка сообщений на телефон абонента
осуществляется путем обращения к веб-сервису
и вызовом необходимых методов. Описание
типов и поддерживаемых методов представлено
в WSDL.
WSDL для сервиса находится по адресу: https://soap.smstraffic.ru/soap.wsdl.
Адрес сервера: https://soap.smstraffic.ru/soap.php
.
Поведение параметров, описанных в WSDL,
соответствует поведению одноимённых
параметров HTTP(S) протокола.
В WSDL представлены следующие
методы:
SendBulkSms — отправка одного
сообщения на несколько номеров одним
запросом;
SendIndividualSms — отправка
индивидуального сообщения нескольким
получателям;
GetSmsStatus — запрос статуса
доставки;
GetBalance — запрос баланса учётной
записи.
Для отправки сообщений предназначены методы
SendBulkSms и
SendIndividualSms.
В запросах должен присутствовать элемент Options - в нем указываются логин и пароль к аккаунту, а также набор необязательных опций:
| Элемент | Описание |
|---|---|
| Login | Ваш логин в системе SMS Traffic. Этот элемент обязателен. |
| Password | Пароль от вашего аккаунта. Этот элемент обязателен. |
| Originator | Имя отправителя. Если не указано, берётся имя отправителя по умолчанию из настроек аккаунта. Более подробно описано в параметре originator HTTP(S) протокола. |
| WantSmsIds | Если установлен в true, то в ответ вернутся идентификаторы, присвоенные каждому сообщению. Значение по умолчанию — false. Более подробно описано в параметре want_sms_ids HTTP(S) протокола. |
| IgnorePhoneFormat | Отключает проверку коррeктности номера телефона. Значение по умолчанию — false. Более подробно описано в параметре ignore_phone_format HTTP(S) протокола. |
| LatinEncoding | Если установлено в true, то предполагается отправка СМС в латинице или транслите. Русские символы будут транслитерироваться в латиницу. Максимальное количество символов в одном СМС-сообщении — 160 (153 для склеенного сообщения). Если установлено в false, то сообщение будет отправлено в кодировке UCS-2, при этом максимальное количество символов в одном СМС-сообщении — 70 (67 для склеенного сообщения). Значение по умолчанию — false. |
| Timeout | Время жизни СМС (в секундах). Значение по умолчанию — 86400 (24 часа). Более подробно описано в параметре timeout HTTP(S) протокола. |
| Flash | Отправлять сообщение как flash-SMS. Значение по умолчанию — false. Более подробно описано в параметре flash HTTP(S) протокола. |
| StartDate | Дата и время отправки СМС. По умолчанию сообщения отправляются немедленно. Более подробно описано в параметре start_date HTTP(S) протокола. |
| MaxParts | Максимальное количество частей, на которые при необходимости будет разбит текст сообщения. Значение по умолчанию — 255. Более подробно описано в параметре max_parts HTTP(S) протокола. |
| TwoByteConcat | Параметр позволяет указать способ UDH-склейки. Значение по умолчанию — false. Более подробно описано в параметре two_byte_concat HTTP(S) протокола. |
В ответе каждого метода присутствует элемент Status. Он содержит статус обработки всего запроса.
| Элемент | Описание |
|---|---|
| IsSuccess | true, если запрос обработан успешно и false - в противном случае. |
| Code | Код ошибки. Если указан 0, то запрос был обработан без ошибок. Возвращаемые в этом элементе значения соответствуют «Кодам ошибок, возвращаемых по протоколу HTTP(S)» |
| Description | Текстовое описание ошибки. Значение этого элемента полезно записать в логи. |
Если элемент WantSmsIds был установлен в true, то для каждого абонента в ответе также будет присутствовать элемент MessageInfo со структурой, приведенной ниже:
| Элемент | Описание |
|---|---|
| Phone | Номер телефона абонента |
| ProcessResult | Текстовый статус обработки сообщения |
| SmsId | Идентификатор СМС-сообщения (в случае, если ProcessResult=Accepted) |
В свою очередь, элемент ProcessResult может содержать следующие значения:
| Элемент | Описание |
|---|---|
| Accepted | Сообщение было принято и обработано. |
| Unroutable | Сообщение было принято, но не обработано (например, по причине отсутствия роутинга на оператора абонента). |
Метод SendBulkSms позволяет отправить одинаковый текст сообщения на список номеров телефонов.
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<BulkSms>
<Options>
<Login>example</Login>
<Password>p@ssw0rd!</Password>
</Options>
<Message>hello world</Message>
<Phone>78003336655</Phone>
<Phone>78002224477</Phone>
<Phone>78001114444</Phone>
</BulkSms>
</env:Body>
</env:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<SmsResponse>
<Status>
<IsSuccess>true</IsSuccess>
<Code>0</Code>
<Description>queued 3 messages</Description>
</Status>
</SmsResponse>
</env:Body>
</env:Envelope>
Метод SendIndividualSms позволяет отправить каждому получателю своё индивидуальное сообщение.
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<IndividualSms>
<Options>
<Login>example</Login>
<Password>p@ssw0rd!</Password>
</Options>
<Pairs>
<Phone>78003336655</Phone>
<Message>individual</Message>
</Pairs> <Pairs>
<Phone>78002224477</Phone>
<Message>message</Message>
</Pairs>
<Pairs>
<Phone>78001114444</Phone>
<Message>by phone</Message>
</Pairs>
</IndividualSms>
</env:Body>
</env:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<SmsResponse>
<Status>
<IsSuccess>true</IsSuccess>
<Code>0</Code>
<Description>queued 3 messages</Description>
</Status>
</SmsResponse>
</env:Body>
</env:Envelope>
Метод GetSmsStatus возвращает статус доставки сообщения по sms_id.
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<StatusRequest>
<Login>example</Login>
<Password>p@ssw0rd!</Password>
<SmsId>27371658818</SmsId>
<SmsId>1</SmsId>
</StatusRequest>
</env:Body>
</env:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<StatusResponse>
<Status>
<IsSuccess>true</IsSuccess>
<Code>0</Code>
<Description></Description>
</Status>
<SmsInfo>
<SmsId>27374567618</SmsId>
<Error></Error>
<SubmissionDate>2020-05-09T15:19:00</SubmissionDate>
<SendDate>2020-05-09T15:19:00</SendDate>
<LastStatusChangeDate>2020-05-09T15:19:00</LastStatusChangeDate>
<Status>Expired</Status> </SmsInfo>
<SmsInfo>
<SmsId>1</SmsId>
<Error>no such message or this message does not belong to you</Error>
</SmsInfo>
</StatusResponse>
</env:Body>
</env:Envelope>
Метод GetBalance возвращает текущий баланс аккаунта.
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
. xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<BalanceRequest>
<Login>texample</Login>
<Password>p@ssw0rd!</Password>
</BalanceRequest>
</env:Body>
</env:Envelope>
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
xmlns="http://soap.smstraffic.ru/soap.wsdl">
<env:Body>
<BalanceResponse>
<Status>
<IsSuccess>true</IsSuccess>
<Code>0</Code>
<Description></Description>
</Status>
<Amount>52782.35</Amount>
</BalanceResponse>
</env:Body>
</env:Envelope>
Для того чтобы отправить СМС на телефон
абонента посредством электронной почты,
необходимо написать (или ваша программа
должна сгенерировать) письмо на адрес: login@corp.smsmail.ru,
где login – имя, выданное вам после
регистрации. Номер телефона следует указать
в теме письма (subject), а само сообщение –
в теле письма.
Сообщение можно написать русскими буквами -
в этом случае, в зависимости от настроек
вашего аккаунта, система либо сама
перекодирует его в транслит (эта настройка
действует по умолчанию), либо отправит в
кодировке UCS-2.
Для изменения этой настройки воспользуйтесь
страницей настроек (lk.smstraffic.ru/options.php)
в своем аккаунте.
Пример:
From: yourname@yourdomain.ru
To: yourlogin@corp.smsmail.ru
Subject: 79161234567
Vam neobhodimo oplatit’ schet $17.65. Dlya
spravok zvonite 1234567.
Телефон абонента можно указать одним из двух
способов:
В теме письма - в этом случае почта
отправляется на адрес типа login@corp.smsmail.ru,
как описано выше.
В адресе - разделяя номер телефона и логин
точкой. Например, 79161112233.login@corp.smsmail.ru.
Пример:
From: yourname@yourdomain.ru
To: 79161234567.yourlogin@corp.smsmail.ru
Subject: ne imeyet znacheniya
Vam neobhodimo oplatit’ schet $17.65. Dlya
spravok zvonite 1234567.
Обратите внимание - SMTP v1 не предназначен для массовых рассылок. Для массовых рассылок используйте протоколы SMPP, HTTP(S) или личный кабинет. Рекомендуемое ограничение — не более 100 писем в минуту.
По желанию клиента можно ограничить отсылку
таких писем с конкретного SMTP сервера
(рекомендуется). Аутентификация
осуществляется по заголовкам Received. Для
того чтобы установить защиту, необходимо
отправить тестовое электронное сообщение на
tech.support@smstraffic.ru
через тот SMTP сервер, который будет
использоваться для отправки рабочих
сообщений. В теле письма укажите, для какого
аккаунта вы хотите установить защиту.
Также, по желанию клиента можно ограничить
список телефонов, на которые возможна
отправка. Список можно задать на странице lk.smstraffic.ru/options.php.
По умолчанию принимаются сообщения на любые
телефоны.
Мы настоятельно рекомендум использовать хотя
бы один тип защиты — либо по заголовкам
SMTP, либо с помощью ограничения списка
получателей. Возможно также полностью
запретить прием сообщений через email и
пользоваться только протоколами HTTP(S) или
SMPP. Установить такой запрет можно на
странице lk.smstraffic.ru/options.php.
Для всех новых аккаунтов отправка по email
описанным выше способом по умолчанию
отключена.
При отправке по email невозможно динамически
задавать имя или телефон отправителя (поле
originator при передаче по HTTP), поэтому в
качестве отправителя всегда будет
подставлено одно и то же значение, по
умолчанию. Это значение можно исправить на
странице настроек вашего личного кабинета.
Если необходимо динамически изменять
отправителя, рекомендуем использовать
протоколы HTTP(S), SMPP или SMTP вариант 2.
Существует другой способ отправлять СМС-сообщения через email и при этом пользоваться практически всеми возможностями, которые предоставляет протокол HTTP(S). Отправьте email на адрес multi@smtp2.smsmail.ru. В теле сообщения перечислите поля и их значения (согласно описанию протокола HTTP), разделенные двоеточием. Каждая пара "поле: значение" должна быть на отдельной строке и отделена от соседних пар по крайней мере одной пустой строкой. Тема сообщения не имеет значения.
Пример:
From: yourname@yourdomain.ru
To: multi@smtp2.smsmail.ru
Subject: ne imeyet znacheniya
login: yourlogin
password: yourpass
phones: 79161234567
message: Vam neobhodimo oplatit’ schet
$17.65. Dlya spravok zvonite 1234567.
originator: MyCompany
Ограничение: в поле message нельзя использовать два символа перевода строки подряд (такое сочетание символов будет воспринято как разделитель полей). Дополнительно можно использовать специальный параметр reply_to_email со значением 1, как в примере ниже:
From: yourname@yourdomain.ru
To: multi@smtp2.smsmail.ru
Subject: ne imeyet znacheniya
login: yourlogin
password: yourpass
phones: 79161234567
message: Vam neobhodimo oplatit’ schet
$17.65. Dlya spravok zvonite 1234567.
originator: MyCompany
reply_to_email: 1
В этом случае на email-адрес отправителя будет выслан ответ, такой же как при использовании протокола HTTP(S).
<?xml version="1.0"?>
<reply>
<result>OK</result>
<code>0</code>
<description>queued 1 messages</description>
<message_infos>
<message_info>
<phone>79161234567</phone>
<sms_id>1014190631</sms_id>
</message_info>
</message_infos>
</reply>
Обратите внимание - данный метод не предназначен для массовых рассылок. Для массовых рассылок используйте протоколы SMPP, HTTP(S) или личный кабинет. Рекомендуемое ограничение — не более 100 писем в минуту и не более 10000 СМС в одном письме.
| Код | Описание на английском | Описание на русском |
|---|---|---|
| 1 | The subscriber is absent or out of a coverage | Абонент недоступен или отключен. |
| 2 | Call barred service activated | У абонента включен запрет на прием сообщений или абонента заблокировал оператор (возможно, в связи с отрицательным балансом). |
| 3 | Unknown subscriber | Номер телефона не существует или не обслуживается. |
| 4 | Memory capacity exceeded | Память телефона абонента переполнена. |
| 5 | Equipment protocol error | Аппаратная ошибка телефона абонента. |
| 6 | Teleservice not provisioned | Сервис коротких сообщений не предоставляется. |
| 7 | Facility not supported | Аппарат абонента не поддерживает прием коротких сообщений. |
| 8 | Subscriber is busy | Аппарат абонента занят операцией, препятствующей получению короткого сообщения. |
| 9 | Roaming restrictions | Абонент находится в роуминге. |
| 10 | Timeout | Время ожидания ответа от SMSC абонента истекло. |
| 11 | SS7 routing error | Внутренняя ошибка маршрутизации. |
| 12 | Internal system failure | Внутренняя ошибка системы. |
| 13 | SMSC failure | Ошибка коммутатора (внутренняя ошибка передачи данных). |
| 14 | Illegal subscriber | Блокировка оператором или незарегистрированный пользователь. |
| 15 | Message queue full | Очередь сообщений для абонента со стороны оператора переполнена. |
| 16 | Invalid source address | Некорректное имя отправителя |
| 17 | Unroutable direction | Сообщение не маршрутизируемо. |
Если у вас подключена услуга "Входящий номер", то вы можете принимать СМС-сообщения от ваших сотрудников и клиентов. Суть услуги в том, что абонент отправляет СМС на специальный номер, настроенный в СМС-центре, после чего это сообщение пересылается вам либо по email, либо на ваше HTTP-приложение, либо по SMPP-протоколу.
Для получения входящих сообщений по email, пришлите нам адрес, на который вы хотите получать входящие, и мы пропишем этот адрес в настройках. В дальнейшем вы сможете изменить этот адрес на странице настроек lk.smstraffic.ru/options.php
Для пересылки входящих сообщений на ваше
HTTP-приложение и их автоматической
обработки, вам необходимо установить на
своем веб-сервере скрипт, который будет
принимать методом GET или POST от нашего
сервера следующие данные:
phone – номер телефона абонента;
message – текст сообщения (по
умолчанию кодировка Windows-1251);
sms_id – уникальный идентификатор
сообщения. Передается для исключения дублей:
если sms_id повторяется, то необходимо дать
тот же ответ, что и при первом запросе.
На успешный запрос нашего сервера ваш скрипт
должен вернуть ответ ОК (response 200).
Вы можете самостоятельно редактировать
параметры скрипта на странице настроек: lk.smstraffic.ru/options.php.
В случае передачи данных POST-запросом,
достаточно указать путь к вашему скрипту. В
случае передачи данных GET-запросом,
необходимо придерживаться шаблона следующего
вида:
Путь_к_вашему_скрипту?message={{message}}&phone={{phone}}&sms_id={{sms_id}}
Также вы можете прислать нам URL вашего
скрипта, чтобы мы настроили его вызов при
поступлении любого входящего сообщения.
Для пересылки входящих (МО) сообщений по протоколу SMPP необходимо в настройках входящего номера в личном кабинете выбрать опцию "SMPP" (установлена по умолчанию). Входящие сообщения будут поступать только в режимах подключения Receiver и Transceiver.
Для получения списка входящих сообщений
вызывается скрипт api.smstraffic.ru/multi.php
с параметрами:
login - ваш логин
password - ваш пароль
operation=incoming
Необязательные параметры:
from_date- дата, начиная с которой
необходимо получить список. Формат:
«ГГГГ-ММ-ДД» или «ГГГГ-ММ-ДД ЧЧ:ММ:СС» .
Время московское.
from_phone - телефон, с которого
приходили сообщения;
count - максимальное количество
сообщений, выдаваемое за один запрос;
want_sms_ids=1 — в ответный XML
включается идентификатор СМС (по умолчанию -
не включается).
<?xml version="1.0" ?>
<reply>
<count>125</count>
<messages>
<message>
<from_phone>79031234567</from_phone>
<text>sms message text</text>
<send_date>2020-05-09 01:12:59</send_date>
<delivery_date>2020-05-09 01:13:05</delivery_date>
<sms_id>5269156759</sms_id>
</message>
...
<message>
<from_phone>79037654321</from_phone>
<text>sms message</text>
<send_date>2020-05-09 06:02:13</send_date>
<delivery_date>2020-05-09 06:02:18</delivery_date>
<sms_id>5269156775</sms_id>
</message>
</messages>
</reply>
Срок хранения и выдачи сообщений по данному запросу не должен превышать двух дней. Если для вас важна оперативность получения сообщений, используйте возможность автоматического уведомления по HTTP протоколу, см. раздел Пересылка входящих сообщений на HTTP(S).
Для получения сообщений, поступивших на ваш
короткий номер, необходимо установить на
своем веб-сервере скрипт, который будет
принимать методом GET или POST следующие
параметры:
phone – телефонный номер абонента;
message – текст его запроса (по
умолчанию, кодировка Windows-1251);
shortcode – короткий номер;
password – пароль для защиты от
несанкционированного использования вашего
скрипта;
sms_id – уникальный идентификатор
сообщения. В случае повторного поступления
запроса с одним и тем же sms_id
необходимо дать абоненту точно такой же
ответ. Пришлите нам URL вашего скрипта, и мы
настроим его вызов после каждого поступления
запроса на ваш короткий номер. Скрипт должен
обработать запрос и дать ответ, который мы
без изменений перешлем абоненту по СМС.
Ответ может содержать, например, запрошенную
текстовую информацию, подтверждение принятия
запроса или ссылку на wap-сайт, по которой
абонент может скачать запрошенный контент.
Ответ не должен содержать никакого
форматирования. Вы можете самостоятельно
редактировать параметры вызова скрипта на
странице настроек https://lk.smstraffic.ru/options.php.
Необходимо придерживаться шаблона следующего
вида:
Путь_к_вашему_скрипту?message={{message}}&phone={{phone}}&sms_id={{sms_id}}&shortcode={{shortcode}}.
Пример PHP скрипта для обработки сообщений,
поступивших на короткий номер, можно найти в
папке shortcode.
| Дата изменения | Версия документа | Описание |
|---|---|---|
| 2026-05-28 | 2.4 | Добавлено описание метода выгрузки журнала событий личного кабинета. |
| 2025-12-18 | 2.3 | Добавлен блок HTTP API v2. Удалён параметр gap в HTTP API, SOAP. |
| 2025-02-20 | 2.2.3 | Минорное изменение. |
| 2024-04-23 | 2.2.2 | Минорное изменение. |
| 2023-08-21 | 2.2.1 | Минорное изменение. В связи с обновлением интерфейса личного кабинета. |
| 2023-07-06 | 2.2 | Новая операция для HTTP протокола: установка статуса «Проверено». |
| 2021-09-29 | 2.1.4 | Минорное изменение. Исправлена/добавлена формулировка типичных ошибок (Invalid Password, Bind Failed). |
| 2021-06-17 | 2.1.3 | Минорное изменение. Дополнение кода ошибки канала СМС (код 17). |
| 2021-05-24 | 2.1.2 | Минорные изменения. Убрана неактуальная информация (о длине пароля). |
| 2020-05-09 | 2.1.1 | Минорные изменения. Убрана неактуальная информация. |
| 2019-09-18 | 2.1. | Изменен формат документации. Добавлены перекрестные ссылки. |
| 2019-03-28 | 1.90 | Изменены названия статусов для русской версии ЛК. |
| 2019-02-19 | 1.89 | Дополнена документация по SOAP протоколу. |
| 2017-03-21 | 1.88 | Добавлен параметр error_code для автоматической передачи статусов СМС. |
| 2016-12-07 | 1.87 | Добавлены коды ошибок 503 и 504 для протокола HTTP(S). |
| 2016-07-19 | 1.86 | Добавлен код ошибки 16 для протокола SMPP. |
| 2015-12-10 | 1.85 | Переработана структура документа. Добавлены новые разделы, расширены старые. Новый протокол SOAP. Изменены адреса для доступа к HTTP(S) API. |
| 2012-09-25 | 1.84 | Добавлено подробное описание функционала автоматического получения статусов. |
| 2012-06-08 | 1.81 | Добавлен параметр want_sms_ids для operation=incoming при работе по протоколу HTTP(S). |
| 2012-03-23 | 1.80 | Добавлено подробное описание особенностей работы по SMPP протоколу. |
| 2012-01-22 | 1.77 | Сервер server2.smstraffic.ru указан как основной при работе по протоколу SMPP. |
| 2011-12-29 | 1.76 | Добавлены несколько новых кодов ошибок при работе по протоколу HTTP(S). |
| 2011-10-04 | 1.74 | Добавлен параметр timeout в протокол HTTP(S). |
| 2011-09-27 | 1.72 | Описание ограничений при работе с протоколами SMTP, добавлен код ошибки 440 для работы по протоколу HTTP(S). |
| 2011-08-12 | 1.69 | Коррекция описания работы с параметром want_sms_ids для протокола HTTP(S). |
| 2010-12-14 | 1.63 | IP адреса заменены на адреса хостов для усиления отказоустойчивости. |
| 2010-01-11 | 1.55 | Добавлен новый список кодов ошибок для протокола HTTP(S). |
| 2009-07-06 | 1.50 | Дополнено описание протокола SMPP. |
| 2009-05-14 | 1.48 | Добавлен протокол SOAP. |
| 2009-03-31 | 1.47 | Изменены IP адреса для работы по SMPP протоколу. |
| 2008-12-02 | 1.45 | Добавлено значение rus=5 в протокол HTTP(S). |
| 2007-11-23 | 1.39 | Добавлен параметр flash в протокол HTTP(S). |
| 2007-10-28 | 1.37 | Добавлены примеры использования протоколов. |
| 2007-07-18 | 1.35 | В протоколе SMTP v.2. изменен адрес назначения на multi@smtp2.smsmail.ru . |
| 2007-06-8 | 1.31 | Добавлен параметр start_date в протокол HTTP(S). |
| 2007-05-29 | 1.28 | Добавлено описание дублирующего сервера. |
| 2006-10-24 | 1.19 | Добавлена возможность запрашивать список входящих сообщений по протоколу HTTP(S). |
| 2006-08-15 | 1.18 | Добавлена возможность запрашивать состояние счета по протоколу HTTP(S). |
| 2006-08-08 | 1.17 | Добавлен параметр wap_push_url в протокол HTTP(S) . |
| 2006-06-30 | 1.13 | Уточнено описание параметра originator протокола HTTP(S). Добавлен новый протокол — SMTP v2. |
| 2006-06-28 | 1.9 | Добавлен параметр gap в протокол HTTP(S). |
| 2006-03-23 | 1.6 | Добавлены параметры max_parts и UDH в протокол HTTP(S). |
| 2005-04-18 | 1.5 | Добавлена возможность передачи статуса сообщения методом вызова стороннего скрипта. |
| 2005-02-21 | 1.3 | Добавлены дополнительные переменные для протокола HTTP(S). |
| 2004-08-02 | 1.1 | Документ создан. |
Москва,
2-й Южнопортовый проезд, д. 20А, с. 4
+7 (495) 787-35-95
Минск,
220007, ул. Толстого, 10
Алматы,
улица Нурлы жол 16, 1 этаж
+7 (727) 347-09-18
Ташкент,
Яккасарайский район, ул. Абдулла Каххор, дом 1
+998 91 008 83 40