Структура 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)