мета-данные страницы
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); }