0+
Вы находитесь в регионе:
Представительство:

Будь с нами ВКонтакте:
Поделиться

API SMS-шлюза GSM-INFORM

GSM-INFORM - это web-сервис отправки SMS по протоколу HTTP. Вы с легкостью сможете интегрировать смс уведомления в ваш сайт, интернет-магазин или в приложение для Windows, Linux, MacOS, Android и др. Шлюз позволяет отправлять длинные (из нескольких частей) сообщения с подменой имени отправителя, а также получать статусы отправки сообщений.

API-ключ

Для интеграции вам понадобится API-ключ и ID кабинета - они необходимы для авторизации в нашем сервисе:

API-ключ: Ваш API-ключ
ID кабинета: ID вашего кабинета

Интеграция

Параметры запроса (GET или POST)


http://gsm-inform.ru/api/url - адрес, на который отправляются запросы
api_keyAPI-ключ
idID кабинета
cmdкоманда, которую следует выполнить: send - отправка сообщений, status - проверка статусов доставки, balance - проверка баланса
codepageкодировка, в которой выполняются запросы, по умолчанию - utf-8
outформат данных, выводимых при ответе: json - по умолчанию, другие форматы: xml

Дополнительные параметры для каждой команды разные, подробнее см. ниже.

Отправка сообщения (cmd=send)


Дополнительные параметры
senderимя отправителя, латинские буквы, цифры, макс. 11 символов
toномера телефонов получателей, через запятую
messageтекст сообщения
trafficтип трафика, simple - обычный, priority - приоритетный, по умолчанию
send_now1 - отправить сообщение немедленно, 0 - отправить сообщение утром, если сейчас ночь (по умолчанию, опция "Активировать ночные смс" должна быть отключена в настройках личного кабинета)
delivery_url
beta
url-адрес к вашему скрипту для асинхронного получения статусов доставки сообщений в реальном времени
datetime_to_send
beta
Дата и время отправки сообщения. Формат: Y-m-d h:i:s 2015-01-01 12:00:00. Учитывается параметр send_now, так что перед отправкой, убедитесь в его необходимости.
send_by
new
система отправки сообщения, sms - отправить сообщение по смс на телефон, app - отправить сообщение на приложение GSM-INFORM, auto (по умолчанию) - автоматический режим, если установлено приложение, то сообщение отправить на него, иначе - по смс

Пример delivery_url: http://mysite.ru/delivery/?id=:id&status=:status Вместо :id и :status будут подставлены реальные значения идентификатора сообщения в нашем сервисе и текущий статус доставки (подробнее см. ниже). Также вы можете добавить свои GET параметры к delivery_url, они будут переданы вашему скрипту.

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

В ответ отправляются идентификаторы сообщений для последующей проверки статусов или коды и описания ошибок для каждого номера.

Получение статусов сообщений (cmd=status)


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

В ответ отправляются коды и описания статусов.

Получение информации о балансе (cmd=balance)


Дополнительные параметры не требуются.

В ответ отправляется сумма на балансе и наименование валюты, а также минимальный баланс, по достижению которого будут отправляться уведомления (0 - уведомления не отправляются).

Установка минимального порога уведомлений о балансе (cmd=min_balance)


Дополнительные параметры
valueвеличина минимального (порога) баланса, по достижению (уменьшение баланса) которого будут отправляться уведомления (0 - нет порога, уведомления не отправляются)

В ответ отправляется предыдущее значение и наименование валюты.

Реализация на PHP

<?php

/**
* Функция отправки сообщения.
* Если $traffic = 'simple', то параметр $sender не актуален,
* в качестве имени отправителя будет подставлен свободный альфа-номер.
*/

