Создать плагин мессенджера для уведомлений

LANBilling позволяет отправлять абонентам уведомления в мессенджерах. За работу с мессенджерами отвечает плагин. Он состоит из двух файлов, которые находятся в директории /usr/local/billing/plugins/messengers/:

  • файл с кодом на python;
  • файл конфигурации.

В системе уже есть готовый плагин. Также вы можете добавить собственный:

  1. Опишите логику работы в python-файле.
  2. Задайте параметры в файле конфигурации.
  3. Укажите название в менеджере плагинов.

Python-файл

Создайте файл. Пример:

nano /usr/local/billing/plugins/messengers/my_messenger.py

В этом файле нужно описать логику работу плагина.

  • Определите класс «Messenger», унаследованный от MessengerPlugin.

  • Переопределите функцию send(self, *args, **kwargs). Она может принимать 4 параметра:

Параметр Данные Как обращаться
numbers Cписок телефонных номеров Весь список: args[0]
Номер «N»: args[0][N]
message Текст сообщения args[1]
template_id Идентификатор шаблона уведомления kwargs['template_id']
template_params Значения для подстановки в шаблон Весь список: kwargs['template_id']
Значение параметра «param»: kwargs['template_params']['param']
billing_identity Идентификатор оператора из одноимённой опции kwargs['billing_id']

Если message не передан, то система попробует сформировать сообщение по шаблону из template_id.

Пример:

#!/usr/bin/python
# -*- coding: utf-8

import logging
from messenger_plugin_management.messenger_plugin import MessengerPlugin
logger = logging.getLogger('yapsy')

class Messenger(MessengerPlugin):
	def send(self, *args, **kwargs):
		numbers = args[0]
		message = args[1]
		for number in numbers:
			logger.debug('My Messenger: %s %s' % (number, message))

Файл конфигурации

Создайте файл. Пример:

nano /usr/local/billing/plugins/messengers/my_messenger.cfg

Добавьте обязательные параметры в секцию [Core].

Также можно добавить кастомные секции и параметры. В примере ниже это «Settings» и «Token». В python-файле обращаться к параметру можно так:

self.config.get('Settings', 'Token', '')

Все значения указываются без кавычек. Пример конфигурационного файла:

[Core]
Name = My Messenger
Module = my_messenger
[Settings]
Token = 47ad74a951cf90276e2e3531ee4d654094155a728411cb6af1b74309

Менеджер плагинов

Если вы раньше не работали с файлом messenger_plugin.cfg, его нужно создать. Для этого скопируйте файл из примера:

cp /usr/local/billing/pymodules/messenger_plugin_management/messenger_plugin.cfg.sample /usr/local/billing/pymodules/messenger_plugin_management/messenger_plugin.cfg
  1. Откройте менеджер плагинов messenger_plugin.cfg:

    nano /usr/local/billing/pymodules/messenger_plugin_management/messenger_plugin.cfg
    

    ``

  2. Введите название плагина — параметр Name из конфигурационного файла.

    Plugin = My Messenger
    

    ``

  3. Укажите путь к файлу с логами. В этом файле будут логи и от менеджера плагинов, и от самого плагина.

    Log = /var/log/billing/messenger.log
    

    ``

  4. Перезапустите модуль LBcore. Команды различаются в разных ОС.

    systemctl restart lbcore
    
    service lbcore restart
    

Плагин готов к работе. Система может отправлять абонентам уведомления в мессенджерах.