мета-данные страницы
  •  

ClientSMS

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

Схема передачи сообщения получается следующей: Агбис Агент - Сервер сообщений Message Control - Сервер клиента

Особенности работы:

  • Клиенту нужно подготовить два скрипта в которые мы будет передавать пакеты с сообщениями: SendMsg.php, GetMsg.php (названия произвольные). Затем сообщить нам путь до этого скрипта на их сервере (например для скрипта SendMsg.php - http:/server.com/agbis/SendMsg.php, GetMsg.php - http:/server.com/agbis/GetMsg.php)
  • Сообщить нам логин/пароль для авторизации в скриптах
  • Отправлять в SendMsg.php и GetMsg.php будем одним пакетом по 500 сообщений, пока не будут отправлены все сообщения.
  • Передача будет производиться не в момент добавления сообщения, а когда наступит время доставки сообщения.
  • Запросы статусов будут производиться каждые 2-5 мин, до тех пор, пока есть хоть одно сообщение статусе «В работе»
  • Если в отправке присутствуют каналы Push, Telegram, …, отправка по ним будет в заданном порядке и через скрипты Agbis, только канал «СМС» будет передаваться на сервер клиента.

Требования к скриптам:

  • SendMsg.php - скрипт, в который мы будем передавать все сообщения на отправку.
  • GetMsg.php - скрипт, в котором мы будем запрашивать текущий статус сообщений, чтобы актуализировать их на стороне Agbis.
  • В скриптах должна быть реализована basic авторизация.
  • На каждый запрос нужно возвращать ответ в каком статусе сообщения. На SendMsg.php в ответ нужно сразу возвращать что сообщения зарегистрированы в системе клиента, не нужно ждать пока они будут переданы агрегатору, фактические статусы сообщения будут запрошены позже отдельно. На GetMsg.php - какой текущий статус имеют сообщения.
  • Статусы должны быть из нашего списка, а не те, что возвращает агрегатор.
  • На стороне Agbis будет генерироваться уникальный идентификатор сообщения, его же нужно возвращать с ответом.
  • На стороне клиента должна быть настроена уникальность доставки по msg_id, т.е. если со стороны agbis пришло два сообщения с одинаковым msg_id, то сообщение не должно быть отправлено повторно.
  • Любой не json ответ будет расцениваться как ошибка протокола, после которой будет повторная отправка сообщений. Все msg_id до этого присвоенные сообщениям останутся без изменений.

Статусы

  • 0 - Доставлено
  • 1 - В работе
  • 2 - Не доставлено
  • 3 - Не верный логин/пароль

Типы сообщений (type)

  • 1 - О готовности
  • 2 - Персональное
  • 3 - Рассылка
  • 4 - Отчетное
  • 5 - Личный кабинет
  • 6 - Повторное
  • 7 - Подтверждение заказа
  • 8 - Сервисное
  • 10 - Анкетирование

Структура файлов:
SendMsg.php вход:

SendIn.json
{"messages":[{"msg_id":"1","from":"Himchistka","message":"тест 1","type":"5","to":"+79999999991"},
             {"msg_id":"2","from":"Himchistka","message":"тест 2","type":"5","to":"+79999999992"]}

SendMsg.php выход:

SendOut.json
{"messages":[{"msg_id":"1","status":1,"to":"+79999999991"},
             {"msg_id":"2","status":2,"to":"+79999999992"}]}

SendMsg.php выход (ошибка авторизации):

SendError.json
{"error_code":3}

GetMsg.php вход:

GetIn.json
{"messages":[{"msg_id":"1"},{"msg_id":"2"}]}

GetMsg.php выход:

GetOut.json
{"messages":[{"msg_id":"1","status":0,"to":"+79999999991"},
             {"msg_id":"2","status":1,"to":"+79999999992"}]}

GetMsg.php выход (ошибка авторизации):

GetError.json
{"error_code":3}

Пример скрипта SendMsg.php:

SendMsg.php
<?php
 
$login = "login";
$password = "pass";
 
if(isset($_SERVER['PHP_AUTH_USER']) && ($_SERVER['PHP_AUTH_PW']==$password) && (strtolower($_SERVER['PHP_AUTH_USER'])==$login)){
 
    $data_post = file_get_contents('php://input');
    $request_json = json_decode($data_post, true);
 
    $msg = array();
 
    foreach($request_json["messages"] as $messages) {
        $message_id = $messages["msg_id"];
        $sms_name_sender = $messages["from"];
        $sms_text = $messages["message"];
        $sms_type_sms = $messages["type"];
        $sms_telephone = $messages["to"];
 
        $msg[]= array("msg_id" => "$message_id",
                      "status" => 1,
                      "to" => "$sms_telephone"
        );
    }
 
    $response_messages = array("messages" => $msg);
 
    echo json_encode($response_messages);
} else {
    $response_messages = array("error_code" => 3);
    echo json_encode($response_messages);
}

Пример скрипта GetMsg.php:

GetMsg.php
<?php
 
$login = "login";
$password = "pass";
 
if(isset($_SERVER['PHP_AUTH_USER']) && ($_SERVER['PHP_AUTH_PW']==$password) && (strtolower($_SERVER['PHP_AUTH_USER'])==$login)){
 
    $data_post = file_get_contents('php://input');
    $request_json = json_decode($data_post, true);
 
    $msg = array();
 
    foreach($request_json["messages"] as $messages) {
        $message_id = $messages["msg_id"];
 
        $sms_telephone = "+777777777";
        $status_id = 0;
 
        $msg[]= array("msg_id" => "$message_id",
            "status" => $status_id,
            "to" => "$sms_telephone"
        );
    }
 
    $response_messages = array("messages" => $msg);
 
    echo json_encode($response_messages);
} else {
    $response_messages = array("error_code" => 3);
    echo json_encode($response_messages);
}