Создание модулей обработки
В данной статье рассматривается вариант написания собственного модуля обработки либо для собственного типа услуг, либо для встроенного типа услуг.
Для выполнения любых операций с услугами в BILLmanager архитектурой платформы предусмотрено использование специализированных модулей обработки. В стандартной поставке предусмотрены как модули, отвечающие за выполнение операций над определенными типами услуг в конкретных панелях управления, так и специализированные и вспомогательные модули, способные обрабатывать любые типы услуг. К таким обработчикам относятся модуль ручной обработки услуги и модуль перепродажи услуг из BILLmanager в BILLmanager.
Все функции в статье вызываются согласно стандартным механизмам работы с API.
Вызов всех функций необходимо осуществлять с возвратом результата в XML или JSON. В случае использования JSON формата ответов от BILLmanager результат будет иметь ту же структуру, что и описанная в статье, с поправкой на формат.
Пользовательские модули могут вызвать ошибки в базе данных и в работе биллинговой платформы.
Назначение модулей обработчиков
Основной функцией модуля обработки является выполнение каких либо операций с услугами на стороне панели управления либо провайдера данных услуг. Дополнительно модуль может:
- выполнять проверки при изменении параметров услуг;
- сообщать BILLmanager доступные на стороне панели управления или провайдера конфигурации услуг;
- изменять формы настроек обработчика, услуги или профиля услуги (реализовано для доменных имён и сертификатов).
Разработчик может добавить выполнение других действий с ручным запуском, с запуском по расписанию, либо с запуском из плагина в BILLmanager.
Архитектура модуля
Стандартный модуль для BILLmanager состоит из двух файлов:
- billmgr_mod_pmxxx.xml — xml описание модуля обработки с привязкой к типу услуги, наименованием модуля и описанием параметров, указанных при добавлении обработчика в BILLmanager. Пример такого файла можно найти ниже в статье. Файл должен быть расположен в каталоге /usr/local/mgr5/etc/xml/ с именем вида billmgr_mod_pmxxx.xml. Здесь и далее xxx — уникальное имя модуля обработчика.
- pmxxx — исполняемый файл модуля, вызываемый BILLmanager напрямую или через фоновое задание при выполнении операций с услугами или по необходимости. Файл должен быть расположен в каталоге /usr/local/mgr5/processing/ с именем вида pmxxx. У файла должны стоять права на исполнение от имени root.
По необходимости в поставку модуля обработчика могут быть включены другие файлы:
- cgi скрипты, выполняющие переадресацию пользователей в панель управления;
- вспомогательные исполняемые файлы;
- файлы плагинов BILLmanager, вносящих изменения в интерфейс и логику BILLmanager.
Структура XML файла обработчика
После внесения изменений в XML описание обработчика перезапустите BILLmanager для перестроения XML кеша.
Структура исполняемого файла обработчика
Исполняемый файл обработчика должен работать по следующему сценарию:
- получение и анализ параметров командной строки, с которыми вызван обработчик;
- выбор внутренней функции в зависимости от значения, полученного для параметра --command;
- получение входных данных из потока ввода;
- выполнение действий в панели управления или по API провайдера услуг;
- изменение статуса и параметров услуги в BILLmanager;
- вывод в стандартный поток результата в формате XML.
В качестве входных параметров модулю обработки передаются следующие значения:
- --command — тип операции, которую необходимо выполнить. Возможные значения:
- features — запрос XML описания поддерживаемых возможностей;
- open — фоновое задание открытия услуги на стороне платформы или провайдера услуг;
- resume — фоновое задание включения услуги на стороне платформы или провайдера услуг;
- suspend — фоновое задание выключения услуги на стороне платформы или провайдера услуг;
- start — фоновое задание запуска услуги со стороны клиента при почасовой тарификации;
- stop — фоновое задание остановки услуги со стороны клиента при почасовой тарификации;
- cancel_prolong — фоновое задание отмены автоматического продления услуги на стороне платформы или провайдера услуг;
- close — фоновое задание удаления услуги на стороне платформы или провайдера услуг;
- setparam — фоновое задание на изменение параметров услуги в платформе или на стороне провайдера услуг. Измениться могут как параметры услуги в BILLmanager, так и дополнения к услуге;
- get_suitable_module — запрос списка доступных модулей обработки для услуги с параметрами, переданными во входящем XML документе;
- check_connection — проверка возможности подключения к платформе или провайдеру услуги с переданными во входящем XML документе параметрами;
- tune_connection — изменение формы редактирования параметров подключения к платформе или провайдеру услуг. На вход подаётся XML исходной формы настройки параметров, на выход модуль должен передать изменённый XML документ, описывающий форму настройки параметров;
- tuning_param — изменение формы настройки дополнительных параметров модуля обработки;
- usercreate — изменение формы регистрации нового пользователя на стороне провайдера услуг. Может понадобиться только при условии дистрибьюции разрабатываемого модуля;
- tune_changepassword — изменение формы смены пароля для услуги;
- sync_pricelist — фоновое задание синхронизации тарифного плана в BILLmanager с пресетом в платформе;
- get_server_config — фоновое задание получения конфигурации пресетов на стороне платформы или провайдера услуг;
- sync_server — фоновое задание синхронизации данных в платформе или у провайдера услуг в BILLmanager;
- prolong — фоновое задание продления срока действия услуги в платформе или у провайдера услуг;
- stat — фоновое задание сбора статистики по использованию услугами ресурсов сервера или провайдера услуг;
- reboot — перезагрузка услуги (выделенного или виртуального сервера, любой другой услуги, поддерживающей данный функционал);
- import_pricelist — запрос данных тарифного плана для создания в BILLmanager. В ответ модуль должен вернуть XML с описанием параметров тарифа;
- check_param — запуск проверки возможности изменения параметров услуги. На вход подается XML документ со старыми и новыми значениями параметров, в ответ либо возвращается XML документ с ok, либо XML описание ошибки;
- check_addon — запуск проверки возможности изменения дополнений к услуге. На вход подается XML документ со старыми и новыми значениями параметров, в ответ либо возвращается XML документ с ok, либо XML описание ошибки;
- changepassword — фоновое задание смены пароля для услуги в платформе или у провайдера услуг;
- addip — фоновое задание добавления к услуге IP-адреса в платформе или у провайдера услуг;
- editip — фоновое задание изменения IP-адреса услуги в платформе или у провайдера услуг;
- delip — фоновое задание удаления IP-адреса в платформе или у провайдера услуг;
- transition_controlpanel — запрос XML документа с описанием доступных для перехода панелей управления;
- pingip — получение информации о занятости IP-адреса из платформы или от провайдера услуг;
- cleanup — фоновое задание для выполнения дополнительных действий после пометки в BILLmanager услуги как удалённой;
- cloneitem — фоновое задание для выполнения дополнительных действий после переноса услуги от клиента к клиенту;
- в будущем могут добавиться другие значения. Если разрабатываемый модуль не способен обработать полученную команду, он должен завершиться с кодом 0 во избежание вывода непредвиденных ошибок и зависания текущих операций.
- --subcommand — параметр, уточняющий необходимое к выполнению действие. Передается при --command равном tuning_param и import_pricelist;
- --id — код тарифного плана на стороне платформы или провайдера услуг при выполнении import_pricelist;
- --item — код услуги, для которой требуется выполнение операции;
- --module — код модуля обработки, для которого требуется выполнение операции;
- --param — наименование дополнительного параметра;
- --value — значение дополнительного параметра;
- --runningoperation — код текущей операции, связанной с вызванной командой. Используется для регистрации задачи в случае ошибки обработки услуги;
- --level — уровень доступа, для которого вызвана команда модуля обработчика. Передаётся при выполнении transition_controlpanel;
- --password — новое значение пароля услуги. Передаётся при выполнении changepassword;
- --userid — код пользователя, из-под которого запущено выполнение операции. Передаётся при выполнении setparam;
- --panelkey — идентификатор платформы, переход в которую необходимо осуществить. Передаётся при выполнении transition_controlpanel;
- --ip — код IP-адреса, который необходимо обработать.
Разработчику модуля нет необходимости обрабатывать весь набор возможных команд и параметров, большая часть из них вызывается только при поддержке модулем необходимых возможностей. Далее приведено более полное описание вызываемых команд.
features 
Запрос функций и параметров модуля обработки. Вызывается после запуска BILLmanager при первой необходимости.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
отсутствуют
Выходные параметры:
XML документ, содержащий описание параметров модуля обработки и поддерживаемых функций, следующего формата:
Здесь:
- атрибут name у ноды itemtype указывается по внутреннему имени типа продукта/услуги;
- атрибут name у ноды param должен соответствовать имени поля ввода формы настроек модуля обработки. Атрибут crypted сигнализирует о необходимости хранения параметра в базе данных в зашифрованном виде;
- атрибут name у customparam будет отображён в списке выбора при добавлении дополнительного параметра. Атрибут unique со значением yes указывает на то, что параметр с указанным внутренним именем может быть только один. Атрибут defval не обязателен и определяет значение параметра по умолчанию;
- атрибут name у ноды feature указывает на поддерживаемую функцию модуля обработки. Доступные значения:
- changepassword — модуль поддерживает смену пароля для услуги. В интерфейсе BILLmanager для услуг будет доступна соответствующая кнопка в списках;
- tune_changepassword — модуль поддерживает изменение формы смены пароля;
- check_addon — модуль поддерживает проверку возможности изменения дополнения к услуге;
- check_connection — модуль поддерживает проверку корректности введённых на форме настройки обработчика параметров;
- check_param — модуль поддерживает проверку параметров услуги при их изменении;
- cleanup — модуль поддерживает обработку дополнительной очистки после завершения удаления услуги;
- cloneitem — модуль поддерживает обработку переноса услуги от клиента к клиенту;
- tune_connection — модуль поддерживает изменение формы настройки обработчика в BILLmanager;
- datacenter — модуль поддерживает распределение услуг по дата-центрам. Обязательно, если вы используете типы продуктов, созданные вручную;
- get_server_config — модуль поддерживает получение конфигурации;
- get_suitable_module — модуль поддерживает самостоятельное определение списка доступных для открытия услуг обработчиков;
- ipmgr — модуль поддерживает работу с IPmanager. Добавляет выбор IPmanager на форму настроек обработчика;
- need_ipmgr — делает выбор IPmanager обязательным;
- licserver — модуль поддерживает работу с внешними BILLmanager в качестве серверов лицензий. Добавляет выбор BILLmanager на форму настроек обработчика;
- pingip — модуль поддерживает проверку недоступности IP-адреса перед удалением;
- prolong — модуль поддерживает продление услуг на стороне платформы или провайдера услуг;
- reboot — модуль поддерживает выполнение перезагрузки услуги;
- stat — модуль поддерживает сбор статистики по услугам;
- stop_by_panelid — модуль поддерживает остановку услуги по идентификатору в платформе;
- sync_pricelist — модуль поддерживает синхронизацию тарифного плана в BILLmanager с соответствующей сущностью в платформе или у провайдера услуг;
- sync_server — модуль поддерживает синхронизацию параметров услуг в BILLmanager или у провайдера услуг;
- transition_controlpanel — модуль поддерживает переход в панель управления;
- tuning_param — модуль поддерживает дополнительные параметры модуля обработки.
open 
Обработка открытия (создания) услуги на стороне панели управления или у провайдера услуг.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка;
- --runningoperation — код текущей операции на открытие услуги. Передается при наличии.
Выходные параметры:
отсутствуют
По завершению обработки открытия услуги вызовите функцию itemtype.open, где itemtype — внутреннее имя типа услуги, с параметрами:
- elid — код услуги;
- все параметры, указанные при открытии услуги (перечислены в настройках параметров типа продукта):
- sok=ok — подтверждение операции.
После чего услуга перейдёт в активное состояние, а клиенту, в случае наличия настройки, уйдёт уведомление об обработке услуги.
resume 
Обработка включения услуги на стороне платформы или у провайдера услуг.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка;
- --runningoperation — код текущей операции на включение услуги. Передается при наличии.
Выходные параметры:
отсутствуют
По завершению обработки включения услуги вызовите функцию service.postresume с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
suspend 
Обработка выключения услуги на стороне платформы или у провайдера услуг.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка;
- --runningoperation — код текущей операции на включение услуги. Передается при наличии.
Выходные параметры:
отсутствуют
По завершению обработки включения услуги вызовите функцию service.postsuspend с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
start 
Обработка запуска услуги на стороне платформы или у провайдера услуг.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка;
- --runningoperation — код текущей операции на включение услуги. Передается при наличии.
Выходные параметры:
отсутствуют
По завершению обработки включения услуги вызовите функцию service.poststart с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
stop 
Обработка остановки услуги на стороне платформы или у провайдера услуг.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка;
- --runningoperation — код текущей операции на включение услуги. Передается при наличии.
Выходные параметры:
отсутствуют
По завершению обработки включения услуги вызовите функцию service.poststop с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
cancel_prolong 
Обработка отмены автоматического продления услуги на стороне платформы или провайдера услуг.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка.
Выходные параметры:
отсутствуют
close 
Обработка удаления услуги на стороне платформы или у провайдера услуг.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка;
- --runningoperation — код текущей операции на включение услуги. Передается при наличии.
Выходные параметры:
отсутствуют
По завершению обработки включения услуги вызовите функцию service.postclose с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
setparam 
Обработка изменения параметров услуги на стороне платформы или у провайдера услуг
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка;
- --runningoperation — код текущей операции на включение услуги. Передается при наличии;
- --userid — код пользователя инициировавшего смену тарифного плана. Передается при наличии.
Выходные параметры:
отсутствуют
Изменение параметров услуги может быть вызвано двумя действиями в BILLmanager:
- смена тарифного плана;
- изменение параметров и дополнений к услуге.
В этом случае в таблице item для услуги сохраняется ссылка lastpricelist на предыдущий тарифный план. В случае возникновения ошибки смены тарифного плана на стороне платформы или у провайдера услуги вызовите функцию service.changepricelist.rollback с параметрами:
- elid — код услуги;
- userid — код пользователя;
- sok=ok — подтверждение операции.
В этом случае дополнительных действий выполнять не требуется.
По завершению обработки изменения параметров услуги вызовите функцию service.postsetparam с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
get_suitable_module 
Получение списка модулей обработки, доступных для обработки открытия услуги с переданными параметрами.
Требуется поддержка функции:
get_suitable_module
Пример вызова:
Входные параметры:
- --item — код услуги, для которой выполняется обработка. Не передается при построении списка тарифных планов;
- XML документ с параметрами услуги вида:
Выходные параметры:
XML документ вида
где атрибут id у ноды module — код обработчика, подходящего для обработки услуги.
check_connection 
Проверка возможности доступа к платформе или провайдеру услуг.
Требуется поддержка функции:
check_connection
Пример вызова:
Входные параметры:
XML документ с параметрами обработчика вида:
Выходные параметры:
XML документ:
Либо XML описание ошибки.
tune_connection 
Изменения формы настроек параметров обработчика. Может быть использован для заполнения списков, удаления/добавления атрибутов к полям и других действий по изменению формы.
Требуется поддержка функции:
tune_connection
Пример вызова:
Входные параметры:
XML документ текущего описания формы.
Выходные параметры:
Исходный или изменённый XML документ.
tuning_param 
Поддержка функции настройки дополнительных параметров, а так же изменение формы/списка настройки дополнительных параметров.
Требуется поддержка функции:
tuning_param
Пример вызова:
где action может принимать следующие значения:
- TableFormTune — функция вызвана при построении формы настройки параметра;
- TableGet — функция вызвана при получении данных уже настроенного параметра;
- TableSet — функция вызвана при сохранении параметра;
- List — функция вызвана при построении списка параметров.
Входные параметры:
XML документ текущего описания формы или списка с дополнительной нодой session_params, содержащей параметры сессии.
Выходные параметры:
Исходный или изменённый XML документ, либо XML описание ошибки.
usercreate 
Изменение формы создания нового пользователя на стороне провайдера услуги. Обычно служит для формирования ссылки на регистрацию в системе провайдера услуг.
Требуется поддержка функции:
usercreate
Пример вызова:
В XML-файле обработчика должна быть описана форма регистрации пользователя под именем processing.edit.module_name.createuser.
Входные параметры:
XML документ текущего описания формы.
Выходные параметры:
Исходный или изменённый XML документ.
tune_changepassword 
Изменение формы смены пароля для услуги.
Для добавления новых полей на форму смены пароля. Например, для описания формата ввода пароля нужно добавить метадату в XML модуля обработки в следующем формате:
Требуется поддержка функции:
tune_changepassword
Пример вызова:
Входные параметры:
- --module - код модуля обработчика, к которому привязана услуги, для которой производится смена пароля;
- XML документ текущего описания формы.
Выходные параметры:
Исходный или изменённый XML документ.
sync_pricelist 
Синхронизация тарифного плана в BILLmanager с соответствующей сущностью в платформе или у провайдера услуг. Может использоваться для создания пресета на стороне платформы, выставления лимитов дополнений в BILLmanager по данным от платформы или провайдера услуг и т.д. Вызывается при создании или изменении внутреннего имени тарифного плана, а также при подключении тарифов к обработчику.
Требуется поддержка функции:
sync_pricelist
Пример вызова:
Входные параметры:
- --module — код обработчика.
Выходные параметры:
отсутствуют
get_server_config 
Формирование и сохранение в BILLmanager описания конфига обработчика.
Требуется поддержка функции:
get_server_config
Пример вызова:
Входные параметры:
- --module — код обработчика.
Выходные параметры:
отсутствуют
Конфиг модуля представляет собой XML документ следующего формата:
В конфиг можно сохранить дополнительную информацию для дальнейшего использования модулем.
Сохранение конфига в BILLmanager выполняется вызовом функции processing.setconfig с параметрами:
- elid — код обработчика;
- config — XML описание конфига.
Сохранение в BILLmanager шаблонов ОС (и других вариантов параметров типов продукта) выполняется функцией itemtype.param.value.edit с параметрами:
- intname — внутреннее наименование шаблона (идентификатор);
- name (name_xx) — наименование, в том числе локализованные;
- plid — код параметра типа продукта с внутренним именем ostempl для шаблонов ОС, либо соответствующие нужному параметру типа продукта;
- elid — код значения параметра, если требуется его изменение. Пустое значение при добавлении значения параметра;
- module — код модуля обработки, если требуется одновременное подключение к обработчику услуг;
- sok=ok — подтверждение операции.
sync_server 
Синхронизация данных по услугам между BILLmananager и панелью управления или провайдером услуг.
Требуется поддержка функции:
sync_server
Пример вызова:
Входные параметры:
- --module — код обработчика.
Выходные параметры:
отсутствуют
Может использоваться для:
- выставления узла кластера, на котором была создана услуга;
- шаблона ОС для виртуальных и выделенных серверов;
- любых других действий, обеспечивающих актуальность информации, отображаемой в BILLmanager.
prolong 
Продление срока действия услуги в платформе или у провайдера услуг.
Требуется поддержка функции:
prolong
Пример вызова:
Входные параметры:
- --item — код услуги;
- --runningoperation — код текущей операции.
Выходные параметры:
отсутствуют
По завершению продления услуги вызовите функцию service.postprolong с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
stat 
Сбор статистики использования ресурсов услугами в платформе или у провайдера услуг.
Требуется поддержка функции:
stat
Пример вызова:
Входные параметры:
- --module — код обработчика.
Выходные параметры:
нет
Собранную статистику необходимо сохранить в базу данных BILLmanager в таблицу itemstat, поля таблицы:
- item — код услуги;
- statdate — дата потребления ресурса;
- param — внутреннее имя параметра, по которому сохраняется статистика. Это либо внутреннее имя типа продукта дополнения к тарифному плану услуги, либо произвольное наименование параметра, которое указывается в настройках дополнения к тарифному плану;
- value — целочисленное значение потреблённого ресурса;
- measure — код единицы измерения.
По завершению сохранения информации о собранной статистике в базе данных BILLmanager вызовите функцию service.poststat, с параметрами:
- elid — код обработчика;
- date — дата за которую была собрана статистика.
Дата последнего сбора статистики сохраняется в поле laststatdate таблицы processingmodule, где id — код обработчика.
import_pricelist 
Получение данных тарифного плана из панели управления или от провайдера услуг для сохранения в BILLmanager
Требуется поддержка функции:
import_pricelist
Пример вызова:
Входные параметры:
- --module — код обработчика;
- --subcommand — тип получаемой информации. Возможные значения:
- available — запрос списка доступных для импорта тарифных планов;
- pricelist — запрос детальной информации по тарифному плану для импорта. Параметр --id — идентификатор тарифа в панели управления или у провайдера услуг;
- images — запрос списка образов диска тарифного плана (при наличии). Параметр --id — идентификатор тарифа в панели управления или у провайдера услуг;
- periods — запрос списка доступных периодов заказа тарифного плана. Параметр --id — идентификатор тарифа в панели управления или у провайдера услуг;
- details — запрос списка доступных дополнений к тарифному плану. Параметр --id — идентификатор тарифа в панели управления или у провайдера услуг.
Выходные параметры:
XML документ, формат которого зависит от полученного --subcommand:
- available
- pricelist
- images
- periods
- details
check_param
Проверка возможности изменения параметра услуги.
Требуется поддержка функции:
check_param
Пример вызова:
Входные параметры:
- --item — код услуги;
- --param — внутреннее наименование параметра;
- --value — новое значение параметра;
- --level — уровень доступа пользователя, изменившего параметры;
- XML вида:
Выходные параметры:
В случае допустимости изменения параметра:
В противном случае сообщение об ошибке.
check_addon 
Проверка возможности изменения дополнения к услуге.
Требуется поддержка функции:
check_addon
Пример вызова:
Входные параметры:
- --item — код услуги;
- --param — внутреннее наименование типа дополнения;
- --value — новое значение дополнения;
- --level — уровень доступа пользователя, изменившего дополнение;
- XML вида:
Выходные параметры:
В случае допустимости изменения параметра:
В противном случае сообщение об ошибке.
changepassword 
Изменение пароля для услуги на стороне панели управления или провайдера услуг.
Требуется поддержка функции:
changepassword
Пример вызова:
Входные параметры:
- --item — код услуги;
- --password — новое значение пароля, зашифрованное алгоритмом RSA и секретным ключом /usr/local/mgr5/etc/billmgr.pem.
Выходные параметры:
отсутствуют
По завершению смены пароля у услуги необходимо сохранить его в BILLmanager командой service.saveparam с параметрами:
- item — код услуги;
- password — новый пароль услуги;
- sok=ok — подтверждение операции.
И вызвать функцию service.postchangepassword с параметрами:
- item — код услуги;
- sok=ok — подтверждение операции.
addip 
Добавление у услуге нового IP-адреса.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги;
- --ip — код IP-адреса из таблицы ip.
Выходные параметры:
отсутствуют
IP-адрес сохраняется в BILLmanager функцией service.ip.add с параметрами:
- elid — код IP-адреса;
- ip — значение IP-адреса;
- domain — ptr запись IP-адреса;
- ipmgr — ссылка на IPmanager, если используется;
- sok=ok — подтверждение операции.
В ответ функция вернет XML вида:
Нода ip.id содержит новый код IP-адреса в BILLmanager (код меняется в случае, если услуге выделяется IP-адрес, ранее уже сохранённый в BILLmanager).
Для полученного кода IP-адреса нужно вызвать функцию активации service.ip.add.commit с параметрами:
- elid — код ip адреса;
- sok=ok — подтверждение операции.
editip 
Изменение существующего IP-адреса услуги. Вызывается при редактировании доменного имени у IP-адреса в BILLmanager.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --ip — код ip адреса из таблицы ip.
Выходные параметры:
отсутствуют
delip 
Удаление IP-адреса у услуги.
Требуется поддержка функции:
нет
Пример вызова:
Входные параметры:
- --item — код услуги;
- --ip — код ip адреса из таблицы ip.
Выходные параметры:
отсутствуют
IP-адрес помечается в BILLmanager удалённым функцией service.ip.del с параметрами:
- elid — код IP-адреса;
- sok=ok — подтверждение операции.
transition_controlpanel 
Переход на сервер под учётной записью клиента или сотрудника.
Требуется поддержка функции:
transition_controlpanel
Пример вызова:
Входные параметры:
- --item — код услуги;
- --level — уровень доступа пользователя, выполняющего переход;
- --panelkey — код обработчика при переходе из списка обработчиков или идентификатор панели, ссылку на переход в которую необходимо вывести.
Выходные параметры:
XML документ со списком панелей или ссылкой на переход в панель управления:
pingip
Проверка доступности IP-адреса. Выполняется перед удалением.
Требуется поддержка функции:
pingip
Пример вызова:
Входные параметры:
- --item — код услуги;
- --ip — код IP-адреса.
Выходные параметры:
XML документ с результатом проверки доступности IP-адреса:
cleanup
Выполнение дополнительных действий по завершению удаления услуги (после перевода услуги в статус "удалён").
Требуется поддержка функции:
cleanup
Пример вызова:
Входные параметры:
- --item — код услуги.
Выходные параметры:
отсутствуют
cloneitem 
Перенос услуги от клиента к клиенту в BILLmanager. Может быть полезна, если разные услуги одного клиента создаются в рамках одной учётной записи в панели управления или на стороне провайдера услуг.
Требуется поддержка функции:
cloneitem
Пример вызова:
Входные параметры:
- --item — новый код услуги.
Выходные параметры:
отсутствуют
reboot 
Перезагрузка услуги.
Требуется поддержка функции:
reboot
Пример вызова:
Входные параметры:
- --item — код услуги.
Выходные параметры:
отсутствуют
По завершению перезагрузки услуги вызовите функцию service.postreboot с параметрами:
- elid — код услуги;
- sok=ok — подтверждение операции.
Обработка ошибок
Если при вызове функции модуля был передан Id текущей операции и при обработке команды произошла какая-либо ошибка, целесообразно отобразить информацию об этом в BILLmanager. Для этого существует набор функций:
- runningoperation.edit — изменение текущей операции. Принимает параметры:
- elid — код текущей операции;
- errorxml — XML документ с набором XML описаний произошедших ошибок, вида:
При наличии кода услуги и необходимости прекращения повторных попыток выполнения операции (в таблице runningoperation поле trycount отражает количество попыток выполнения операции) можно создать задачу на отдел, ответственный за модуль обработки.
Для этого выполните два шага:
Вызвать функцию task.gettype, в которую параметром operation передаётся текущее значение параметра --command командной строки. В ответ будет получен XML документ вида:
XMLгде task_type — тип задачи, которую необходимо создать. Если нода отсутствует или пуста, создание задачи невозможно.
- Зарегистрировать задачу функцией task.edit, с параметрами:
- item — код услуги;
- runningoperation — код текущей операции;
- type — значение task_type;
- sok=ok — подтверждение операции.
Примеры модулей
Исполняемый файл модуля обработчика может быть реализован на любом скриптовом или компилируемом языке программирования, поддерживающим работу с параметрами командной строки, а так же потоками ввода вывода. Выбор языка программирования зависит от разработчика, но для ускорения разработки и своевременного реагирования на добавления новых функций, рекомендуется использовать C++ и заголовочные файлы из пакета разработчика BILLmanager.
C++ (с использованием библиотек BILLmanager) 
Использование заголовочных файлов BILLmanager для разработки собственных модулей обработчиков доступно с версии BILLmanager 5.58.0. Кроме приведённого упрощённого примера, можно изучить примеры, представленные в пакете разработчика BILLmanager — billmanager-[Редакция BILLmanager]-devel:
После этого примеры можно найти в директории:
- Назначение модулей обработчиков
- Архитектура модуля
- Структура XML файла обработчика
- Структура исполняемого файла обработчика
- features
- open
- resume
- suspend
- start
- stop
- cancel_prolong
- close
- setparam
- get_suitable_module
- check_connection
- tune_connection
- tuning_param
- usercreate
- tune_changepassword
- sync_pricelist
- get_server_config
- sync_server
- prolong
- stat
- import_pricelist
- check_param
- check_addon
- changepassword
- addip
- editip
- delip
- transition_controlpanel
- pingip
- cleanup
- cloneitem
- reboot
- Обработка ошибок
- Примеры модулей