function send_sms($to$message$traffic 'priority'$sender 'TEST') {
    
$params = array(
        
'api_key' => 'Ваш API-ключ',
        
'id' => 'ID вашего кабинета',
        
'to' => $to,
        
'message' => $message,
        
'traffic' => $traffic,
        
'sender' => $sender,
        
'cmd' => 'send',
        
//'delivery_url' => 'http://mysite.ru/delivery/?id=:id&status=:status&foo=bar',
    
);

    
$result file_get_contents('http://gsm-inform.ru/api/?' http_build_query($params));

    
/**
    * пример ответа (номера в примере скрыты):
    *
    * {"error_no":0,"error_msg":"OK","items":[{"phone":"+7962****103","sms_id":196371174,"error_no":0,"error_msg":"OK"},
    * {"phone":"+7961****945","sms_id":196371175,"error_no":0,"error_msg":"OK"}],"sent":2}
    */

    
return json_decode($resulttrue);
}

/**
* Функция получения статусов сообщений.
*/

function get_status($sms_id) {
    
$params = array(
        
'api_key' => 'Ваш API-ключ',
        
'id' => 'ID вашего кабинета',
        
'sms_id' => $sms_id,
        
'cmd' => 'status',
    );

    
$result file_get_contents('http://gsm-inform.ru/api/?' http_build_query($params));

    
/**
    * пример ответа
    *
    * {"error_no":0,"error_msg":"OK","items":[{"id":"196371175","status_no":"2","status_msg":"Delivered"},
    * {"id":"196371174","status_no":"2","status_msg":"Delivered"},
    * {"id":"196371176","error_no":10,"error_msg":"SMS Not Found"}]}
    */

    
return json_decode($resulttrue);
}

/**
* Функция получения информации о балансе.
*/

function get_balance() {
    
$params = array(
        
'api_key' => 'Ваш API-ключ',
        
'id' => 'ID вашего кабинета',
        
'cmd' => 'balance',
    );

    
$result file_get_contents('http://gsm-inform.ru/api/?' http_build_query($params));

    
/**
    * пример ответа:
    *
    * {"error_no":0,"error_msg":"OK","balance":136.82,"currency":"RUR","min":"100"}
    */

    
return json_decode($resulttrue);
}

/**
* Функция установки минимального порога уведомлений о балансе.
*/

function set_min_balance($value) {
    
$params = array(
        
'api_key' => 'Ваш API-ключ',
        
'id' => 'ID вашего кабинета',
        
'cmd' => 'min_balance',
        
'value' => $value,
    );

    
$result file_get_contents('http://gsm-inform.ru/api/?' http_build_query($params));

    
/**
    * пример ответа:
    *
    * {"error_no":0,"error_msg":"OK","currency":"RUR","previous":"100"}
    */

    
return json_decode($resulttrue);
}

Коды ошибок


0: OKкоманда выполнена успешно
1: API Key Not Foundневерный api-ключ
2: Command Not Foundнеизвестная команда
3: User Not Foundпользователь с указанным id не найден
4: Phone List Is Emptyпустой список телефонов для отправки сообщений
5: Unknown Text Messageне указан текст сообщения
6: Send Errorне удалось отправить сообщение на указанный номер
7: Unknown Senderне указан отправитель по приоритетному трафику
8: Incorrect Senderнекорректный отправитель, допускается только латиница и цифры
9: Empty Id Listпустой список идентификаторов сообщений для получения статусов
10: SMS Not Foundне найдено сообщение с таким идентификатором
11: Not Paidне удалось оплатить рассылку, проверьте баланс

Коды статусов доставки сообщения


1: Sending With Out Reportотправлено без получения отчета
2: Deliveredдоставлено
3: Not Deliveredне доставлено
4: Bufferedбуфферизировано (служебный статус)
6: Errorошибка доставки сообщения
7: Temporaryвременное сообщение, сформировано, но команды на отправку не было
8: Sendingотправляется (поставлено в очередь для отправки)
9: Canceledотменено (после постановки в очередь была команда на отмену)
10: Sheduledзапланировано (отправка по расписанию)
11: Sentотправлено

Здесь перечислены все статусы, используемые нами в сервисе. Большинство из них служебные, по факту будет достаточно статусов: 11 (отправлено), 2 (доставлено), 3 и 6 (не доставлено).