HTTP/HTTPS протокол

Содержание

  1. Отправка сообщения
  2. Виртуальная отправка (режим тестирования)
  3. Проверка статуса
  4. Проверка состояния баланса
  5. Управление контактами
  6. Получение информации об операторе
  7. Получение истории отправленных сообщений
  8. Получение входящих сообщений
  9. Получение статистики
  10. Получение статистики по оператору Мегафон
  11. Запрос тарифов
  12. Редактирование аккаунта у оператора Мегафон
  13. Выгрузка портированных номеров
  14. Подключение выделенных номеров для приема сообщений
  15. Управление именами отправителей (Sender ID)
  16. Передача статусов и сообщений на обработчик Клиента
  17. Подключение антиспам проверки (captcha) к сайту

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

Для отправки SMS необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/send.php?login=<login>&psw=<password>&phones=<phones>&mes=<message>
Для получения стоимости SMS необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/send.php?login=<login>&psw=<password>&phones=<phones>&mes=<message>&cost=1
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
phonesНомер или разделенный запятой или точкой с запятой список номеров мобильных телефонов в международном формате, на которые отправляется сообщение. Номера могут передаваться без знака "+". Если номер передан без знака "+", то он может быть исправлен автоматическим форматированием и приведен к правильному международному формату. Таким образом, некоторые ошибки при вводе номеров телефонов могут быть исправлены автоматически. Для отключения автоисправления передайте номер со знаком "+".
Также можно отправлять сообщение на группу номеров, указав специальный код "G<номер группы>". Сообщение будет отправлено на все номера, принадлежащие данной группе. Для e-mail сообщения передается список e-mail адресов получателей.
mesТекст отправляемого сообщения. Максимальный размер – 800 символов. Сообщение при необходимости будет разбито на несколько SMS, отправленных абоненту и оплаченных по отдельности. Размер одного SMS – 160 символов в латинице или 70 символов в кириллице. При разбивке сообщения на несколько SMS в каждую часть добавляется заголовок для объединения частей в одно сообщение на телефоне получателя, и максимальная длина становится 67 для кириллицы и 153 для латинских букв. В текст сообщения можно добавлять комментарии, предназначенные для просмотра отправителем истории в личном кабинете.
Дополнительные параметры
idИдентификатор сообщения. Назначается Клиентом. Служит для дальнейшей идентификации сообщения. Если не указывать, то будет назначен автоматически. Не обязательно уникален. В случае 2-х одинаковых идентификаторов по запросу статуса будет возвращен статус последнего сообщения. Идентификатор представляет собой 32-битное число в диапазоне от 1 до 2147483647, либо строку длиной до 40 символов, состоящую из латинских букв, цифр и символов ".-_".
senderИмя отправителя, отображаемое в телефоне получателя. Разрешены английские буквы, цифры, пробел и некоторые символы. Длина – 11 символов или 15 цифр. Все имена регистрируются в личном кабинете. Для отключения Sender ID по умолчанию необходимо в качестве имени передать пустую строку.
translitПризнак того, что сообщение необходимо перевести в транслит.
0 (по умолчанию) – не переводить в транслит.
1 – перевести в транслит в виде "translit".
2 – перевести в транслит в виде "mpaHc/Ium".
tinyurlАвтоматически сокращать ссылки в сообщениях. Позволяет заменять ссылки в тексте сообщения на короткие для сокращения длины, а также для отслеживания количества переходов на этой странице.
0 (по умолчанию) – оставить ссылки в тексте сообщения без изменений.
1 – сократить ссылки.
timeВремя отправки SMS-сообщения абоненту.
Форматы:
  1. DDMMYYhhmm или DD.MM.YY hh:mm.
  2. h1-h2. Задает диапазон времени в часах. Если текущее время меньше h1, то SMS-сообщение будет отправлено абоненту при наступлении времени h1, если текущее время попадает в промежуток от h1 до h2, то сообщение будет отправлено немедленно, в другом случае отправка будет выполнена на следующий день при достижении времени h1. Данная функция, например, полезна для того, чтобы не допустить получение SMS-сообщений абонентами в ночное время.
  3. 0ts, где ts – timestamp, время в секундах, прошедшее с 1 января 1970 года.
  4. +m. Задает относительное смещение времени от текущего в минутах. Символ + должен кодироваться как %2B в http-запросе.
Если time = 0 (по умолчанию), то сообщение будет отправлено немедленно.
tzЧасовой пояс, в котором задается параметр time. Указывается относительно московского времени. Параметр tz может быть как положительным, так и отрицательным. Если tz равен 0, то будет использован московский часовой пояс, если же параметр tz не задан, то часовой пояс будет взят из настроек Клиента.
periodПромежуток времени, в течение которого необходимо отправить рассылку. Представляет собой число в диапазоне от 0.1 до 720 часов. Применяется совместно с параметром freq. Данный параметр позволяет растянуть рассылку во времени для постепенного получения SMS-сообщений абонентами.
freqИнтервал или частота, с которой нужно отправлять SMS-рассылку на очередную группу номеров. Количество номеров в группе рассчитывается автоматически на основе параметров period и freq. Задается в промежутке от 1 до 1440 минут. Без параметра period параметр freq игнорируется.
flashПризнак Flash сообщения, отображаемого сразу на экране телефона.
0 (по умолчанию) – обычное сообщение.
1 – Flash сообщение.
binПризнак бинарного сообщения.
0 (по умолчанию) – обычное сообщение.
1 – бинарное сообщение. В http-запросе необходимо закодировать с помощью функции urlencode.
2 – бинарное сообщение, представленное в виде шестнадцатеричной строки (hex).

Бинарное сообщение передается вместе с UDH заголовком в начале в параметре mes, в котором первый байт задает длину заголовка. Чтобы передать бинарное сообщение без UDH заголовка, укажите нулевой байт в начале сообщения (00 в hex).
Для возможности передачи параметров pid и dcs необходимо в конец бинарного сообщения добавить специальную комбинацию "\n~~~\n" (перевод строки, 3 символа тильды и снова перевод строки) и затем текст "pid: значение1, dcs: значение2" с точным сохранением пробелов.
pushПризнак wap-push сообщения, с помощью которого можно отправить интернет-ссылку на телефон.
0 (по умолчанию) – обычное сообщение.
1 – wap-push сообщение. В параметре mes необходимо передать ссылку и заголовок через перевод строки.
hlrПризнак HLR-запроса для получения информации о номере из базы оператора без отправки реального SMS.
0 (по умолчанию) – обычное сообщение.
1 – HLR-запрос. Будет выполнен HLR-запрос для каждого номера телефона в списке. Параметр mes не используется.
pingПризнак специального SMS, не отображаемого в телефоне, для проверки номеров на доступность в реальном времени по статусу доставки.
0 (по умолчанию) – обычное сообщение.
1 – ping-sms. Будет отправлено Ping-SMS на каждый номер телефона в списке. Параметр mes не используется.
mmsПризнак MMS-сообщения, с помощью которого можно передавать текст (txt), изображения различных форматов (jpg, gif, png), музыку (wav, amr, mp3, mid) и видео (mp4, 3gp). Файлы передаются в теле http-запроса.
0 (по умолчанию) – обычное сообщение.
1 – MMS-сообщение. Будет отправлено MMS на каждый номер телефона в списке.
mailПризнак e-mail сообщения. Файлы, прикрепляемые к сообщению, передаются методом POST в теле http-запроса.
0 (по умолчанию) – обычное сообщение.
1 – e-mail сообщение.
callПризнак голосового сообщения. При формировании голосового сообщения можно передавать как текст, так и прикреплять файлы. Файлы, добавляемые к сообщению, должны передаваться методом POST в теле http-запроса.
0 (по умолчанию) – обычное сообщение.
1 – голосовое сообщение.
voiceГолос, используемый для озвучивания текста (только для голосовых сообщений).
m (по умолчанию) – мужской голос.
m2 – мужской альтернативный голос.
w – женский голос.
w2 – женский альтернативный голос 1.
w3 – женский альтернативный голос 2.
w4 – женский альтернативный голос 3.
paramРазделенный запятой список параметров для голосового сообщения в формате "param=w,i,n".
Здесь:
  • w – время ожидания поднятия трубки абонентом после начала звонка в секундах. Если в течение указанного времени абонент не поднимет трубку, то звонок уйдет на повтор с ошибкой "абонент занят". Рабочий диапазон значений параметра от 10 до 35, но можно указывать интервал от 0 до 99 (в случае, если значение меньше 10, то оно будет приведено к 10, аналогично для верхней границы).
  • i – интервал повтора, то есть промежуток времени, по истечении которого произойдет повторный звонок (в секундах). Рабочий диапазон параметра от 10 до 999 (в случае, если значение меньше 10, то оно будет приведено к 10).
  • n – общее количество попыток дозвона. Рабочий диапазон значений от 1 до 9 (0 будет приведен к 1).
При указании значения любого параметра, отличного от возможных, будут использованы значения всех параметров по умолчанию.
subjТема MMS или e-mail сообщения. При отправке e-mail указание темы, текста и адреса отправителя обязательно. Для MMS обязательным является указание темы или текста. Если не указать тему MMS, то в ее качестве будет использовано имя отправителя, переданное в запросе или используемое по умолчанию.
charsetКодировка переданного сообщения, если используется отличная от кодировки по умолчанию windows-1251. Варианты: utf-8 и koi8-r.
costПризнак необходимости получения стоимости рассылки.
0 (по умолчанию) – обычная отправка.
1 – получить стоимость рассылки без реальной отправки.
2 – обычная отправка, но добавить в ответ стоимость выполненной рассылки.
3 – обычная отправка, но добавить в ответ стоимость и новый баланс Клиента.
fmtФормат ответа сервера об успешной отправке.
0 – (по умолчанию) в виде строки (OK - 1 SMS, ID - 1234).
1 – вернуть ответ в виде чисел: ID и количество SMS через запятую (1234,1), при cost = 2 еще стоимость через запятую (1234,1,1.40), при cost = 3 еще новый баланс Клиента (1234,1,1.40,100.50), при cost = 1 стоимость и количество SMS через запятую (1.40,1).
2 – ответ в xml формате.
3 – ответ в json формате.
listСписок номеров телефонов и соответствующих им сообщений, разделенных двоеточием или точкой с запятой и представленный в виде:
phones1:mes1
phones2:mes2
...
Строки разделяются через символ новой строки (%0A). В качестве phones можно указать несколько номеров телефонов через запятую. Если в сообщении mes требуется передать символ новой строки, то укажите его через \n. Параметр list позволяет выполнять множественную рассылку с разными сообщениями на несколько телефонов одним http-запросом. Сообщениям в запросе присваивается единый идентификатор. Весь параметр должен быть закодирован с помощью функции urlencode.
validСрок "жизни" SMS-сообщения. Определяет время, в течение которого оператор будет пытаться доставить сообщение абоненту. Диапазон от 1 до 24 часов. Также возможно передавать время в формате чч:мм в диапазоне от 00:01 до 24:00.
maxsmsМаксимальное количество SMS, на которые может разбиться длинное сообщение. Слишком длинные сообщения будут обрезаться так, чтобы не переполнить количество SMS, требуемых для их передачи. Этим параметром вы можете ограничить максимальную стоимость сообщений, так как за каждое SMS снимается отдельная плата.
imgcodeЗначение буквенно-цифрового кода, введенного с "captcha" при использовании антиспам проверки. Данный параметр должен использоваться совместно с параметром userip.
useripЗначение IP-адреса, для которого будет действовать лимит на максимальное количество сообщений с одного IP-адреса в сутки, установленный в настройках личного кабинета в пункте "Лимиты и ограничения".
errПризнак необходимости добавления в ответ сервера списка ошибочных номеров.
0 (по умолчанию) – не добавлять список (обычный ответ сервера).
1 – в ответ добавляется список ошибочных номеров телефонов с соответствующими статусами.
opПризнак необходимости добавления в ответ сервера информации по каждому номеру.
0 (по умолчанию) – не добавлять список (обычный ответ сервера).
1 – в ответ добавляется список всех номеров телефонов с соответствующими статусами.
ppОсуществляет привязку Клиента в качестве реферала к определенному ID партнера.
При передаче данного параметра в виде "pp=<ID партнера>" Клиент с логином login становится рефералом партнера с ID <ID партнера>. Сделать рефералом можно только нового Клиента, зарегистрированного в сервисе не более месяца назад и имеющего не более 1000 отправленных сообщений, который еще не является рефералом другого партнера. Данный параметр позволяет устанавливать Клиента в качестве реферала из своих сервисов и программ, где нет возможности зарегистрировать Клиента по реферальной ссылке.

