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

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

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

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

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

Python-файл

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

nano /usr/local/billing/plugins/sms/super_sms.py

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

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

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

Параметр Данные Как обращаться
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 sms.smsplugin import SMSPlugin
logger = logging.getLogger('yapsy')

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

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

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

nano /usr/local/billing/plugins/sms/super_sms.cfg

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

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

self.config.get('Mysubsection', 'Value', 'Default Value')

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

[Core]
Name = Super SMS
Module = super_sms
[Mysubsection]
Value = param

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

  1. Откройте менеджер плагинов smsplugin.cfg:

    nano /usr/local/billing/pymodules/sms/smsplugin.cfg
    

    ``

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

    cp /usr/local/billing/pymodules/sms/smsplugin.cfg.sample /usr/local/billing/pymodules/sms/smsplugin.cfg
    

    ``

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

    Plugin = Super SMS
    

    ``

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

    Log = /var/log/billing/sms.log
    

    ``

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

    systemctl restart lbcore
    
    service lbcore restart
    

Плагин готов к работе: