Модули шлюзов сообщений интегрируют платформу BILLmanager с внешними сервисами для отправки уведомлений (SMS, email, мессенджеры). Платформа вызывает эти модули напрямую или через модули уведомлений.
Модуль шлюза сообщений отвечает за:
- набор настроек подключения к внешнему сервису;
- внешний вид формы настроек шлюза в интерфейсе платформы;
- форматирование и передачу исходящих сообщений во внешнюю систему;
- приём входящих сообщений от внешнего сервиса.
Общие сведения
Каталог установки: /usr/local/mgr5/gate/ или /usr/local/mgr5/addon/.
XML-описание: /usr/local/mgr5/etc/xml/billmgr_mod_gw<имя>.xml.
Управление: основной скрипт модуля (gwXXX).
Платформа опрашивает каждый модуль при запуске, чтобы узнать о поддерживаемых возможностях и необходимых параметрах. Это ускоряет работу: исключаются неподдерживаемые вызовы и определяется поведение форм при настройке шлюза.
Механизм работы модуля
Этапы работы с модулем платёжной системы в BILLmanager:
- Первоначальная настройка:
- Установка модуля.
- Добавление шлюза в разделе платформы.
- Взаимодействие с внешней системой:
- Настройка параметров подключения и проверка соединения. Подробнее см. статьи раздела Система уведомлений.
- Инициация отправки сообщения платформой.
- Обработка ответа внешнего сервиса и обновление статуса задачи на отправку.
Установите модуль:
- вручную, если он представлен набором файлов;
- из стандартного репозитория при помощи пакетного менеджера.
После установки шлюз становится доступен для выбора при создании шлюза сообщений в BILLmanager.
Структура модуля
Модуль шлюза сообщений состоит из XML-описания и исполняемого скрипта. При необходимости добавляются CGI-скрипты для приёма входящих сообщений.
Стандартный список файлов модуля выглядит следующим образом:
Где XXX — название модуля, которое указывается латиницей. Если название основного скрипта модуля содержит расширение файла, оно также включается в имя модуля. Например, если ваш скрипт называется gwsms.php, то имя модуля — sms.php, а не sms.
Описание XML
Наименование файла должно иметь вид billmgr_mod_gwXXX.xml, где XXX — имя модуля. Файл копируется в каталог /etc/xml относительно пути установки BILLmanager. Файл содержит описание самого модуля (описывается как плагин), а также описание дополнительных форм и сообщений.
Здесь элемент <plugin> отвечает за описание самого модуля. Свойство name совпадает с именем модуля. Внутри элемента может быть один элемент group со значением gateway, который указывает, что данный модуль используется для шлюзов сообщений, и несколько элементов msg.
Элемент metadata с именем gateway.XXX отвечает за дополнительные поля модуля при добавлении и настройке шлюза. Формируется согласно стандартному описанию XML-формы. Разместите поля в элементе <page name="settings"></page> для корректного размещения полей на формах в BILLmanager. Атрибут crypted сообщает о необходимости хранения параметра в базе данных в зашифрованном виде. Атрибут private скрывает значение поля при выводе в интерфейсе.
Элемент lang содержит переводы наименований полей на форме. Раздел <messages name="gateway_include"> отвечает за подпись наименования модуля в списке методов оплаты. Раздел <messages name="msgerror"> содержит тексты ошибок, которые возвращает основной скрипт.
Основной скрипт модуля
Основной скрипт модуля шлюза отвечает за передачу платформе информации о поддерживаемых функциях и обработку этих функций. При работе с модулем BILLmanager исполняет файл скрипта со следующими параметрами:
gate/gwXXX --command cmdГде cmd — управляющая команда.
Обязательная команда:
features— возвращает XML-файл с<features>(список поддерживаемых возможностей) и<notify_module>(указание совместимого модуля уведомлений).
Основные команды (вызываются в зависимости от заявленных <feature>):
outgoing— отправка исходящего сообщения;ingoing— получение входящих сообщений;formtune— модификация формы настроек шлюза;check_connection— проверка параметров подключения к внешнему сервису.
Пояснения к XML-файлу
features — выход
В ответ на команду features модуль должен вернуть в стандартный поток вывода XML-документ:
<doc>
<features>
<feature name="outgoing"/>
<feature name="formtune"/>
<feature name="check_connection"/>
</features>
<notify_module>ntsms</notify_module>
</doc>Элемент feature содержит список возможностей модуля. Если возможность не поддерживается, она не должна присутствовать в выводе результата выполнения команды.
outgoing — вход (stdin)
Платформа передаёт на стандартный ввод XML-документ с данными для отправки:
<doc>
<gateway>
<login>user</login>
<password>pass</password>
<sender>BILLmanager</sender>
<xmlparams>...</xmlparams>
</gateway>
<message>Ваш платёж принят</message>
<user>
<phone>+71234567890</phone>
<email>client@example.com</email>
</user>
<project>
<id>1</id>
<name>MyProject</name>
</project>
</doc>Скрипт обязан извлечь параметры из секции <gateway>, сформировать запрос к API внешнего сервиса, используя текст из <message> и контактные данные из <user>. При успешной отправке скрипт выводит <doc/>. При ошибке скрипт выводит XML с описанием ошибки.
check_connection — вход и выход
Вход (stdin) — принимает параметры подключения в открытом виде, даже если в XML-описании указан атрибут crypted="yes". Это необходимо для выполнения тестового запроса к API.
<doc>
<login>user</login>
<password>pass</password>
<url>https://sms.provider.com/api</url>
</doc>Выход: <doc/> при успехе или XML ошибки при неудаче.
Связанные статьи: