Структура HTTP POST-запроса
Основные параметры:
[user] => login зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X [pass] => password пароль пользователя Адрес обращения: http://web.smsgold.ru/http2/ или https://web.smsgold.ru/http2/ Тип авторизации: PLAIN (открытым текстом) Метод отправки запроса: POST Кодировка: UTF-8 Content-Type: application/x-www-form-urlencoded
Максимальная длина сообщений: 480 символов.
Авторизация

Авторизация требуется при каждом подключении к серверу независимо от дальнейших действий.
| Параметр | Значение |
|---|---|
| [user] | зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X |
| [pass] | пароль пользователя |
Отправка сообщения
Параметры передачи смс http-серверу в виде POST-запроса (определить, что идет отправка SMS можно по полю [action] => send):
| Параметр | Значение |
|---|---|
| [action] | send |
| [text] | текст сообщения |
| [number] | номер или список телефонных номеров получателей SMS в международном формате через запятую
(Разрешается использование как [number], так и [base_id]) |
| [base_id] | кодовое имя Группы контактов из Адресной книги в Личном кабинете
(Разрешается использование как [number], так и [base_id]) |
| [sender] | имя отправителя (если оставить пустым или параметр отсутствует - будет использовано имя отправителя, зарегистрированное по умолчанию в Личном кабинете) |
| [validity_period] | время жизни смс в минутах - максимальное время, в течение которого сообщение должно быть доставлено на телефон. Если в течение этого времени доставка не возможна (например абонент не в зоне действия сети или телефонный аппарат абонента выключен), то сообщение доставлено не будет и получит статус "просрочено". Внимание, данная функция может не работает для некоторых направлений, например для CDMA телефонов. (необязательный параметр, значение по умолчанию: 1440 минут (24 часа)) |
| [time_period] | период отправки сообщения в формате "H:i-H:i" (час:мин-час:мин), в течение которого сообщение должно быть доставлено получателям (например 10:00-21:00). Опция позволяет запретить доставку сообщений, например, в ночное время. Для указанного периода времени можно уточнить часовой пояс в [time_local] |
| [time_local] | выбор часового пояса для опции [time_period]:
1 - по местному время получателя 0 - по часовому поясу, выбранному в личном кабинете отправителя (значение по умолчанию) |
| [autotrimtext] | on - обрезать все пробелы и переводы строк в начале и конце сообщения (значение по умолчанию - off) |
| [sms_type] | тип SMS:
пустое значение или параметр отсутствует - простое SMS (значение по умолчанию) W - wap push сообщение F - flash SMS сообщение |
| [wap_url] | HTTP ссылка из текста сообщения (http://some.address.url) используется только для [sms_type] => W, то есть для wap push сообщения |
Пример запроса к серверу для отправки текста на один номер (развернуть)...
Пример запроса на PHP:
<?php
header('Content-type: text/xml');
$ch = curl_init();
$data = array(
'user' => '10XXX',
'pass' => 'PASSWORD',
'action' => 'send',
'sender' => 'SmsGold',
'number' => '79XXXXXXXXX',
'text' => 'Текст Вашего смс сообщения'
);
curl_setopt($ch, CURLOPT_URL, 'http://web.smsgold.ru/http2/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$res = curl_exec($ch);
curl_close($ch);
echo $res;
?>
Пример ответа сервера при отправке текста на один номер (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
*err="" - номер ошибки, возникшей при отправке, если ошибки нет, то err=null либо err="0"
(может быть как для всего пакета смс - ошибка обработки самого запроса, так и для одного конкретного номера - ошибка номера, направления и т.д.)
Пример запроса к серверу для отправки текста на несколько номеров (развернуть)...
Пример запроса на PHP:
<?php
header('Content-type: text/xml');
$ch = curl_init();
$data = array(
'user' => '10XXX',
'pass' => 'PASSWORD',
'action' => 'send',
'sender' => 'SmsGold',
'number' => '79XXXXXXXXX,79XXXXXXXXX',
'text' => 'Текст Вашего смс сообщения'
);
curl_setopt($ch, CURLOPT_URL, 'http://web.smsgold.ru/http2/');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$res = curl_exec($ch);
curl_close($ch);
echo $res;
?>
Пример ответа сервера при отправке текста на несколько номеров (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
*err="" - номер ошибки, возникшей при отправке, если ошибки нет, то err=null либо err="0"
(может быть как для всего пакета смс - ошибка обработки самого запроса, так и для одного конкретного номера - ошибка номера, направления и т.д.)
Получение статусов сообщений
Имеется три варианта получения статусов для сообщений (определить, что идет получение статуса SMS можно по полю [action] => status):
| Параметр | Значение |
|---|---|
| [action] | status |
| Три варианта получения статусов для сообщений: | |
| [sms_id] | номер сообщения (соответствует значению атрибута sms_id тэга <sms>, возвращаемого при отправке сообщения) |
| [sms_group_id] | номер рассылки (соответствует значению атрибута sms_group_id тэга <result>, возвращаемого при отправке сообщений) |
| [date_from] [date_to] |
данные по всем сообщениям за период времени от [date_from] до [date_to]
формат date_from, date_to: "d.m.Y H:i:s" (дд.мм.гггг час:мин:сек) период не должен быть больше 4 дней до текущей даты |
Возможные статусы:
QUEUED - сообщение находится в обработке на нашей стороне ENROUTE - сообщение отправлено оператору DELIVRD - сообщение успешно доставлено EXPIRED - время жизни сообщения истекло DELETED - сообщение удалено UNDELIV - не удалось доставить сообщение ACCEPTD - сообщение принято и будет отправлено оператору UNKNOWN - состояние сообщения не определено REJECTD - сообщение отклонено
Пример ответа сервера на запрос статуса смс по [sms_id] (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Пример ответа сервера на запрос статуса смс по [sms_group_id] (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Пример ответа сервера на запрос статуса смс по [date_from] и [date_to] (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Поле атрибута description тега <sms> в ответе сервера при получении статусов сообщений может принимать следующие значения:
- Некорректный номер телефона
- Недостаточно средств на счету
- Нет денег на счету вышестоящего контрагента
- Отправка заблокирована, номере телефона находится в черном списике
- Запрещено посылать сообщение с тем же текстом тому же адресату
- Ошибка транспорта
- Данное направление не подключено
- Данное направление не подключено у вышестоящего контрагента
- Сообщение не прошло модерацию 1
- Сообщение не прошло модерацию 2
- Данная подпись отпраавтеля не подтверждена
- Отправка в данный период времени запрещена настройками Вашего ЛК
- Статус "не удалось доставить сообщение" получен от оператора
Получение статусов сообщений на свой URL
При получении финального статуса по каждой из отправленных SMS на Ваш URL адрес, указанный в настройках ("Личный кабинет \ Настройки \ URL скрипта для приёма статуса отправленных SMS"), по HTTP протоколу методом POST будет передан запрос, содержащий JSON данные с заголовком Content-Type: application/json;charset=utf-8.
Если Ваш сервер не вернул корректный HTTP-статус, то будет осуществлено несколько попыток отправки финального статуса сообщения по следующей логике:
2 попытка через 5 минут после предыдущей, если она завершилась не корректно;
3 попытка через 10 минут после предыдущей, если она завершилась не корректно;
4 финальная попытка через 15 минут после предыдущей, если она завершилась не корректно;
Ваш скрипт должен вернуть HTTP-статус - 200 OK (успешный запрос).
Содержимое объекта JSON:
| Параметр | Значение |
|---|---|
| [user] | зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X |
| [sms_id] | номер сообщения (соответствует значению атрибута sms_id тэга <sms>, возвращаемого при отправке сообщения) |
| [number] | номер телефонного номера получателя SMS в международном формате |
| [sender] | имя отправителя |
| [parts] | количество частей SMS |
| [err] | номер ошибки, возникшей при отправке, если ошибки нет, то err=null либо err="0" |
| [status] | финальный статус SMS |
| [description] | описание статуса |
| [delivery_date] | дата доставки в формате "d.m.Y" (дд.мм.гггг) |
| [delivery_time] | время доставки в формате "H:i:s" (час:мин:сек) |
Получение текущего баланса
Структура POST-запроса к http-серверу для получения баланса пользователя (определить, что идет запрос на получение текущего баланса можно по полю [action] => balance):
| Параметр | Значение |
|---|---|
| [action] | balance |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Получение входящих сообщений
Структура POST-запроса к http-серверу для получения входящих сообщений (определить, что идет запрос на получение входящих сообщений можно по полю [action] => inbox):
| Параметр | Значение |
|---|---|
| [action] | inbox |
| [inbox_num] | номер входящего ящика (обязательный параметр) (соответствует значению "ID ящика" в закладке "Настройки") |
| [inbox_new] | статус сообщений:
1 - только новые непрочитанные сообщения 0 - все сообщения |
| [date_from] [date_to] |
данные по всем сообщениям за период времени от [date_from] до [date_to]
формат date_from, date_to: "d.m.Y H:i:s" (дд.мм.гггг час:мин:сек) период не должен быть больше 4 дней до текущей даты |
Получение списка доступных имен отправителей
Структура POST-запроса к http-серверу для получения списка доступных имен отправителей (определить, что идет запрос на получение списка доступных имен отправителей можно по полю [action] => senderlist):
| Параметр | Значение |
|---|---|
| [action] | senderlist |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Получение списка групп контактов
Структура POST-запроса к http-серверу для получения списка групп контактов (определить, что идет запрос на получение списка групп контактов можно по полю [action] => baselist):
| Параметр | Значение |
|---|---|
| [action] | baselist |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Получение списка абонентов в группе контактов
Структура POST-запроса к http-серверу для получения списка абонентов в группе контактов (определить, что идет запрос на получение списка абонентов в группе контактов можно по полю [action] => numberlist):
| Параметр | Значение |
|---|---|
| [action] | numberlist |
| [base_id] | кодовое имя группы (задается в настройках базы в личном кабинете) |
| [base_page] | номер страницы, весь список номеров базы делится на страницы (на одной странице выводится 1000 записей), запросить целиком базу нельзя, можно лишь запросить отдельную страницу, нумерация начинается с единицы. |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Добавление/Редактирование абонентов в группе контактов
Структура POST-запроса к http-серверу для добавления/редактирования абонентов в группе контактов (определить, что идет запрос на добавление/редактирование абонентов в группе контактов можно по полю [action] => numberedit):
| Параметр | Значение |
|---|---|
| [action] | numberedit |
| [base_id] | кодовое имя группы (задается в настройках базы в личном кабинете) |
| [number] | номер телефона абонента в международном формате (обязательное поле), если абонент с таким номером уже существует, то он будет отредактирован с учетом указанных необязательных полей |
| [name] | имя (необязательное поле) |
| [surname] | фамилия (необязательное поле) |
| [patronymic] | отчество (необязательное поле) |
| [show_name] | имя для отображения (необязательное поле) |
| [gender] | пол (необязательное поле) |
| [position] | должность (необязательное поле) |
| [email] | электронная почта (необязательное поле) |
| [date_of_birth] | дата рождения в виде дд.мм.гггг (необязательное поле) |
| [add_field_1] | дополнительное поле 1 (необязательное поле) |
| [add_field_2] | дополнительное поле 2 (необязательное поле) |
| [comment] | примечание (необязательное поле) |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Удаление абонентов из группы контактов
Структура POST-запроса к http-серверу для удаления абонентов из группы контактов (определить, что идет запрос на удаление абонентов из группы контактов можно по полю [action] => numberdel):
| Параметр | Значение |
|---|---|
| [action] | numberdel |
| [base_id] | кодовое имя группы (задается в настройках базы в личном кабинете) |
| [number] | номер телефона абонента в международном формате (обязательное поле) |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Получение списка запрещенных номеров
Структура POST-запроса к http-серверу для получения списка запрещенных номеров (определить, что идет запрос на получение списка запрещенных номеров можно по полю [action] => stoplist):
| Параметр | Значение |
|---|---|
| [action] | stoplist |
| [base_page] | номер страницы, весь список запрещенных номеров делится на страницы (на одной странице выводится 1000 записей), запросить целиком список нельзя, можно лишь запросить отдельную страницу, нумерация начинается с единицы. |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Добавление запрещенных номеров
Структура POST-запроса к http-серверу для добавления запрещенных номеров (определить, что идет запрос на добавление запрещенных номеров можно по полю [action] => stopadd):
| Параметр | Значение |
|---|---|
| [action] | stopadd |
| [number] | номер телефона абонента в международном формате (обязательное поле) |
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Добавление абонентов в группу контактов (через загрузку файла)
Структура POST-запроса к http-серверу для добавления абонентов в группу контактов через загрузку файла (определить, что идет запрос на добавление абонентов в группу контактов через загрузку файла можно по полю [action] => numberaddfile):
| Параметр | Значение |
|---|---|
| [action] | numberaddfile |
| [base_id] | кодовое имя группы (задается в настройках базы в личном кабинете) |
| [file] | путь к файлу |
| [file_type] | тип файла (csv / txt / xls / xlsx / auto) (значение auto - по умолчанию) |
| [delimiter] | разделитель полей (, / ; / auto) (значение auto - по умолчанию) |
| [encoding] | кодировка файла (utf8 / cp1251 / koi8r / auto) (значение auto - по умолчанию) |
| [remove_doubles] | поведение при обнаружении дублей в файле и в базе:
true - не добавлять дублирующиеся номера, попадающиеся в файле и в базе (значение по умолчанию) false - добавлять дублирующиеся номера, попадающиеся в файле и добавлять номер если он уже присутствует в базе |
| [headers] | перечисление через запятую заголовков колонок в порядке их очередности в файле:
"number,name,surname,patronymic,show_name,gender, position,email,date_of_birth,add_field_1,add_field_2,comment" если поле отсутствует - указывать не нужно |
| Список допустимых колонок данных: | |
| [number] | номер телефона абонента в международном формате (обязательное поле) |
| [name] | имя (необязательное поле) |
| [surname] | фамилия (необязательное поле) |
| [patronymic] | отчество (необязательное поле) |
| [show_name] | имя для отображения (необязательное поле) |
| [gender] | пол (необязательное поле) |
| [position] | должность (необязательное поле) |
| [email] | электронная почта (необязательное поле) |
| [date_of_birth] | дата рождения в виде дд.мм.гггг (необязательное поле) |
| [add_field_1] | дополнительное поле 1 (необязательное поле) |
| [add_field_2] | дополнительное поле 2 (необязательное поле) |
| [comment] | примечание (необязательное поле) |
ВАЖНО: номера телефонов в добавляемом файле должны быть представлены в международном формате без символа "+" (например: 7XXXXXXXXXX)
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>
Добавление запрещенных номеров (через загрузку файла)
Структура POST-запроса к http-серверу для добавления запрещенных номеров через загрузку файла (определить, что идет запрос на добавление запрещенных номеров через загрузку файла можно по полю [action] => stopaddfile):
| Параметр | Значение |
|---|---|
| [action] | stopaddfile |
| [file] | путь к файлу |
| [file_type] | тип файла (csv / txt / xls / xlsx / auto) (значение auto - по умолчанию) |
| [delimiter] | разделитель полей (, / ; / auto) (значение auto - по умолчанию) |
| [encoding] | кодировка файла (utf8 / cp1251 / koi8r / auto) (значение auto - по умолчанию) |
При добавлении запрещенных номеров (через загрузку файла) все дубли пропускаются
ВАЖНО: номера телефонов в добавляемом файле должны быть представлены в международном формате без символа "+" (например: 7XXXXXXXXXX)
Пример ответа сервера на запрос (развернуть)...
<?xml version="1.0" encoding="UTF-8"?>

Номера телефонов в любых типах запросов должны быть представлены в международном формате без символа "+" (например: 7XXXXXXXXXX)
Использование протокола НТТP (GET-запросы) для отправки и приема смс сообщений
Отправка сообщения
Список параметров:
| Имя параметра | Значение параметра |
|---|---|
| user | Зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X |
| pass | Пароль пользователя |
| sender | Подпись отправителя, строка длиной до 11 символов (текст) или до 16 символов (номер) в зависимости от типа. Параметр не может быть пустым. Имя отправителя обязательно должно быть одобрено в личном кабинете на платформе. |
| number | Телефонный номер получателя SMS в международном формате без символа "+", строка длиной до 129 символов. Если сообщение отправляется на несколько номеров, то указывается несколько номеров через запятую (не более 10). Параметр не может быть пустым. |
| text | Текст, передаваемый в SMS |
Пример отправляемого запроса:
https://web.smsgold.ru/http2/?user=LOGIN&pass=PASSWORD&sender=SENDERNAME&number=79XXXXXXXXX&text=ТЕКСТ+ВАШЕЙ+СМС
Корректный ответ сервера при отправке сообщения:
XXXXXXXXXXX
или
XXXXXXXXXXX,XXXXXXXXXXX,XXXXXXXXXXX,...
- XXXXXXXXXXX - уникальный идентификатор SMS в системе ESME
Проверка статуса
Список параметров
| Имя параметра | Значение параметра |
|---|---|
| user | Зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X |
| pass | Пароль пользователя |
| smsid | Уникальный идентификатор, ранее переданного SMS, в системе ESME |
Пример отправляемого запроса:
https://web.smsgold.ru/http2/?user=LOGIN&pass=PASSWORD&smsid=XXXXXXXXXXX
При успешной обработке HTTP-запроса сервером в ответ придет статус смс сообщения с запрошенным smsid.
Возможные статусы:
QUEUED - сообщение находится в обработке на нашей стороне ENROUTE - сообщение отправлено оператору DELIVRD - сообщение успешно доставлено EXPIRED - время жизни сообщения истекло DELETED - сообщение удалено UNDELIV - не удалось доставить сообщение ACCEPTD - сообщение принято и будет отправлено оператору UNKNOWN - состояние сообщения не определено REJECTD - сообщение отклонено
Проверка информации о балансе
Список параметров
| Имя параметра | Значение параметра |
|---|---|
| user | Зарегистрированное в системе ID пользователя вида XXXXX или ХХХХХ.X |
| pass | Пароль пользователя |
| action | balance |
Пример отправляемого запроса:
https://web.smsgold.ru/http2/?user=LOGIN&pass=PASSWORD&action=balance
При успешной обработке HTTP-запроса сервером в ответ придет баланс клиента в рублях
Ограничение на передачу специальных символов в тексте SMS
Для предотвращения ошибок при обработке HTTP-запросов и ответов, символы в тексте сообщения, которые используются как служебные в языке XML и HTML, необходимо заменять. Замена производится в запросах по таблице слева направо.
| Специальный символ | Замена на |
|---|---|
Использование протокола SMPP v.3.4 для отправки и приема смс сообщений.
Внимание: Перед началом использования smpp протокола Вам необходимо предоставить список IP адресов, с которых Вы будете подключаться.
Параметры подключения
- system_id — зарегистрированное в системе имя пользователя (логин)
- password — пароль пользователя
- Адрес — web.smsgold.ru
- Порт — 2604
Правила работы с SMPP подключением
- При установке подключения клиенту дается 10 секунд, что бы отправить команду BIND_TRANSMITTER или BIND_TRANSCEIVER. Иначе соединение будет разорвано сервером.
- Клиент обязан отвечать на все пакеты отправленные сервером соответствующим resp пакетом в течение 1 минуты. Иначе соединение будет разорвано сервером без отсылки UNBIND.
- После установки подключения и авторизации сервер будет отправлять ENQUIRE_LINK пакеты каждую минуту. На этот пакет клиент также обязан ответить в течение 1 минуты.
- Если при отправке в пакете Submit_sm установлен флаг registered_delivery, то статус сообщения будет возвращен только в подключение, установленное от имени пользователя, отправившего сообщения.
Получение статуса доставки сообщения
- Есть две возможности получения статуса доставки (активный и пассивный). Пассивный вариант является предпочтительным.
- Пассивный вариант предусматривает установку флага registered_delivery пакета SUBMIT_SM. После перехода сообщения в финальное состояние сервер отправит DELIVER_SM пакет с Delivery Receipt сообщением. Формат Delivery Receipt сообщения ниже.
- Активный вариант предусматривает периодический опрос статуса сообщения отсылкой QUERY_SM.
Формат Delivery Receipt
- "id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:DDDDDDD err:E Text: . . . . . . . . ."
8 800 500-80-16