Личный кабинет

API SMS

Адрес отправителя

При отправке СМС в качестве адреса отправителя можно подставить число или альфанумерическую (буквенно-цифровую) последовательность. При этом максимальная длина числового отправителя ограничена 15 цифрами, а альфанумерического - 11 символами. Это ограничение стандарта GSM. В сетях других стандартов могут быть другие ограничения. Например, в CDMA альфанумерические отправители недоступны.

Помимо базовых ограничений стандарта, операторы могут накладывать дополнительные ограничения на длину и содержание имени отправителя. Например: запрет буквенных имен, требование предварительной активации имени отправителя у оператора, запрет использования несуществующих номеров, запрет использования номеров из определённого диапазона и т.п.

На российские номера телефонов запрещена отправка сообщений с цифровым отправителем. Принимаются только альфанумерические.

Большинство операторов создают и используют чёрные списки имён отправителей. В них заносятся имена, замеченные в спам-рассылках, мошенничестве и иных нарушениях, предусмотренных законодательством РФ. У SMS Traffic тоже есть подобный список. Как и чёрные списки операторов, наш список не публикуется и не предоставляется по запросу, так как является коммерческой тайной организации.

Если в сеть оператора поступает сообщение с именем, не подходящим под налагаемые ограничения, наиболее типичная реакция — отказ в передаче (хотя все зависит от конкретного оператора, а в некоторых случаях - даже от настроек каждого отдельного СМС-центра в пределах одного оператора). У зарубежных операторов встречается практика передачи ложно-положительных статусов доставки.

Формально, в адресе отправителя можно использовать любой символ из основной таблицы кодировки «default GSM alphabet» (см. GSM 03.38). При этом, если в тексте встречаются символы из расширенной таблицы, они будут заменены на нашей стороне на похожие по начертанию символы из основной таблицы.
Некоторые СМС-центры и мобильные телефоны поддерживают не весь диапазон символов GSM кодировки в имени отправителя. Поэтому мы рекомендуем пользоваться символами из набора: "A-Z", "a-z", "0-9", "-", "_", ".".

Надёжность и отказоустойчивость

Для обеспечения отказоустойчивости и надежности сервисов, мы предоставляем два физически распределённых узла. В случае проблем с соединением с основным узлом, рекомендуется направлять сообщения на дублирующий.

ПротоколОсновнойДублирующий

HTTP (S)

https://api.smstraffic.ru/multi.php

https://api2.smstraffic.ru/multi.php

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(S) протокол

Отправка сообщений на телефон абонента осуществляется через вызов веб-скрипта 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.

gap

Число с плавающей точкой

Интервал между рассылаемыми сообщениями (в секундах). Например: 1, 0.5, 0.05. C помощью параметра gap вы можете ускорять или замедлять рассылку при единовременной отправке нескольких сообщений. Следует отметить, что каждая отдельная часть длинного сообщения считается отдельным СМС-сообщением. Значение по умолчанию — 1. Минимально возможное значение параметра — 0.05.

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 минут с момента поступления запроса. Например, указав параметр gap=1, а в параметре phones — 301 номер телефона, мы получим, что 301-е сообщение должно уйти через 301 секунду, то есть более чем через 5 минут. В этом случае вернется ошибка 418 и ни одно сообщение не будет отправлено. Идентификатор представлен целым беззнаковым числом размером 8 байт. Максимальное число сообщений в одном запросе с использованием данного параметра не должно превышать 6000 при указании минимального gap.
Значение по умолчанию — 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.

Примеры ответных сообщений

В качестве ответа скрипт отдает 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>ERROR</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.

Коды ошибок, возвращаемых по протоколу HTTP(S)

КодОписание

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 протокол

Отправку сообщений, получение информации о статусе доставки, а также получение входящих сообщений от абонентов можно осуществлять через 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).

Table 1. Параметры для подключения к нашему СМС-центру (BIND)

ПараметрОписание

Хост

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 — дублирующим.

Table 2. Параметры при отправке сообщения (SUBMIT_SM)

ПараметрОписание

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

Не поддерживается

Table 3. Формат поля short_message отчёта о доставке (DELIVER_SM)