Обязательными параметрами являются login, psw, phones и mes либо login, psw и list.

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

Все параметры, которые содержат специальные символы (плюс, пробел и т.д.), должны быть закодированы при помощи функции urlencode для передачи в HTTP-запросе.


Ответ сервера и коды ошибок


Сервер отправляет ответ в виде строки:

Если произошла ошибка, то ответ будет одним из следующих:

При fmt = 0:
  • ERROR = N (описание) – для ошибок 1,2,4,5,9;

  • ERROR = N (описание), ID - <id сообщения> – для ошибок 3,6,7,8.
При fmt = 1:
  • 0,-N – для ошибок 1,2,4,5,9;

  • <id сообщения>,-N – для ошибок 3,6,7,8.
При fmt = 2:
  • Для ошибок 1,2,4,5,9:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • Для ошибок 3,6,7,8:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    <id>id сообщения</id>
    </result>
При fmt = 3:
  • Для ошибок 1,2,4,5,9:
    {
    "error": "описание",
    "error_code": N
    }

  • Для ошибок 3,6,7,8:
    {
    "error": "описание",
    "error_code": N,
    "id": <id сообщения>
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Недостаточно средств на счете Клиента.
4IP-адрес временно заблокирован из-за частых ошибок в запросах. Подробнее
5Неверный формат даты.
6Сообщение запрещено (по тексту или по имени отправителя).
7Неверный формат номера телефона.
8Сообщение на указанный номер не может быть доставлено.
9Отправка более одного одинакового запроса на передачу SMS-сообщения либо более пяти одинаковых запросов на получение стоимости сообщения в течение минуты.

В случае успешной обработки запроса возвращается строка следующего вида:
  • при cost = 0 и fmt = 0: OK - <n> SMS, ID - <id>

  • при cost = 1 и fmt = 0: <cost> (<n> SMS)

  • при cost = 2 и fmt = 0: OK - <n> SMS, ID - <id>, COST - <cost>

  • при cost = 3 и fmt = 0: OK - <n> SMS, ID - <id>, COST - <cost>, BALANCE - <balance>

  • при cost = 0 и fmt = 1: <id>,<n>

  • при cost = 1 и fmt = 1: <cost>,<n>

  • при cost = 2 и fmt = 1: <id>,<n>,<cost>

  • при cost = 3 и fmt = 1: <id>,<n>,<cost>,<balance>

  • при cost = 0 и fmt = 2:
    <result>
    <id>id</id>
    <cnt>n</cnt>
    </result>

  • при cost = 1 и fmt = 2:
    <result>
    <cost>cost</cost>
    <cnt>n</cnt>
    </result>

  • при cost = 2 и fmt = 2:
    <result>
    <id>id</id>
    <cnt>n</cnt>
    <cost>cost</cost>
    </result>

  • при cost = 3 и fmt = 2:
    <result>
    <id>id</id>
    <cnt>n</cnt>
    <cost>cost</cost>
    <balance>balance</balance>
    </result>

  • при cost = 0 и fmt = 3:
    {
    "id": <id>,
    "cnt": <n>
    }

  • при cost = 1 и fmt = 3:
    {
    "cost": "<cost>",
    "cnt": <n>
    }

  • при cost = 2 и fmt = 3:
    {
    "id": <id>,
    "cnt": <n>,
    "cost": "<cost>"
    }

  • при cost = 3 и fmt = 3:
    {
    "id": <id>,
    "cnt": <n>,
    "cost": "<cost>",
    "balance": "<balance>"
    }

  • при op = 1 и fmt = 0 или 1, информация добавляется в конец обычного вывода с новой строки:
    <phone>,<mccmnc>,<cost>,<status>,<error>

  • при op = 1 и fmt = 2, в ответ добавляется массив:
    <phones>
    <phone mccmnc="mccmnc" cost="cost" status="status" error="error">phone</phone>
    ...
    </phones>

  • при op = 1 и fmt = 3, в ответ добавляется массив:
    "phones": [{
    "phone": "<phone>",
    "mccmnc": "<mccmnc>",
    "cost": "<cost>",
    "status": "<status>",
    "error": "<error>"
    },
    ...
    ]

Где:
<n> – это количество отправленных SMS, вычисляемое как количество SMS в сообщении, умноженное на количество получателей.
<id> – идентификатор сообщения, переданный Клиентом или назначенный Сервером автоматически.
<cost> – стоимость рассылки.
<balance> – новый баланс Клиента.
<phone> – номер телефона.
<mccmnc> – числовой код страны абонента плюс числовой код оператора абонента.
<cost> – стоимость SMS-сообщения.
<status> – код статуса SMS-сообщения.
<error> – код ошибки в статусе.

Сервер не принимает более одного одинакового запроса на отправку SMS-сообщений в течение минуты для защиты от ошибок и зацикливаний в программе на стороне Клиента для того, чтобы снизить нагрузку и не расходовать средства Клиента, а также не допустить многократной отправки сообщения одному абоненту.

Сервер также блокирует отправку более 50 сообщений одному абоненту, которые были отправлены с перерывом между сообщениями менее 60-ти секунд, для защиты от флуда и лишнего списания средств со счета Клиента, так как многие операторы не пропускают большое количество сообщений одному абоненту за короткий промежуток времени.


Примеры отправки сообщений


Примеры:

Обычное сообщение:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello! http://billing.smstraf.ru/sys/send.php?login=alex&psw=123
&list=79999999999:Hello!%0A79999999999:Hello\nworld!

Flash сообщение в кодировке "utf-8" от отправителя "ivan", переведенное в транслит, которое должно быть доставлено абоненту 01.01.2012 г. в 00:00:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello%20world!
&translit=1&time=0101120000&flash=1&sender=ivan&charset=utf-8

Бинарное EMS сообщение с текстом "Hello, World!", в котором слово "World" выделено курсивом и подчеркнуто:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999
&mes=050A0307056048656C6C6F2C20576F726C6421&bin=2

Бинарное WAP-push сообщение, передающее ссылку на сайт "http://wap.ru/":

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999
&mes=0605040B8423F0DC0601AE02056A0045C60C037761702E72752
F0001037761702E7275000101&bin=2

WAP-push сообщение в текстовом виде, передающее ссылку на сайт "http://wap.ru" с заголовком "WAP.RU":

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999
&mes=http://wap.ru%0AWAP.RU&push=1

Комментарии в SMS-сообщениях

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

Для добавления комментария необходимо в конце текста SMS-сообщения, предназначенного для отправки, указать специальную комбинацию "\n~~~\n" (перевод строки, 3 символа тильды и снова перевод строки), и после этого любой текст, который будет считаться комментарием, не будет отправлен абоненту, но отобразится в истории.

Примеры:

Отправка одного сообщения:

Hello!
~~~
Comment
http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999%2C78888888888&mes=Hello!%0A~~~%0AComment
Отправка нескольких сообщений через параметр list:

Hello1!
~~~
Comment1
Hello2!
~~~
Comment2
http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&list=79999999999:Hello1!\n~~~\nComment1%0A78888888888:Hello2!\n~~~\nComment2

Отправка на группу номеров

В личном кабинете Клиента при создании или редактировании группы можно указать номер группы для рассылок сообщений. Тогда при отправке сообщения вместо списка телефонов можно будет указывать короткий код в виде "G<номер группы>" или "g<номер группы>", и сообщение будет отправлено на все номера телефонов, принадлежащие данной группе.

Примеры:

Отправка сообщения на все номера телефонов, принадлежащих группам с назначенными номерами 777 и 888:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=G777%2Cg888&mes=Hello!

Отправка HLR-запроса

Вы можете проверять номера телефонов на доступность, отправляя специальный HLR-запрос. В результате выполнения запроса будут получены данные о стране и операторе абонента, о роуминговом операторе при нахождении абонента в чужой сети, а также о статусе абонента (доступен или нет). Абоненты, владельцы проверяемых номеров, не будут получать никаких уведомлений о выполненных проверках их номера.

Выполнение HLR-запроса по HTTP-протоколу выполняется тем же способом, что и отправка SMS-сообщения, при этом в запросе необходимо передать дополнительный параметр hlr=1.

Для отправки HLR-запроса необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/send.php?login=<login>&psw=<password>&phones=<phones>&hlr=1
Также доступны и другие параметры, использующиеся для отправки обычных SMS и описанные выше.

Результат HLR-запроса может быть отправлен на URL для приема входящих сообщений и статусов, заданный в настройках в личном кабинете, либо может считываться по запросу статуса отправленного SMS-сообщения.

Пример:
http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&hlr=1

Отправка MMS-сообщения

Для отправки MMS-сообщения необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/send.php?login=<login>&psw=<password>&phones=<phones>&mes=<message>&mms=1
Если при отправке планируется передача каких-либо файлов (текста, музыки, аудио, видео), то их необходимо передавать методом POST в теле http-запроса к серверу. Максимальное количество вложений, передаваемых в запросе, равно трем, и размер каждого вложения не должен превышать 500 Кб. При превышении указанных лимитов обрабатываемые вложения будут исключаться. Для MMS-сообщения указание темы или текста является обязательным.

Примеры:

Отправка MMS-сообщения с темой "Privet" и текстом "Hello":

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello&subj=Privet&mms=1
Отправка MMS с темой "Holiday" и двумя фотографиями через библиотеку на основе cURL:

<?php
 include "smsc_api.php";
 send_sms("79999999999", "", 0, 0, 0, 7, false, "subj=Holiday", array("c:/1.jpg", "c:/2.jpg"));
?>

Отправка e-mail сообщения

Для отправки e-mail необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/send.php?login=<login>&psw=<password>&phones=<phones>&mes=<message>&sender=<sender>&subj=<subj>&mail=1
Если при отправке планируется передача каких-либо файлов, то их необходимо передавать методом POST в теле http-запроса к серверу. Позиции в тексте, в которые планируется вставлять файлы, необходимо обозначать специальным образом в виде "<file n>", где n - номер файла в формируемом списке начиная с единицы. Если не указывать позиции, то соответствующие файлы будут добавляться в конец сообщения.

При создании сообщения можно вставлять в текст http-ссылки ранее загруженных файлов, узнать которые можно в личном кабинете на странице отправки, нажав последовательно ссылки "прикрепить файл" – "Загруженные файлы". Также можно указывать локальные ссылки на загруженные файлы на нашем сервере в виде "<file /upload/files/sms/каталог_загрузки/название_файла>". Для вложений-картинок можно устанавливать атрибуты, например, "<file /upload/files/sms/каталог_загрузки/название_файла width=200 height=400>".

Максимальное количество вложений, передаваемых в запросе, равно 20, и размер каждого вложения не должен превышать 3 Мб. При превышении указанных лимитов будет возвращаться ошибка с кодом 1 (неверные параметры). При отправке каждого письма максимальный общий размер прикрепляемых вложений составляет 15 Мб, вложения, не вмещающиеся в этот размер, будут передаваться ссылкой на наш сайт.

Для e-mail сообщений указание темы, текста и адреса отправителя обязательно.

Примеры:

Отправка e-mail на адрес "alex@mysite.com" с темой "Privet" и текстом "Hello" от отправителя "alex2@mysite2.com":

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=alex%40mysite.com&mes=Hello&subj=Privet&sender=alex2%40mysite2.com&mail=1
Отправка e-mail с темой "Holiday" и двумя фотографиями через библиотеку на основе cURL:

<?php
 include "smsc_api.php";
 send_sms("alex@mysite.com", "Hello", 0, 0, 0, 8, "alex2@mysite2.com", "subj=Holiday", array("c:/1.jpg", "c:/2.jpg"));
?>

Отправка e-mail с темой "Hello" и фотографией, загруженной ранее на сервер:

<?php
 include "smsc_api.php";
 send_sms("alex@mysite.com", "Hello, this is my photo <file /upload/files/sms/123abc/photo.jpg width=200 height=400>", 0, 0, 0, 8, "alex2@mysite2.com", "subj=Hello");
?>

Отправка голосового сообщения (звонок)

Для отправки голосового сообщения необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/send.php?login=<login>&psw=<password>&phones=<phones>&mes=<message>&call=1
При формировании сообщения можно указывать как текст, так и добавлять медиа-файлы форматов wav и mp3.

Если планируется передача файлов, то их необходимо передавать методом POST в теле http-запроса к серверу. Позиции в тексте, в которые планируется вставлять файлы, необходимо обозначать специальным образом в виде "<file n>", где n - номер файла в формируемом списке начиная с единицы. Если не указывать позиции, то соответствующие файлы будут добавляться в конец сообщения.

При создании сообщения можно вставлять в текст http-ссылки ранее загруженных файлов, узнать которые можно в личном кабинете на странице отправки, нажав последовательно ссылки "прикрепить файл" – "Загруженные файлы". Также можно указывать локальные ссылки на загруженные файлы на нашем сервере в виде "<file /upload/files/sms/каталог_загрузки/название_файла>".

Так как телефонные линии не могут идеально проигрывать сложные медиа-файлы, то при формировании отправляемого сообщения передаваемые файлы преобразуются к простому формату.

Максимальное количество вложений, передаваемых в запросе, равно четырем, и размер каждого вложения не должен превышать 3 Мб. При превышении указанных лимитов обрабатываемые вложения будут исключаться.

Для передачи своего номера телефона в качестве имени отправителя необходимо указать его в параметре sender. Указанный номер прежде должен быть добавлен и активирован в личном кабинете на данной странице.

При формировании запроса можно передавать специальный параметр param, в котором задаются некоторые характеристики звонка (более подробно можно ознакомиться в описании). Также дополнительно в запросе можно передать параметр voice, который определяет голос, используемый для озвучивания текста. Данный параметр может принимать следующие значения:
  • voice = m – мужской голос.
  • voice = m2 – мужской альтернативный голос.
  • voice = w – женский голос.
  • voice = w2 – женский альтернативный голос 1.
  • voice = w3 – женский альтернативный голос 2.
  • voice = w4 – женский альтернативный голос 3.

Примеры:

Отправка голосового сообщения с текстом "Hello":

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello&call=1
Отправка голосового сообщения с текстом "Hello" от номера телефона "79991234567":

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello&call=1&sender=79991234567
Отправка голосового сообщения с текстом "Hello world", озвученным мужским голосом, с временем ожидания снятия трубки 20 секунд, интервалом повтора 10 секунд и количеством попыток дозвона равным 3:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello%20world&call=1&voice=m&param=20%2C10%2C3
Отправка голосового сообщения с текстом "Hello world", озвученным женским альтернативным голосом:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=Hello%20world&call=1&voice=w2
Отправка голосового сообщения с текстом и двумя звуковыми файлами через библиотеку на основе cURL:

<?php
 include "smsc_api.php";
 send_sms("79999999999", "first file <file 1> and second file <file 2>", 0, 0, 0, 9, false, "", array("c:/1.mp3", "c:/2.wav"));
?>

Использование префиксов при отправке сообщений

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

Поддерживаемые префиксы:

НазваниеОписание
__CALL__: сообщениеОтправка голосового сообщения (звонка). При отправке голосового сообщения в конце текста можно указать специальную комбинацию "\n~~~\n" (перевод строки, 3 символа тильды и снова перевод строки), после которой передать параметр param, определяющий некоторые характеристики звонка (более подробно можно посмотреть в описании). При формировании сообщения можно указывать как текст, так и добавлять медиа-файлы форматов wav и mp3, а также вставлять ранее загруженные файлы. Более подробно по процеccу создания голосового сообщения можно прочитать на данной странице.
__PING__Отправка специального SMS, не отображаемого в телефоне, для проверки номеров на доступность в реальном времени по статусу доставки.
__HLR__Признак HLR-запроса для получения информации о номере из базы оператора без отправки реального SMS. Более подробно по HLR-запросам можно ознакомиться здесь.


Примеры:

Отправка голосового сообщения с текстом "Privet":

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=__CALL__%3A%20Privet
Отправка Ping-SMS:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=__PING__
Отправка HLR-запроса:

http://billing.smstraf.ru/sys/send.php?login=alex&psw=123&phones=79999999999&mes=__HLR__

Виртуальная отправка (режим тестирования)

Данный режим работы позволяет протестировать отправку сообщений без реальной передачи SMS операторам. Может быть полезен при первоначальной настройке и тестировании различного программного обеспечения и оборудования. Для включения данного режима необходимо в личном кабинете в пункте "Настройки" в раскрывающемся блоке "Настройки API" установить галочку "Режим тестирования (виртуальная отправка без оплаты)".

При виртуальной отправке все сообщения будут иметь конечный статус "Доставлено", но в процессе отправки сообщения будут проходить все стадии обработки по цепочке "Ожидает отправки" – "Передано оператору" – "Доставлено". Получать статусы сообщений можно как по запросу, так и на свой http-обработчик. Отправлять можно и одиночные сообщения и массовые рассылки. Тестировать при виртуальной отправке возможно различные типы сообщений (SMS, бинарные сообщения, HLR, MMS, звонок).

Проверка статуса

Для проверки статуса доставки SMS необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/status.php?login=<login>&psw=<password>&phone=<phone>&id=<sms_id>
Серверу передаются следующие параметры:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
phoneНомер телефона или список номеров через запятую при запросе статусов нескольких SMS. При множественном запросе номера в списке должны быть перечислены в порядке, соответствующем идентификаторам сообщений. Для сохранения формата множественного запроса при запросе статуса одного сообщения укажите запятую после номера телефона.
idИдентификатор сообщения или список идентификаторов через запятую при запросе статусов нескольких сообщений. Для сохранения формата множественного запроса при запросе статуса одного сообщения укажите запятую после идентификатора сообщения.
fmtФормат ответа сервера:
0 – (по умолчанию) в виде строки (Status = 1, check_time = 10.10.2010 10:10:10).
1 – в виде номера статуса и штампа времени через запятую (1,1286524541).
2 – в xml формате.
3 – в json формате.
all0 – (по умолчанию) получить статус сообщения в обычном формате.
1 – получить полную информацию об отправленном сообщении.
2 – добавить в информацию о сообщении данные о стране, операторе и регионе абонента.
charsetКодировка результата запроса, если используется отличная от кодировки по умолчанию windows-1251. Варианты: utf-8 и koi8-r.
del1 – удалить ранее отправленное сообщение. Используется совместно с параметрами phone и id. Более подробно данный параметр описан здесь.

В случае ошибки Сервер возвращает следующую строку:
  • При fmt = 0:
    ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
4IP-адрес временно заблокирован.
5Ошибка удаления сообщения.
9Попытка отправки более пяти запросов на получение статуса одного и того же сообщения в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:

Ответы для SMS-сообщений:
  • при fmt = 0 и all = 0: Status = <status>, check_time = <last_date>, err = <err>

  • при fmt = 1 и all = 0: <status>,<last_timestamp>,<err>

  • при fmt = 2 и all = 0:
    <sms>
    <status>status</status>
    <last_date>last_date</last_date>
    <last_timestamp>last_timestamp</last_timestamp>
    <err>err</err>
    </sms>

  • при fmt = 3 и all = 0:
    {
    "status": <status>,
    "last_date": "<last_date>",
    "last_timestamp": <last_timestamp>,
    "err": <err>
    }

  • при fmt = 0 и all = 1:
    Status = <status>, check_time = <last_date>, err = <err>, send_date = <send_date>, phone = <phone>, cost = <cost>, sender_id = <sender>, status_name = <status_name>, message = <message>

  • при fmt = 1 и all = 1:
    <status>,<last_timestamp>,<err>,<send_timestamp>,<phone>,<cost>,<sender>,<status_name>,<message>

  • при fmt = 2 и all = 1:
    <sms>
    <status>status</status>
    <last_date>last_date</last_date>
    <last_timestamp>last_timestamp</last_timestamp>
    <err>err</err>
    <send_date>send_date</send_date>
    <send_timestamp>send_timestamp</send_timestamp>
    <phone>phone</phone>
    <cost>cost</cost>
    <sender_id>sender</sender_id>
    <status_name>status_name</status_name>
    <message>message</message>
    </sms>

  • при fmt = 3 и all = 1:
    {
    "status": <status>,
    "last_date": "<last_date>",
    "last_timestamp": <last_timestamp>,
    "err": <err>,
    "send_date": "<send_date>",
    "send_timestamp": <send_timestamp>,
    "phone": "<phone>",
    "cost": "<cost>",
    "sender_id": "<sender>",
    "status_name": "<status_name>",
    "message": "<message>"
    }

  • при fmt = 0 и all = 2:
    Status = <status>, check_time = <last_date>, err = <err>, send_date = <send_date>, phone = <phone>, country = <country>, operator = <operator>, region = <region>, cost = <cost>, sender_id = <sender>, status_name = <status_name>, message = <message>

  • при fmt = 1 и all = 2:
    <status>,<last_timestamp>,<err>,<send_timestamp>,<phone>,<country>,<operator>,<region>,<cost>,<sender>,<status_name>,<message>

  • при fmt = 2 и all = 2:
    <sms>
    <status>status</status>
    <last_date>last_date</last_date>
    <last_timestamp>last_timestamp</last_timestamp>
    <err>err</err>
    <send_date>send_date</send_date>
    <send_timestamp>send_timestamp</send_timestamp>
    <phone>phone</phone>
    <cost>cost</cost>
    <sender_id>sender</sender_id>
    <status_name>status_name</status_name>
    <message>message</message>
    <country>country</country>
    <operator>operator</operator>
    <region>region</region>
    </sms>

  • при fmt = 3 и all = 2:
    {
    "status": <status>,
    "last_date": "<last_date>",
    "last_timestamp": <last_timestamp>,
    "err": <err>,
    "send_date": "<send_date>",
    "send_timestamp": <send_timestamp>,
    "phone": "<phone>",
    "cost": "<cost>",
    "sender_id": "<sender>",
    "status_name": "<status_name>",
    "message": "<message>",
    "country": "<country>",
    "operator": "<operator>",
    "region": "<region>"
    }
Где:
<status> – код статуса (список)
<last_date> – дата последнего изменения статуса. Формат DD.MM.YYYY hh:mm:ss.
<last_timestamp> – штамп времени последнего изменения статуса.
<err> – код ошибки, если сообщение не было доставлено.
<send_date> – дата отправки сообщения (формат DD.MM.YYYY hh:mm:ss).
<send_timestamp> – штамп времени отправки сообщения.
<phone> – номер телефона абонента.
<country> – название страны регистрации номера абонента.
<operator> – название оператора абонента.
<region> – регион регистрации номера абонента.
<cost> – стоимость сообщения.
<sender> – имя отправителя.
<status_name> – название статуса.
<message> – текст сообщения.

Ответы для HLR-запросов:
  • при fmt = 0 и all = 0:
    Status = <status>, check_time = <check_time>, err = <err>, imsi = <imsi>, msc = <msc>, mcc = <mcc>, mnc = <mnc>, cn = <cn>, net = <net>, rcn = <rcn>, rnet = <rnet>

  • при fmt = 1 и all = 0: <status>,<last_timestamp>,<err>,<imsi>,<msc>,<mcc>,<mnc>,<cn>,<net>,<rcn>,<rnet>

  • при fmt = 2 и all = 0:
    <sms>
    <status>status</status>
    <last_date>last_date</last_date>
    <last_timestamp>last_timestamp</last_timestamp>
    <err>err</err>
    <imsi>imsi</imsi>
    <msc>msc</msc>
    <mcc>mcc</mcc>
    <mnc>mnc</mnc>
    <cn>cn</cn>
    <net>net</net>
    <rcn>rcn</rcn>
    <rnet>rnet</rnet>
    </sms>

  • при fmt = 3 и all = 0:
    {
    "status": <status>,
    "last_date": "<last_date>",
    "last_timestamp": <last_timestamp>,
    "err": <err>,
    "imsi": "<imsi>",
    "msc": "<msc>",
    "mcc": "<mcc>",
    "mnc": "<mnc>",
    "cn": "<cn>",
    "net": "<net>",
    "rcn": "<rcn>",
    "rnet": "<rnet>"
    }

  • при fmt = 0 и all = 1:
    Status = <status>, check_time = <check_time>, err = <err>, imsi = <imsi>, msc = <msc>, mcc = <mcc>, mnc = <mnc>, cn = <cn>, net = <net>, rcn = <rcn>, rnet = <rnet>, send_date = <send_date>, phone = <phone>, cost = <cost>, sender_id = <sender_id>, status_name = <status_name>, message = <message>

  • при fmt = 1 и all = 1:
    <status>,<last_timestamp>,<err>,<imsi>,<msc>,<mcc>,<mnc>,<cn>,<net>,<rcn>,<rnet>, <send_timestamp>,<phone>,<cost>,<sender_id>,<status_name>,<message>

  • при fmt = 2 и all = 1:
    <sms>
    <status>status</status>
    <last_date>last_date</last_date>
    <last_timestamp>last_timestamp</last_timestamp>
    <err>err</err>
    <imsi>imsi</imsi>
    <msc>msc</msc>
    <mcc>mcc</mcc>
    <mnc>mnc</mnc>
    <cn>cn</cn>
    <net>net</net>
    <rcn>rcn</rcn>
    <rnet>rnet</rnet>
    <send_date>send_date</send_date>
    <send_timestamp>send_timestamp</send_timestamp>
    <phone>phone</phone>
    <cost>cost</cost>
    <sender_id>sender_id</sender_id>
    <status_name>status_name</status_name>
    <message>message</message>
    </sms>

  • при fmt = 3 и all = 1:
    {
    "status": <status>,
    "last_date": "<last_date>",
    "last_timestamp": <last_timestamp>,
    "err": <err>,
    "imsi": "<imsi>",
    "msc": "<msc>",
    "mcc": "<mcc>",
    "mnc": "<mnc>",
    "cn": "<cn>",
    "net": "<net>",
    "rcn": "<rcn>",
    "rnet": "<rnet>",
    "send_date": "<send_date>",
    "send_timestamp": <send_timestamp>,
    "phone": "<phone>",
    "cost": "<cost>",
    "sender_id": "<sender>",
    "status_name": "<status_name>",
    "message": "<message>"
    }

  • при fmt = 0 и all = 2:
    Status = <status>, check_time = <check_time>, err = <err>, imsi = <imsi>, msc = <msc>, mcc = <mcc>, mnc = <mnc>, cn = <cn>, net = <net>, rcn = <rcn>, rnet = <rnet>, send_date = <send_date>, phone = <phone>, country = <country>, operator = <operator>, region = <region>, cost = <cost>, sender_id = <sender_id>, status_name = <status_name>, message = <message>

  • при fmt = 1 и all = 2:
    <status>,<last_timestamp>,<err>,<imsi>,<msc>,<mcc>,<mnc>,<cn>,<net>,<rcn>,<rnet>, <send_timestamp>,<phone>,<country>,<operator>,<region>,<cost>,<sender_id>,<status_name>,<message>

  • при fmt = 2 и all = 2:
    <sms>
    <status>status</status>
    <last_date>last_date</last_date>
    <last_timestamp>last_timestamp</last_timestamp>
    <err>err</err>
    <imsi>imsi</imsi>
    <msc>msc</msc>
    <mcc>mcc</mcc>
    <mnc>mnc</mnc>
    <cn>cn</cn>
    <net>net</net>
    <rcn>rcn</rcn>
    <rnet>rnet</rnet>
    <send_date>send_date</send_date>
    <send_timestamp>send_timestamp</send_timestamp>
    <phone>phone</phone>
    <cost>cost</cost>
    <sender_id>sender_id</sender_id>
    <status_name>status_name</status_name>
    <message>message</message>
    <country>country</country>
    <operator>operator</operator>
    <region>region</region>
    </sms>

  • при fmt = 3 и all = 2:
    {
    "status": <status>,
    "last_date": "<last_date>",
    "last_timestamp": <last_timestamp>,
    "err": <err>,
    "imsi": "<imsi>",
    "msc": "<msc>",
    "mcc": "<mcc>",
    "mnc": "<mnc>",
    "cn": "<cn>",
    "net": "<net>",
    "rcn": "<rcn>",
    "rnet": "<rnet>",
    "send_date": "<send_date>",
    "send_timestamp": <send_timestamp>,
    "phone": "<phone>",
    "cost": "<cost>",
    "sender_id": "<sender>",
    "status_name": "<status_name>",
    "message": "<message>",
    "country": "<country>",
    "operator": "<operator>",
    "region": "<region>"
    }

Где:
<status> – код статуса (список)
<last_date> – дата последнего изменения статуса. Формат DD.MM.YYYY hh:mm:ss.
<last_timestamp> – штамп времени последнего изменения статуса.
<err> – код HLR-ошибки или статуса абонента (список).
<imsi> – уникальный код IMSI SIM-карты абонента.
<msc> – номер сервис-центра оператора, в сети которого находится абонент.
<mcc> – числовой код страны абонента.
<mnc> – числовой код оператора абонента.
<cn> – название страны регистрации абонента.
<net> – название оператора регистрации абонента.
<rcn> – название роуминговой страны абонента при нахождении в чужой сети.
<rnet> – название роумингового оператора абонента при нахождении в чужой сети.
<send_date> – дата отправки сообщения (формат DD.MM.YYYY hh:mm:ss).
<send_timestamp> – штамп времени отправки сообщения.
<phone> – номер телефона абонента.
<country> – название страны регистрации номера абонента.
<operator> – название оператора абонента.
<region> – регион регистрации номера абонента.
<cost> – стоимость сообщения.
<sender> – имя отправителя.
<status_name> – название статуса.
<message> – текст сообщения.

Если сообщение не найдено или находится в архивной базе (значение статуса равно -3), то для fmt = 0,2,3 возвращается код статуса в соответствующем формате. Для fmt = 1 возвращается ответ в формате статуса обычного сообщения.

При множественном запросе статусов:
  • для fmt = 0 и fmt = 1 в результате возвращается список строк, каждая из которых содержит информацию о статусе соответствующего сообщения.
  • для fmt = 2 формат возвращаемых статусов аналогичен формату для одиночных сообщений, при этом весь список статусов заключается в тег "<list>".
  • для fmt = 3 формат также аналогичен формату для одиночных сообщений, статусы перечисляются через запятую, и весь список обрамляется квадратными скобками.
В случае множественного запроса статусов при значении параметра all = 1 или all = 2 для каждого статуса дополнительно возвращается идентификатор сообщения. При all = 0 дополнительно возвращается идентификатор сообщения и номер телефона.

Коды статусов

Возможные варианты кодов статусов SMS-сообщений или HLR-запросов (значения <status>):

КодНазваниеОписание
-3Сообщение не найденоВозникает, если для указанного номера телефона и ID сообщение не найдено.
-1Ожидает отправкиЕсли при отправке сообщения было задано время получения абонентом, то до этого времени сообщение будет находиться в данном статусе, в других случаях сообщение в этом статусе находится непродолжительное время перед отправкой на SMS-центр.
0Передано операторуСообщение было передано на SMS-центр оператора для доставки.
1ДоставленоСообщение было успешно доставлено абоненту.
3ПросроченоВозникает, если время "жизни" сообщения истекло, а оно так и не было доставлено получателю, например, если абонент не был доступен в течение определенного времени или в его телефоне был переполнен буфер сообщений.
20Невозможно доставитьПопытка доставить сообщение закончилась неудачно, это может быть вызвано разными причинами, например, абонент заблокирован, не существует, находится в роуминге без поддержки обмена SMS, или на его телефоне не поддерживается прием SMS-сообщений.
22Неверный номерНеправильный формат номера телефона.
23ЗапрещеноВозникает при срабатывании ограничений на отправку дублей, на частые сообщения на один номер (флуд), на номера из черного списка, на запрещенные спам фильтром тексты или имена отправителей (Sender ID).
24Недостаточно средствНа счете Клиента недостаточная сумма для отправки сообщения.
25Недоступный номерТелефонный номер не принимает SMS-сообщения, или на этого оператора нет рабочего маршрута.

Запрос статусов SMS-сообщений необходимо осуществлять в течение суток с момента отправки. По истечении данного времени сообщения помещаются в архивную базу. В 03:00 по московскому времени переносятся сообщения с конечным статусом, отправленные до 18:00 прошедшего дня. Для возможности получения реальных статусов таких сообщений необходимо обратиться в службу поддержки.

Также сервер не принимает более пяти одинаковых запросов на получение статуса одного и того же SMS-сообщения в течение минуты для снижения нагрузки и защиты от ошибок и зацикливаний в программе на стороне Клиента.


Коды ошибок в статусе

Возможные коды ошибок в статусе SMS-сообщений или HLR-запросов (значения <err>):

КодНазваниеОписание
0Нет ошибкиАбонент существует и доступен.
1Абонент не существуетУказанный номер телефона не существует.
6Абонент не в сетиТелефон абонента отключен или находится вне зоны действия сети.
11Нет услуги SMSОзначает, что абонент не может принять SMS-сообщение. Например, услуга не подключена, или абонент находится в роуминге, где не активирован прием сообщений, или у оператора абонента не налажен обмен SMS с текущим роуминговым оператором. Также это может быть городской номер без приема сообщений.
13Абонент заблокированВозникает, например, если на счету абонента нулевой или отрицательный баланс, и он находится в роуминге, или заблокирован оператором за продолжительную неуплату либо добровольно самим абонентом. Также данная ошибка может возвращаться при повреждении SIM-карты либо неправильном вводе PIN и PUK-кодов SIM-карты.
21Нет поддержки SMSАппарат абонента не поддерживает прием SMS-сообщений.
200Виртуальная отправкаДанное уведомление появляется под статусом сообщения в случае отправки сообщения в режиме тестирования (при установленной в настройках галочке "Режим тестирования (виртуальная отправка без оплаты)").
220Переполнена очередь у оператораУказанная ошибка может возникать в случае, когда абонент недоступен для приема SMS, но сообщения продолжают приходить оператору и происходит переполнение внутренней очереди сообщений для данного абонента. В редких случаях возможно появление ошибки в результате сбоя в сети самого оператора или переполнении общей очереди сообщений. Во всех подобных ситуациях система с определенными интервалами несколько раз пытается отправить указанные сообщения повторно.
240Абонент занятВозникает при передаче голосового сообщения абоненту, если линия занята или абонент отменил вызов.
241Ошибка конвертации звукаПри преобразовании текста или звукового файла в конечный формат для передачи абоненту голосового сообщения произошла ошибка конвертации звука.
242Зафиксирован автоответчикОзначает, что во время отправки голосового сообщения на стороне абонента был зафиксирован автоответчик.
243Не заключен договорВозникает при попытке отправки рассылок рекламного или массового характера без заключенного договора.
244Рассылки запрещеныОзначает, что для данного Клиента запрещена отправка массовых и рекламных рассылок.
245Статус не полученВ течение суток статус доставки не был получен от оператора, в этом случае нельзя точно сказать, было сообщение доставлено или нет.
246Ограничение по времениЕсли в личном кабинете в пункте "Настройки" во вкладке "Лимиты и ограничения" установлено "Время отправки" и галочка "запретить отправку в другое время", то при попытке отправки SMS-сообщений в период времени, отличный от указанного в поле "Время отправки", отправка сообщений будет запрещаться с указанием данной ошибки.
247Превышен лимит сообщенийПревышен общий суточный лимит сообщений, указанный Клиентом в личном кабинете в пункте "Настройки".
248Нет маршрутаОзначает, что на данный номер отправка сообщений недоступна в нашем сервисе. Например, ввели несуществующий мобильный код, либо для указанного номера и текста нет рабочего SMS-шлюза.
249Неверный формат номераВозникает, когда мобильный код указанного номера и соответствующая этому коду длина номера неверны.
250Номер запрещен настройкамиНомер попал под ограничения, установленные Клиентом для мобильных номеров в личном кабинете в пункте "Настройки".
251Превышен лимит на один номерПревышен суточный лимит сообщений на один номер. Лимит устанавливается Клиентом в личном кабинете в пункте "Настройки". Также такая ошибка возможна при отправке более 50 сообщений одному абоненту, которые были отправлены с перерывом между сообщениями менее 30 секунд.
252Номер запрещенВозникает, например, при попытке указания Клиентом одного из наших федеральных номеров в качестве получателя SMS-сообщения.
253Запрещено спам-фильтромЕсли текст сообщения содержит нецензурные выражения и оскорбления, призывы отправить sms и некоторые другие запрещенные тексты, то отправка сообщения заблокируется. Также запрещено указывать в качестве отправителя короткие платные номера, номер получателя сообщений, названия операторов, чужих интернет-ресурсов, компаний и государственных организаций.
254Незарегистрированный sender idДанная ошибка возникает при попытке отправки сообщения от незарегистрированного имени отправителя.
255Отклонено операторомОператор отклонил сообщение без указания точного кода ошибки.
Такое бывает, например, когда номер не принадлежит ни одному мобильному оператору, т.е. с несуществующим кодом, либо по какой-то другой причине оператор не может доставить сообщение.


Удаление сообщения

Для удаления сообщения необходимо вызвать методом GET или POST скрипт запроса статуса, указав команду del: http://billing.smstraf.ru/sys/status.php?del=1&login=<login>&psw=<password>&phone=<phone>&id=<sms_id>
Описание параметров, передаваемых Серверу, и возвращаемых им ошибок аналогичное приведенному для функции запроса статуса.

В случае успешного запроса Сервер возвращает ответ в виде строки:
  • при fmt = 0,1,2,3: OK

Проверка состояния баланса

Для запроса баланса используйте адрес: http://billing.smstraf.ru/sys/balance.php?login=<login>&psw=<password>
Серверу передаются следующие параметры:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
curВалюта Клиента.
fmtФормат ответа сервера:
0 или 1 – (по умолчанию) в виде строки (250.80).
2 – в xml формате.
3 – в json формате.

В случае ошибки Сервер возвращает следующую строку:
  • При fmt = 0:
    ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
4IP-адрес временно заблокирован.
9Попытка отправки более десяти запросов на получение баланса в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:

При cur = 0:
  • при fmt = 0 или 1: <balance>

  • при fmt = 2: <balance>balance</balance>

  • при fmt = 3:
    {
    "balance": "<balance>"
    }

При cur = 1 и ненулевом кредите:
  • при fmt = 0: <balance> <currency>

  • при fmt = 1: <balance>,<currency>

  • При fmt = 2:
    <result>
    <balance>balance</balance>
    <credit>credit</credit>
    <currency>currency</currency>
    </result>

  • при fmt = 3:
    {
    "balance": "<balance>",
    "credit": "<credit>",
    "currency": "<currency>"
    }
Где:
<balance> – текущее состояние баланса.
<credit> – текущее состояние установленного кредита.
<currency> – валюта Клиента.

Сервер не принимает более десяти запросов на получение баланса в течение минуты для снижения нагрузки и защиты от ошибок и зацикливаний в программе на стороне Клиента.


Управление контактами

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

Для создания контакта: http://billing.smstraf.ru/sys/phones.php?add=1&login=<login>&psw=<password>&phone=<phone>&name=<name>
Для создания новой группы: http://billing.smstraf.ru/sys/phones.php?add_group=1&login=<login>&psw=<password>&name=<name>
Для изменения номера телефона в контакте: http://billing.smstraf.ru/sys/phones.php?chg=1&login=<login>&psw=<password>&phone=<phone>&new_phone=<new_phone>
Для изменения названия группы: http://billing.smstraf.ru/sys/phones.php?chg_group=1&login=<login>&psw=<password>&grp=<group_id>&name=<name>
Для переноса контакта в новую группу: http://billing.smstraf.ru/sys/phones.php?move_group=1&login=<login>&psw=<password>&grp=<group_id>&phone=<phone>
Для добавления новой группы к контакту: http://billing.smstraf.ru/sys/phones.php?move_group=2&login=<login>&psw=<password>&grp=<group_id>&phone=<phone>
Для удаления контакта из группы: http://billing.smstraf.ru/sys/phones.php?move_group=3&login=<login>&psw=<password>&grp=<group_id>&phone=<phone>
Для удаления контакта: http://billing.smstraf.ru/sys/phones.php?del=1&login=<login>&psw=<password>&phone=<phone>
Для удаления группы: http://billing.smstraf.ru/sys/phones.php?del_group=1&login=<login>&psw=<password>&grp=<group_id>
Для вывода списка контактов: http://billing.smstraf.ru/sys/phones.php?get=1&login=<login>&psw=<password>
Для вывода списка групп: http://billing.smstraf.ru/sys/phones.php?get_group=1&login=<login>&psw=<password>
Для добавления телефона в "черный" список: http://billing.smstraf.ru/sys/phones.php?add_black=1&login=<login>&psw=<password>&phone=<phone>
Для удаления телефона из "черного" списка: http://billing.smstraf.ru/sys/phones.php?del_black=1&login=<login>&psw=<password>&phone=<phone>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
nameНазвание контакта или группы.
grpИдентификатор группы, которой принадлежит создаваемый контакт. Можно привязать контакт сразу к нескольким группам, указав их идентификаторы через запятую.
numНомер группы для рассылок сообщений.
phoneСписок номеров телефонов через любой разделитель (команда add), либо номер телефона (команды move_group, add_black). Используется для операций с номерами телефонов в скрипте phones.php.
mailСписок e-mail адресов через любой разделитель (команда add), либо e-mail адрес (команды move_group, add_black). Используется для операций с e-mail адресами в скрипте mails.php. Формат запросов аналогичен формату для phones.php.
new_phoneНовый список номеров телефонов через любой разделитель (команда chg).
new_mailНовый список e-mail адресов через любой разделитель (команда chg).
lnmФамилия.
fnmИмя.
mnmОтчество.
fioФИО контакта. Данный параметр используется в команде get для получения списка контактов по любому из инициалов (фамилии, имени и (или) отчеству).
bdДата рождения в формате дд.мм.гггг.
myidID контакта, назначенный Клиентом.
cmtКомментарии.
tagsТеги (метки).
phoДругие номера телефонов. По данным номерам рассылка SMS-сообщений не выполняется.
typeТип блокировки (команда add_black):
0 – все сообщения.
1 – массовые рассылки.
2 – одиночные сообщения.
fmtФормат ответа сервера:
0 – (по умолчанию) в виде строки (ID = 12345).
1 – в виде строки (12345).
2 – в xml формате.
3 – в json формате.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Записи не найдены.
4IP-адрес временно заблокирован.
5Ошибка выполнения операции.
9Попытка отправки более трех одинаковых запросов на операции с группами, контактами или записями "черного" списка в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки.

При создании контакта, группы контактов, записи "черного" списка:
  • при fmt = 0: ID = <id>

  • при fmt = 1: <id>

  • при fmt = 2 (создание контакта, записи "черного" списка):
    <phone>
    <id>id</id>
    </phone>

  • при fmt = 2 (создание группы):
    <group>
    <id>id</id>
    </group>

  • при fmt = 3:
    {
    "id": <id>
    }

Где <id> – идентификатор контакта, группы или записи "черного" списка, назначенный Сервером автоматически.

При изменении или удалении контакта (группы), удалении записи "черного" списка:
  • при fmt = 0,1,2,3: OK
При запросе списка контактов:
  • при fmt = 0:
    phone = <phone>, name = <name>, group = <group>, first_name = <first_name>, last_name = <last_name>, middle_name = <middle_name>, birthday = <birthday>, id = <id>, comments = <comments>, tags = <tags>, phone_other = <phone_other>
    ...

  • при fmt = 1:
    <phone>,<name>,<group>,<first_name>,<last_name>,<middle_name>,<birthday>,<id>,<comments>,<tags>,<phone_other>
    ...

  • при fmt = 2:
    <list>
    <contact>
    <phone>phone</phone>
    <name>name</name>
    <group>group</group>
    <first_name>first_name</first_name>
    <last_name>last_name</last_name>
    <middle_name>middle_name</middle_name>
    <birthday>birthday</birthday>
    <id>id</id>
    <comments>comments</comments>
    <tags>tags</tags>
    <phone_other>phone_other</phone_other>
    </contact>
    ...
    </list>

  • при fmt = 3:
    [{
    "phone": "<phone>",
    "name": "<name>",
    "group": <group>,
    "first_name": "<first_name>",
    "last_name": "<last_name>",
    "middle_name": "<middle_name>",
    "birthday": "<birthday>",
    "id": "<id>",
    "comments": "<comments>",
    "tags": "<tags>",
    "phone_other": "<phone_other>"
    },
    ...]

Где:
<phone> – список номеров телефонов через любой разделитель. Для e-mail адресов заменяется на <mail>.
<name> – название контакта.
<group> – идентификатор группы, к которой принадлежит контакт.
<first_name> – имя.
<last_name> – фамилия.
<middle_name> – отчество.
<birthday> – дата рождения в формате дд.мм.гггг.
<id> – id контакта, назначенный Клиентом.
<comments> – комментарии.
<tags> – теги (метки).
<phone_other> – другие номера телефонов. По данным номерам рассылка сообщений не выполняется. Для e-mail адресов заменяется на <mail_other>.

При запросе списка групп:
  • при fmt = 0:
    id = <id>, name = <name>, number = <number>
    ...

  • при fmt = 1:
    <id>,<name>,<number>
    ...

  • при fmt = 2:
    <list>
    <group>
    <id>id</id>
    <name>name</name>
    <number>number</number>
    </group>
    ...
    </list>

  • при fmt = 3:
    [{
    "id": <id>,
    "name": "<name>",
    "number": <number>
    },
    ...]

Где:
<id> – идентификатор группы, назначенный Сервером при создании.
<name> – название группы.
<number> – номер группы для рассылок.

Примеры:

Создание контакта с именем "Contact", принадлежащего группе с ID = 321:

http://billing.smstraf.ru/sys/phones.php?add=1&login=alex&psw=123&phone=79999999999&name=Contact&grp=321
Создание группы с именем "Group":

http://billing.smstraf.ru/sys/phones.php?add_group=1&login=alex&psw=123&name=Group
Изменение имени контакта с номером телефона "79999999999" на новое имя "Contact1":

http://billing.smstraf.ru/sys/phones.php?chg=1&login=alex&psw=123&phone=79999999999&name=Contact1
Изменение названия группы с ID = 321 на новое название "Group1":

http://billing.smstraf.ru/sys/phones.php?chg_group=1&login=alex&psw=123&grp=321&name=Group1
Удаление контакта с номером телефона "79999999999":

http://billing.smstraf.ru/sys/phones.php?del=1&login=alex&psw=123&phone=79999999999
Удаление группы с ID = 321:

http://billing.smstraf.ru/sys/phones.php?del_group=1&login=alex&psw=123&grp=321
Получение списка контактов, принадлежащих группе с ID = 321:

http://billing.smstraf.ru/sys/phones.php?get=1&login=alex&psw=123&grp=321
Получение данных контакта с номером телефона "79999999999":

http://billing.smstraf.ru/sys/phones.php?get=1&login=alex&psw=123&phone=79999999999
Получение списка всех групп:

http://billing.smstraf.ru/sys/phones.php?get_group=1&login=alex&psw=123
Добавление телефона "79999999999" в "черный" список с блокировкой только массовых рассылок:

http://billing.smstraf.ru/sys/phones.php?add_black=1&login=alex&psw=123&phone=79999999999&type=1
Удаление телефона "79999999999" из "черного" списка:

http://billing.smstraf.ru/sys/phones.php?del_black=1&login=alex&psw=123&phone=79999999999

Сервер не принимает более трех одинаковых запросов в течение минуты на операции с группами, контактами или записями "черного" списка для снижения нагрузки и защиты от ошибок и зацикливаний в программе на стороне Клиента.


Получение информации об операторе

Для получения информации об операторе абонента необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/info.php?get_operator=1&login=<login>&psw=<password>&phone=<phone>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
phoneНомер телефона абонента.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Оператор не найден.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов или любых 100 запросов на получение информации об операторе абонента в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:

  • при fmt = 0: country = <country>, operator = <operator>, region = <region>, mcc = <mcc>, mnc = <mnc>, tz = <tz>

  • при fmt = 1: <country>,<operator>,<region>,<mcc>,<mnc>,<tz>

  • при fmt = 2:
    <info>
    <country>country</country>
    <operator>operator</operator>
    <region>region</region>
    <mcc>mcc</mcc>
    <mnc>mnc</mnc>
    <tz>tz</tz>
    </info>

  • при fmt = 3:
    {
    "country": "<country>",
    "operator": "<operator>",
    "region": "<region>",
    "mcc": "<mcc>",
    "mnc": "<mnc>",
    "tz": "<tz>"
    }

Где:
<country> – название страны регистрации номера абонента.
<operator> – мобильный оператор абонента.
<region> – регион регистрации номера абонента.
<mcc> – числовой код страны абонента.
<mnc> – числовой код оператора абонента.
<tz> – часовой пояс региона регистрации номера абонента.


Пример:

Получение информации об операторе абонента с номером "79999999999":

http://billing.smstraf.ru/sys/info.php?get_operator=1&login=alex&psw=123&phone=79999999999

Сервер не принимает более трех одинаковых запросов в течение минуты на получение информации об операторе абонента для снижения нагрузки и защиты от ошибок и зацикливаний в программе на стороне Клиента.

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


Получение истории отправленных сообщений

Для получения списка отправленных SMS-сообщений необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get.php?get_messages=1&login=<login>&psw=<password>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
phoneНомер или разделенный запятыми список номеров телефонов, для которых необходимо получить историю отправленных SMS-сообщений.
cntКоличество возвращаемых в ответе сообщений. Максимальное значение равно 100.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Сообщение не найдено.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов на получение истории исходящих сообщений в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:
  • при fmt = 0:
    Status = <status>, check_time = <last_date>, err = <err>, send_date = <send_date>, phone = <phone>, country = <country>, operator = <operator>, region = <region>, cost = <cost>, sender_id = <sender>, status_name = <status_name>, message = <message>, ID = <id>
    ...

  • при fmt = 1:
    <status>,<last_timestamp>,<err>,<send_timestamp>,<phone>,<country>,<operator>,<region>,<cost>,<sender>,<status_name>,<message>,<id>
    ...

  • при fmt = 2:
    <list>
    <sms>
    <status>status</status>
    <last_date>last_date</last_date>
    <last_timestamp>last_timestamp</last_timestamp>
    <err>err</err>
    <send_date>send_date</send_date>
    <send_timestamp>send_timestamp</send_timestamp>
    <phone>phone</phone>
    <cost>cost</cost>
    <sender_id>sender</sender_id>
    <status_name>status_name</status_name>
    <message>message</message>
    <country>country</country>
    <operator>operator</operator>
    <region>region</region>
    <id>id</id>
    </sms>
    ...
    </list>

  • при fmt = 3:
    [{
    "status": <status>,
    "last_date": "<last_date>",
    "last_timestamp": <last_timestamp>,
    "err": <err>,
    "send_date": "<send_date>",
    "send_timestamp": <send_timestamp>,
    "phone": "<phone>",
    "cost": "<cost>",
    "sender_id": "<sender>",
    "status_name": "<status_name>",
    "message": "<message>",
    "country": "<country>",
    "operator": "<operator>",
    "region": "<region>",
    "id": <id>
    },
    ...]

Где:
<status> – код статуса (список)
<last_date> – дата последнего изменения статуса. Формат DD.MM.YYYY hh:mm:ss.
<last_timestamp> – штамп времени последнего изменения статуса.
<err> – код ошибки, если сообщение не было доставлено.
<send_date> – дата отправки сообщения (формат DD.MM.YYYY hh:mm:ss).
<send_timestamp> – штамп времени отправки сообщения.
<phone> – номер телефона абонента.
<country> – название страны регистрации номера абонента.
<operator> – название оператора абонента.
<region> – регион регистрации номера абонента.
<cost> – стоимость сообщения.
<sender> – имя отправителя.
<status_name> – название статуса.
<message> – текст сообщения.
<id> – идентификатор сообщения.

Примеры:

Получение последних десяти исходящих SMS-сообщений:

http://billing.smstraf.ru/sys/get.php?get_messages=1&login=alex&psw=123&cnt=10
Получение последнего исходящего SMS-сообщения, отправленного на номер "79999999999":

http://billing.smstraf.ru/sys/get.php?get_messages=1&login=alex&psw=123&phone=79999999999

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


Получение входящих сообщений

Для получения списка входящих сообщений необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get.php?get_answers=1&login=<login>&psw=<password>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
hourПериод в часах, за который необходимо запросить входящие сообщения. Максимальное количество часов - 168 (7 дней).
after_idИдентификатор сообщения, начиная с которого необходимо вернуть входящие сообщения, за исключением самого after_id.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов на получение списка входящих сообщений в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:
  • при fmt = 0:
    id = <id>, received = <received>, phone = <phone>, message = <message>, to_phone = <to_phone>, sent = <sent>
    ...

  • при fmt = 1:
    <id>,<received>,<phone>,<to_phone>,<sent>,<message>
    ...

  • при fmt = 2:
    <sms_answers>
    <sms>
    <id>id</id>
    <received>received</received>
    <phone>phone</phone>
    <message>message</message>
    <to_phone>to_phone</to_phone>
    <sent>sent</sent>
    </sms>
    ...
    </sms_answers>

  • при fmt = 3:
    [{
    "id": <id>,
    "received": "<received>",
    "phone": "<phone>",
    "message": "<message>",
    "to_phone": "<to_phone>",
    "sent": "<sent>"
    },
    ...]

Где:
<id> – идентификатор входящего сообщения, назначаемый Сервером автоматически.
<received> – дата получения сообщения Сервером. Формат DD.MM.YYYY hh:mm:ss.
<phone> – номер телефона абонента.
<message> – входящее сообщение.
<to_phone> – номер телефона получателя.
<sent> – дата отправки сообщения. Формат DD.MM.YYYY hh:mm:ss.


Примеры:

Получение списка входящих сообщений за текущие сутки:

http://billing.smstraf.ru/sys/get.php?get_answers=1&login=alex&psw=123
Получение списка входящих сообщений за последние 48 часов:

http://billing.smstraf.ru/sys/get.php?get_answers=1&login=alex&psw=123&hour=48
Получение списка входящих сообщений с идентификаторами, большими id="1234567":

http://billing.smstraf.ru/sys/get.php?get_answers=1&login=alex&psw=123&after_id=1234567

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


Получение статистики

Для получения статистики отправленных сообщений необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get.php?get_stat=1&login=<login>&psw=<password>&start=<date1>&end=<date2>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
startНачальная дата в периоде, за который запрашивается статистика. Формат: 'дд.мм.гггг'.
endКонечная дата в периоде. Если не указана, то возвращаются данные с начальной даты. Формат: 'дд.мм.гггг'.
mycurФлаг, позволяющий выводить статистику в текущей валюте Клиента.
balance2Флаг, позволяющий получить статистику по отправленным сообщениям, оплаченным с электронного баланса.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов на получение списка входящих сообщений в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:
  • при fmt = 0:
    login = <login>, sms = <cnt>, credit = <credit>, debit = <debit>, currency = <currency>
    ...

  • при fmt = 1:
    <login>,<cnt>,<credit>,<debit>,<currency>
    ...

  • при fmt = 2:
    <list>
    <stat>
    <login>login</login>
    <sms>cnt</sms>
    <credit>credit</credit>
    <debit>debit</debit>
    <currency>currency</currency>
    </stat>
    ...
    </list>

  • при fmt = 3:
    [{
    "login": "<login>",
    "sms": "<cnt>",
    "credit": "<credit>",
    "debit": "<debit>",
    "currency": "<currency>"
    },
    ...]

Где:
<login> - логин Клиента.
<cnt> - количество сообщений.
<credit> - расход.
<debit> - приход.
<currency> - трехсимвольный код валюты.

Примеры:

Получение статистики в текущей валюте Клиента с "01.01.2014" по "01.02.2014":

http://billing.smstraf.ru/sys/get.php?get_stat=1&login=alex&psw=123&mycur=1&start=01.01.2014&end=01.02.2014

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


Получение статистики по оператору Мегафон

Для получения статистики по всем лицевым счетам необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get.php?get_mega_accounts=1&login=<login>&psw=<password>
Для получения статистики по определенному лицевому счету необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get.php?get_mega_accounts=1&login=<login>&psw=<password>&account=<account>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
accountНомер лицевого счета у оператора Мегафон.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Лицевые счета не найдены.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов на получение статистики в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:
  • при fmt = 0:
    account = <account>, phone = <phone>, sms_mon = <sms_mon>, sms_day = <sms_day>, sms_yes = <sms_yes>, sms_pmon = <sms_pmon>, balance = <balance>, credit = <credit>, senders = <senders>
    ...

  • при fmt = 1:
    <account>,<phone>,<sms_mon>,<sms_day>,<sms_yes>,<sms_pmon>,<balance>,<credit>,<senders>
    ...

  • при fmt = 2:
    <accounts>
    <account>
    <number>number</number>
    <phone>phone</phone>
    <sms_mon>sms_mon</sms_mon>
    <sms_day>sms_day</sms_day>
    <sms_yes>sms_yes</sms_yes>
    <sms_pmon>sms_pmon</sms_pmon>
    <balance>balance</balance>
    <credit>credit</credit>
    <senders>senders</senders>
    </account>
    ...
    </accounts>

  • при fmt = 3:
    [{
    "account": "<account>",
    "phone": "<phone>",
    "sms_mon": <sms_mon>,
    "sms_day": <sms_day>,
    "sms_yes": <sms_yes>,
    "sms_pmon": <sms_pmon>,
    "balance": "<balance>",
    "credit": <credit>,
    "senders": "<senders>"
    },
    ...]

Где:
<account> - номер лицевого счета.
<phone> - телефон, привязанный к лицевому счету.
<sms_mon> - количество смс, отправленных за текущий месяц.
<sms_day> - количество смс, отправленных за текущий день.
<sms_yes> - количество смс, отправленных за предыдущий день.
<sms_pmon> - количество смс, отправленных за предыдущий месяц.
<balance> - баланс.
<credit> - кредит.
<senders> - зарегистрированные имена отправителей.

Примеры:

Получение статистики по всем лицевым счетам:

http://billing.smstraf.ru/sys/get.php?get_mega_accounts=1&login=alex&psw=123
Получение статистики по лицевому счету "111":

http://billing.smstraf.ru/sys/get.php?get_mega_accounts=1&login=alex&psw=123&account=111

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


Запрос тарифов

Для получения списка тарифов указанного Клиента необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get.php?get_price=1&login=<login>&psw=<password>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов на получение списка тарифов в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде набора строк:
  • при fmt = 0:
    zone = <zone>, name = <name>, api = <api>, mass = <mass>, mms = <mms>, hlr = <hlr>, call = <call>
    ...

    при наличии установленных индивидуальных тарифов по определенным операторам к ответу добавляется набор строк:
    mccmnc = <mccmnc>, cost = <cost>
    ...

    mail = <mail>

  • при fmt = 1:
    <zone>,<name>,<api>,<mass>,<mms>,<hlr>,<call>
    ...

    <mccmnc>,<cost>
    ...

    <mail>

  • при fmt = 2:
    <price>
    <zones>
    <zone name="<name>" api="<api>" mass="<mass>" mms="<mms>" hlr="<hlr>" call="<call>">zone</zone>
    ...
    </zones>
    <codes>
    <mccmnc cost="<cost>">mccmnc</mccmnc>
    ...
    </codes>
    <mail>mail</mail>
    </price>

  • при fmt = 3:
    {
    "zones": [{
    "zone": "<zone>",
    "name": "<name>",
    "api": "<api>",
    "mass": "<mass>",
    "mms": "<mms>",
    "hlr": "<hlr>",
    "call": "<call>"
    },
    ...
    {
    ...
    }],
    "codes": [{
    "mccmnc": "<mccmnc>",
    "cost": "<cost>"
    },
    ...
    {
    ...
    }],
    "mail": "<mail>"
    }

Где:
<zone> - тарифная зона.
<name> - название тарифной зоны (оператор, страна и т.п.).
<api> - стоимость SMS при отправке через API.
<mass> - стоимость SMS при отправке через личный кабинет.
<mms> - стоимость MMS-сообщения.
<hlr> - стоимость HLR-запроса.
<call> - стоимость голосового сообщения (звонок).
<mccmnc> - код страны и мобильного оператора, для которого установлен индивидуальный тариф.
<cost> - стоимость сообщения по данному индивидуальному тарифу.
<mail> - стоимость e-mail сообщения.

Примеры:

Получение списка тарифов:

http://billing.smstraf.ru/sys/get.php?get_price=1&login=alex&psw=123

Сервер не принимает более трех одинаковых запросов в течение минуты на получение списка тарифов для снижения нагрузки и защиты от ошибок и зацикливаний в программе на стороне Клиента.


Редактирование лицевого счета у оператора Мегафон

Для редактирования лицевого счета необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/users.php?change_mega_accounts=1&login=<login>&psw=<password>&account=<account>&passwd=<passwd>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
accountНомер лицевого счета у оператора Мегафон.
passwdПароль к лицевому счету у оператора Мегафон.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Лицевой счет не найден.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:
  • при fmt = 0,1,2,3: OK

Примеры:

Редактирование лицевого счета № "111":

http://billing.smstraf.ru/sys/users.php?get_mega_accounts=1&login=alex&psw=123&account=111&passwd=321

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


Выгрузка портированных номеров

Для выгрузки полной базы портированных номеров необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get_mnp.php?login=<login>&psw=<password>
Для выгрузки ежедневных обновлений базы портированных номеров необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/get_mnp.php?login=<login>&psw=<password>&date=<date>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
dateДата, начиная с которой необходимо выгрузить портированные номера. Формат: 'дд.мм.гггг' или unix timestamp. Возможно указание даты не ранее 7 дней от текущей. Если не указывать, то выгрузится полный список в виде csv-файла mnp_list.csv с форматом строк: "телефон;mccmnc".
mccКод страны (например, Россия – 250).

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
4IP-адрес временно заблокирован.
9Попытка отправки более трех одинаковых запросов на выгрузку базы портированных номеров в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки:
  • при fmt = 0:
    phone = <phone>, mcc = <mcc>, mnc = <mnc>
    ...

  • при fmt = 1:
    <phone>,<mccmnc>
    ...

  • при fmt = 2:
    <phones>
    <phone mcc="<mcc>" mnc="<mnc>"></phone>
    ...
    </phones>

  • при fmt = 3:
    [{
    "phone": "<phone>",
    "mcc": <mcc>,
    "mnc": <mnc>
    },
    ...]

  • при любом fmt и без параметра date:
    Phone;mccmnc
    <phone>;<mccmnc>
    <phone>;<mccmnc>
    ...

Где:
<phone> - телефон абонента.
<mcc> - mcc код страны.
<mnc> - mnc код оператора. Значение, равное 0 указывает на то, что абонент вернулся к родному оператору.
<mccmnc> - код страны и код оператора вместе. Если mnc равно 0 – значит абонент вернулся к родному оператору.

Примеры:

Выгрузка портированных номеров начиная с "20.09.2014":

http://billing.smstraf.ru/sys/get_mnp.php?login=alex&psw=123&date=20.09.2014

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


Подключение выделенных номеров для приема сообщений

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

Для получения списка доступных выделенных номеров необходимо вызвать методом GET или POST следующий адрес: http://billing.smstraf.ru/sys/receive_phones.php?get=1&login=<login>&psw=<password>
Для подключения выделенного номера необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/receive_phones.php?buy=1&login=<login>&psw=<password>&phone=<phone>
Для изменения признака продления выделенного номера на следующий месяц необходимо вызвать методом GET или POST адрес: http://billing.smstraf.ru/sys/receive_phones.php?chg=1&login=<login>&psw=<password>&phone=<phone>&noprolong=<noprolong>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
phoneПодключаемый номер.
noprolongПризнак продления выделенного номера на следующий месяц. Данный параметр также возможно указывать при подключении номера в команде buy.
0 (по умолчанию) – включить автоматическое продление номера.
1 – отключить автоматическое продление номера.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Недостаточно средств на счете для аренды номера.
4IP-адрес временно заблокирован.
9Попытка отправки более двух одинаковых запросов на получение списка доступных для аренды номеров или подключение номера, либо изменение свойств выделенного номера в течение минуты.

В случае успешного запроса Сервер возвращает ответ в виде строки.

Для получения списка доступных номеров:
  • при fmt = 0:
    phone = <phone>, type = <type>, cost = <cost>, current_cost = <current_cost>, info = <info>
    ...

  • при fmt = 1:
    <phone>,<type>,<cost>,<current_cost>,<info>
    ...

  • при fmt = 2:
    <list>
    <receive_phone>
    <phone>phone</phone>
    <type>type</type>
    <cost>cost</cost>
    <current_cost>current_cost</current_cost>
    <info>info</info>
    </receive_phone>
    ...
    </list>

  • при fmt = 3:
    [{
    "phone": "<phone>",
    "type": <type>,
    "cost": "<cost>",
    "current_cost": "<current_cost>"
    "info": "<info>"
    },
    ...]

Где:
<phone> – номер телефона.
<type> – тип номера: 1 – выделенный виртуальный номер, 2 – номер на услуге SIM-хостинга.
<cost> – стоимость аренды номера за полный месяц.
<current_cost> – стоимость аренды номера за остаток дней до конца текущего месяца.
<info> – название оператора и поддерживаемые типы уведомлений.

Для аренды номера:
  • при fmt = 0: cost = <cost>

  • при fmt = 1: <cost>

  • при fmt = 2:
    <phone>
    <cost>cost</cost>
    </phone>

  • при fmt = 3:
    {
    "cost": "<cost>"
    }

Где:
<cost> – сумма, списанная со счета Клиента за аренду номера.

Для изменения признака продления номера:
  • при fmt = 0,1,2,3: OK

Примеры:

Получение списка свободных номеров для аренды:

http://billing.smstraf.ru/sys/receive_phones.php?get=1&login=alex&psw=123
Подключение номера "79999999999":

http://billing.smstraf.ru/sys/receive_phones.php?buy=1&login=alex&psw=123&phone=79999999999
Отключение возможности продления выделенного номера "79999999999" на следующий месяц:

http://billing.smstraf.ru/sys/receive_phones.php?chg=1&login=alex&psw=123&phone=79999999999&noprolong=1

Сервер не принимает более двух одинаковых запросов в течение минуты на получение списка свободных для аренды номеров или подключение номера, либо изменение свойств выделенного номера для снижения нагрузки и защиты от ошибок и зацикливаний в программе на стороне Клиента.


Управление именами отправителей (Sender ID)

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

Для получения списка зарегистрированных в личном кабинете и допущенных модератором имен отправителей: http://billing.smstraf.ru/sys/senders.php?get=1&login=<login>&psw=<password>
Для добавления нового имени отправителя: http://billing.smstraf.ru/sys/senders.php?add=1&login=<login>&psw=<password>&sender=<sender>&cmt=<cmt>
Отправка кода подтверждения для цифрового имени отправителя: http://billing.smstraf.ru/sys/senders.php?send_code=1&login=<login>&psw=<password>&sender=<sender>
Подтверждение цифрового имени отправителя: http://billing.smstraf.ru/sys/senders.php?check_code=1&login=<login>&psw=<password>&sender=<sender>&code=<code>
Для удаления имени отправителя: http://billing.smstraf.ru/sys/senders.php?del=1&login=<login>&psw=<password>&sender=<sender>
либо: http://billing.smstraf.ru/sys/senders.php?del=1&login=<login>&psw=<password>&id=<id>
Описание параметров, передаваемых Серверу:

ПараметрЗначение
loginЛогин Клиента.
pswПароль Клиента или MD5-хеш пароля в нижнем регистре.
all0 (по умолчанию) – получить список активированных имен отправителей.
1 – получить полный список имен отправителей.
senderСоздаваемое или удаляемое имя отправителя.
mega1 – зарегистрировать имя у оператора Мегафон по тарифу с бесплатными именами.
mts1 – зарегистрировать имя у оператора MTS.
tele21 – зарегистрировать имя у оператора Tele2 по тарифу с бесплатными именами.
mega_step1 – зарегистрировать платное имя у оператора Мегафон.
bee_step1 – зарегистрировать платное имя у оператора Билайн.
motiv_step1 – зарегистрировать платное имя у оператора MOTIV.
mts_step1 – зарегистрировать платное имя у оператора MTS.
tele2_step1 – зарегистрировать платное имя у оператора Tele2.
ua_reg1 – зарегистрировать имя для Украины на пониженный тариф по национальному трафику.
ua_int1 – зарегистрировать имя для Украины по более высокому тарифу для международного трафика.
idИдентификатор имени отправителя, назначаемый Сервером автоматически при создании нового имени.
cmtКомментарий, указываемый при создании имени отправителя.
codeКод для подтверждения цифрового имени отправителя.
siteАдрес сайта, от которого будут приходить коды для подтверждения цифровых имен отправителей. Данный параметр должен быть ранее добавлен и активирован в качестве Sender ID. Если не указан, то сообщения будут приходить от имени отправителя по умолчанию.
userЛогин субклиента, к которому применяется указанная команда.
operators1 – добавить в ответ код статуса имени отправителя у оператора.

В случае ошибки Сервер возвращает следующую строку:
  • ERROR = N (описание)

  • При fmt = 1:
    0,-N

  • При fmt = 2:
    <result>
    <error>описание</error>
    <error_code>N</error_code>
    </result>

  • При fmt = 3:
    {
    "error": "описание",
    "error_code": N
    }
N – номер ошибки, может принимать следующие значения:

ЗначениеОписание
1Ошибка в параметрах.
2Неверный логин или пароль.
3Имя отправителя не найдено.
4IP-адрес временно заблокирован.
5Ошибка сохранения или удаления имени отправителя.
7Неверный формат номера.
8Код подтверждения на указанный номер не может быть доставлен.
9Попытка отправки более трех одинаковых запросов на получение списка доступных имен отправителей или пяти запросов на создание нового имени отправителя в течение минуты.
10Код уже был отправлен на указанный номер. Повторная попытка возможна через 8 часов.
11Неверный код подтверждения.

В случае успешного запроса Сервер возвращает ответ в виде строки.

При запросе списка имен отправителей:
  • при fmt = 0 и all = 0:
    name = <sender>
    ...

  • при fmt = 1 и all = 0:
    <sender>
    ...

  • при fmt = 2 и all = 0:
    <list>
    <sender>sender</sender>
    ...
    </list>

  • при fmt = 3 и all = 0:
    [{
    "sender": "<sender>"
    },
    ...]

  • при fmt = 0 и all = 1:
    name = <sender>, status = <status>
    ...

  • при fmt = 1 и all = 1:
    <sender>,<status>
    ...

  • при fmt = 2 и all = 1:
    <list>
    <sender status="<status>">sender</sender>
    ...
    </list>

  • при fmt = 3 и all = 1:
    [{
    "sender": "<sender>",
    "status": <status>
    },
    ...]

  • при fmt = 0 и operators = 1:
    name = <sender>, mega = <mega_status>, mts = <mts_status>, mega_step = <mega_step_status>, bee_step = <bee_step_status>, motiv_step = <motiv_step_status>, mts_step = <mts_step_status>, tele2_step = <tele2_step_status>, tele2 = <tele2_status>, ua_reg = <ua_reg_status>, ua_int = <ua_int_status>
    ...

  • при fmt = 1 и operators = 1:
    <sender>,<mega_status>,<mts_status>,<mega_step_status>,<bee_step_status>,<motiv_step_status>,<mts_step_status>,<tele2_step_status>, <tele2_status>,<ua_reg_status>,<ua_int_status>
    ...

  • при fmt = 2 и operators = 1:
    <list>
    <sender mega="<mega_status>" mts="<mts_status>" mega_step="<mega_step_status>" bee_step="<bee_step_status>" motiv_step="<motiv_step_status>" mts_step="<mts_step_status>" tele2_step="<tele2_step_status>" tele2="<tele2_status>" ua_reg="<ua_reg_status>" ua_int="<ua_int_status>">sender</sender>
    ...
    </list>

  • при fmt = 3 и operators = 1:
    [{
    "sender": "<sender>",
    "mega": "<mega_status>",
    "mts": "<mts_status>",
    "mega_step": "<mega_step_status>",
    "bee_step": "<bee_step_status>",
    "motiv_step": "<motiv_step_status>",
    "mts_step": "<mts_step_status>",
    "tele2_step": "<tele2_step_status>",
    "tele2": "<tele2_status>",
    "ua_reg": "<ua_reg_status>",
    "ua_int": "<ua_int_status>"
    },
    ...]

Где:
<sender> – зарегистрированное и допущенное к использованию имя отправителя.
<mega_status>, <mts_status>, <mega_step_status>, <bee_step_status>, <motiv_step_status>, <mts_step_status>, <tele2_step_status>, <tele2_status>, <ua_reg_status>, <ua_int_status> – код статуса имени отправителя у соответствующего оператора (0 - ожидает регистрации, 1 - отправлено на регистрацию, 2 - допущено оператором, 3 - не принято оператором, 4 - временно отключено, 5 - автоотключение из-за окончания баланса, 6 - дубль другого имени (конфликт)).
<status> – статус имени отправителя (0 - ожидает модерации, 1 - допущено к использованию, 2 - выключено).

При добавлении нового имени отправителя:
  • при fmt = 0: ID = <id>

  • при fmt = 1: <id>

  • при fmt = 2:
    <sender>
    <id>id</id>
    </sender>

  • при fmt = 3:
    {
    "sender": <id>
    }

Где:
<id> – идентификатор имени отправителя, назначенный Сервером автоматически.

При отправке кода, подтверждении и удалении имени отправителя:
  • при fmt = 0,1,2,3: OK

Примеры:

Получение списка имен отправителей:

http://billing.smstraf.ru/sys/senders.php?get=1&login=alex&psw=123
Добавление нового имени отправителя:

http://billing.smstraf.ru/sys/senders.php?add=1&login=alex&psw=123&sender=my_shop&cmt=test
Отправка кода подтверждения для цифрового имени отправителя:

http://billing.smstraf.ru/sys/senders.php?send_code=1&login=alex&psw=123&sender=79999999999
Отправка кода подтверждения цифрового имени отправителя для субклиента "subalex" от имени "mysite.ru":

http://billing.smstraf.ru/sys/senders.php?send_code=1&login=alex&psw=123&sender=79999999999&user=subalex&site=mysite.ru
Подтверждение цифрового имени отправителя:

http://billing.smstraf.ru/sys/senders.php?check_code=1&login=alex&psw=123&sender=79999999999&code=338824
Удаление имени отправителя:

http://billing.smstraf.ru/sys/senders.php?del=1&login=alex&psw=123&sender=my_shop

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


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

В личном кабинете Клиента в "Настройках пользователя" имеется возможность указания http-адреса (URL) скрипта для обработки статусов доставки SMS-сообщений и (или) входящих SMS-сообщений на стороне Клиента. Указанный скрипт будет вызываться Сервером после каждого получения статуса доставки ранее отправленного Клиентом SMS-сообщения и (или) после получения входящего SMS-сообщения от абонента.

В адресе обработчика можно указать параметр charset для выбора кодировки передаваемых параметров: ?charset=utf-8
?charset=koi8-r
?charset=windows-1251
По умолчанию используется кодировка windows-1251.

Для защиты передаваемых данных от подмены в адресе обработчика дополнительно можно указать любой из параметров md5, sha1, crc32, определяющих алгоритм подсчета контрольного параметра с хешем строки:
"id:phone:status:<секретная строка>" − для статуса доставки
"phone:mes:to:<секретная строка>" − для входящего сообщения
в виде:
?md5=<секретная строка>
?sha1=<секретная строка>
?crc32=<секретная строка>
В качестве символов секретной строки можно использовать латинские буквы, цифры, минус и подчеркивание. Обработчику будет передан соответствующий параметр, в котором секретная строка будет заменена на значение хеша передаваемых данных.

Все параметры передаются методом POST.

Передаваемые параметры для статуса SMS-сообщения:

ПараметрЗначение
idИдентификатор сообщения.
phoneНомер телефона.
statusСтатус сообщения.
timeВремя изменения статуса (или доставки SMS-сообщения абоненту).
Формат: DD.MM.YY hh:mm:ss (по часовому поясу, указанному в настройках).
tsВремя изменения статуса в виде штампа в секундах.
errКод ошибки, если сообщение не может быть доставлено (список). Передается, если не равен нулю.
cntКоличество частей (при отправке SMS-сообщения) либо 5-секундных блоков (при голосовом сообщении (звонке)).
dtmfПоследовательность символов, набираемая абонентом на цифровой клавиатуре во время прослушивания голосового сообщения (звонка).
md5MD5-хеш строки "id:phone:status:<секретная строка>". Передается, если был указан в качестве дополнительного параметра в http-адресе обработчика.
sha1sha1-хеш строки "id:phone:status:<секретная строка>". Передается, если был указан в качестве дополнительного параметра в http-адресе обработчика.
crc32Контрольная сумма crc32 строки "id:phone:status:<секретная строка>". Передается, если был указан в качестве дополнительного параметра в http-адресе обработчика.
Дополнительные параметры для HLR-запросов
imsiУникальный код IMSI SIM-карты абонента.
mscНомер сервис-центра оператора, в сети которого находится абонент.
mccЧисловой код страны абонента.
mncЧисловой код оператора абонента.
cnНазвание страны регистрации абонента.
netНазвание оператора регистрации абонента.
rcnНазвание роуминговой страны абонента при нахождении в чужой сети.
rnetНазвание роумингового оператора абонента при нахождении в чужой сети.

Передаваемые параметры для входящего SMS-сообщения:

ПараметрЗначение
idУникальный идентификатор входящего сообщения, назначаемый Сервером автоматически.
sms_idИдентификатор сообщения, на которое получен ответ. Данный параметр отсутствует, если сообщение пришло не в качестве ответа (такие сообщения возможны при указании префикса "логин, двоеточие и пробел" либо при использовании выделенного входящего номера).
phoneНомер телефона абонента.
mesТекст SMS-сообщения.
toВходящий номер телефона, на который было отправлено сообщение абонентом.
sentВремя отправки сообщения абонентом в виде штампа в секундах.
timeВремя получения сообщения Сервером в виде штампа в секундах.
md5MD5-хеш строки "phone:mes:to:<секретная строка>". Передается, если был указан в качестве дополнительного параметра в http-адресе обработчика.
sha1sha1-хеш строки "phone:mes:to:<секретная строка>". Передается, если был указан в качестве дополнительного параметра в http-адресе обработчика.
crc32Контрольная сумма crc32 строки "phone:mes:to:<секретная строка>". Передается, если был указан в качестве дополнительного параметра в http-адресе обработчика.

Помимо описанных выше стандартных параметров Сервер также будет передавать методом POST все параметры, указанные в http-адресе обработчика после знака "?".

Для различия входящего сообщения и статуса в одном обработчике можно выполнить проверку на наличие параметра mes: if (isset($_POST["mes"])) {
   
// message
}
else {
   
// status
}

Пересылка статусов на обработчик Клиента осуществляется только при отправке SMS-сообщений по протоколам HTTP/HTTPS, SMTP или SMPP. При отправке сообщений с личного кабинета передача статусов на обработчик Клиента не происходит.


Подключение антиспам проверки (captcha) к сайту

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

Для этого достаточно на форме для отправки сообщений разместить специальный код для вывода картинки (captcha) и поля для ввода кода:

Код с картинки <img src="http://billing.smstraf.ru/sys/imgcode.php?1.1" onclick="src+=1" width="50" height="18" border="1">
<
input type="text" size="9" name="code">
и передать его с другими данными формы в соответствующий скрипт отправки сообщений в качестве значения параметра imgcode.

Также с данным параметром необходимо передавать значение IP-адреса пользователя, которому отображалась картинка в качестве значения параметра userip.

Примеры:

Пример скрипта для отправки сообщений, использующего код с картинки (captcha), полученный с формы:

include_once "smsc_api.php";

if (
$_POST["sendsms"]) {
   
$r = send_sms($_POST["phone"], "Ваш код для регистрации на сайте mysite.com 123321.", 0, 0, 0, 0, false,
               
"imgcode=".$_POST["code"]."&userip=".$_SERVER["REMOTE_ADDR"]);

if (
$r[1] > 0)
    echo
"<script>alert('Сообщение отправлено на номер ".$_POST["phone"]."')</script>";
elseif (
$r[1] == -10)
    echo
"<script>alert('Вы ввели неверный код с картинки!')</script>";
}



Изменение тарифов на отправку SMS-сообщений в сеть операторов Теле2/Altel (Казахстан)
19.01.2024
С 23 января изменяются цены на отправку SMS-сообщений от международных имен отправителей в сеть операторов связи Теле2/Altel (Казахстан). Повышение вызвано изменением тарифов со стороны операторов связи. Новая стоимость SMS-сообщения указана на сайте на странице .