FieldSize (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-склейка

Для передачи склеенных сообщений (сообщений из нескольких частей) следует использовать UDH-склейку (User Data Header). Это единственно возможный способ передачи длинных сообщений в GSM сетях. UDH является частью тела сообщения (поле short_message из обязательных параметорв). Существует два вида склейки, которые различаются сигнатурой и размером reference number.

Наиболее часто используемый вариант — reference number размером 1 байт (в примере тело сообщения в hex форме):

05 00 03 D4 03 02 04 3F 04 40 04 38 04 32 04 35 04 42 00 20 00 3A 00 29 …

длина UDHсигнатура (IEI)длина IEreference 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 форме):

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 …

длина UDHсигнатура (IEI)длина IEreference 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.

Пример СМС из двух частей:

05 00 03 AF 02 01 … тело сообщения … — первая часть
05 00 03 AF 02 02 … тело сообщения … — вторая часть

Из-за того, что невозможно заранее предугадать маршрут доставки каждого отдельно взятого сообщения, используется параметр reference number (в примере это AF). Он позволяет принимающему аппарату определить, что поступившие части относятся к одному и тому же склеенному сообщению. Последние два октета позволяют аппарату склеить сообщения в правильном порядке и определить общее количество частей сообщения для корректной индикации о неполном сообщении.

Правила индикации зависят от конкретной модели телефона. Наиболее часто встречаются два алгоритма индикации:

  1. Телефон копит во внутреннем буфере все части сообщения и отображает его на своем экране только после получения всех частей.

  2. Телефон сразу начинает отображать поступившие части, а в списке сообщений неполное сообщение отмечается особым значком.

Из-за того, что UDH является частью сообщения, максимальный размер текста уменьшается на длину UDH. Например, для сообщений в семибитной кодировке, максимальныая длина текста — 153 символа, а для UCS-2 — 67.

При использовании склейки с 2-х байтовым reference number максимальная длина текста уменьшается до 152 символов в семибитной кодировке и до 66 символов в UCS-2.

SOAP протокол

Отправка сообщений на телефон абонента осуществляется путем обращения к веб-сервису и вызовом необходимых методов. Описание типов и поддерживаемых методов представлено в 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.

Gap

Интервал между рассылаемыми сообщениями (в миллисекундах). Значение по умолчанию — 1000. Минимальное значение — 50. Более подробно описано в параметре gap HTTP(S) протокола.

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

Метод 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

Метод 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

Метод 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

Метод 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>

SMTP протокол (вариант 1)

Для того чтобы отправить СМС на телефон абонента посредством электронной почты, необходимо написать (или ваша программа должна сгенерировать) письмо на адрес: 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.

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 СМС в одном письме.

Список кодов ошибок в поле err отчёта о доставке

КодОписание на английскомОписание на русском

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

Для получения входящих сообщений по email, пришлите нам адрес, на который вы хотите получать входящие, и мы пропишем этот адрес в настройках. В дальнейшем вы сможете изменить этот адрес на странице настроек lk.smstraffic.ru/options.php.

Пересылка входящих сообщений на HTTP (S)-скрипт

Для пересылки входящих сообщений на ваше 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 необходимо в настройках входящего номера в личном кабинете выбрать опцию "SMPP" (установлена по умолчанию). Входящие сообщения будут поступать только в режимах подключения Receiver и Transceiver.

Запрос списка входящих сообщений

Для получения списка входящих сообщений вызывается скрипт api.smstraffic.ru/multi.php с параметрами:

  • login - ваш логин

  • password - ваш пароль

  • operation=incoming

Необязательные параметры:

  • from_date- дата, начиная с которой необходимо получить список. Формат: «ГГГГ-ММ-ДД» или «ГГГГ-ММ-ДД ЧЧ:ММ:СС» . Время московское.

  • from_phone - телефон, с которого приходили сообщения;

  • count - максимальное количество сообщений, выдаваемое за один запрос;

  • want_sms_ids=1 — в ответный XML включается идентификатор СМС (по умолчанию - не включается).

В качестве ответа скрипт отдает 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.

История версий

Дата измененияВерсия документаОписание

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

Документ создан.

×
Закажите обратный звонок, и мы перезвоним вам сами и ответим на все вопросы
Закажите обратный звонок, и мы перезвоним вам сами и ответим на все вопросы