Интеграция
IPTV Портал (iptvportal.ru)
Интеграция с Middleware "IPTV Портал" представлена в виде отрытого кода (динамические классы).
При интеграции с данной системой продукты модуля (или, в зависимости от конфигурации, сервисы модуля) являются подключаемыми пакетами MW.
Добавьте конфигурацию модуля и установите ее активной:
# Активные и приостановленные статусы договора
contract.status.active.codes=0
contract.status.suspend.codes=3,4
# Id сущностей (Справочники - Атрибуты) для продукта, сервиса и канала,
# для привязки атрибутов к продуктам, сервисам и каналам
#productSpec.entitySpecId=
#serviceSpec.entitySpecId=
#tvChannelSpec.entitySpecId=
#Пункты Web - меню
web.menuItem1=TV подписки
# Параметры автоматической генерации логина для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальное значение логина при генерации логина
account.login.min=10000001
# максимальное значение логина при генерации логина (т.е. если в базе присутствуют логины 1,2,3 и 10000000,
# то при генерации создастся логин 4, а не 10000001)
account.login.max=99999999
# форматирование генерируемого логина
#account.login.format=0000000
# Парамерты пароля для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальная длина пароля
account.password.length.min=4
# Максимальная длина пароля
account.password.length.max=8
# Разрешенные символы (используются также при генерации пароля)
account.password.chars=1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
# Описание разрешенных символов, если пользователь ввел другие
account.password.chars.description=В пароле допустимы только цифры и латинские буквы.
# Длина для автоматически генерируемого пароля
account.password.length.auto=6
# Используемые символы для автоматически генерируемого пароля (по умолчанию значение берется из параметра account.password.chars)
#account.password.chars.auto=
# тип устройства - IPTVPortal (для синхронизации терминалов из MW)
om.deviceTypeIds=2
Необходимо создать новый тип устройства, назвать его, например, Access+Accounting - данный тип устройства будет отражать приложения TvAccess и TvAccounting.
Далее создайте новый тип устройства, назовите его, например, IPTVPortal и добавьте конфигурацию:
# Коды параметров договора для заполнения полей в MW-системе (если не указано - используется комментарий договора)
# код параметра договора ФИО или Фамилия (если фамилия указывается отдельно)
#customer.lastName.pid=
# код параметра Имя (если он указан отдельно)
#customer.firstName.pid=
# код параметра - названия компании (для юр. лиц)
#customer.company.pid=
# Режим синхронизации продуктов (0 - по событию, 1 - по событию, полная)
om.product.syncMode=1
# уровень интеграции, 0 - интеграция на уровне продуктов модуля, 1 - интеграция на уровне сервисов модуля
om.product.serviceMode=0
# Идентификаторы пакетов, включенные всегда, если аккаунт/терминал включен
om.defaultPackages=
# При добавлении терминала через биллинг он будет помечен как зарегистрированный
om.terminal.registered=1
# ID типа аккаунта - терминала (STB)
# При подгрузке новых терминалов с IPTVPortal будет создаваться дочерний аккаунт данного типа
om.terminal.tvAccountSpecId=
Заметьте, что у типа устройства IPTVPortal ID получился равным 2. Именно это значение и прописано в конфигурации модуля, в параметре om.deviceTypeIds.
Создайте устройство типа Access+Accounting и укажите конфигурацию:
# Обработка/обсчет
# кол-во потоков в обработчике
accounting.worker.1.thread.count=1
# пауза перед следующим выполнением
accounting.worker.1.tracking.account.1.delay=60
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.account.1.batchSize=500
# пауза перед следующим выполнением
accounting.worker.1.tracking.event.1.delay=10
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.event.1.batchSize=100
# Синхронизация
# кол-во выполняемых задач в одном блоке
om.batch.size=20
# время ожидания завершения future задач
om.batch.pause=0
# время ожидания завершения future задач
om.batch.wait=5
# время ожидания следующей задачи перед закрытием соединения
om.batch.waitNext=5
# пауза после ошибки
om.error.pause=60
# кол-во попыток с ошибкой перед тем как отложить задачу
om.error.redelivery.count=5
# кол-во попыток с ошибкой после которого отправить оповещение
om.error.alarm.count=20
# таймаут задания, выполняющегося с ошибкой
om.error.redelivery.timeout=86400
Данное устройство будет отражать приложения TVAccess и TVAccounting.
Создайте дочернее к предыдущему устройству устройство типа IPTVPortal, указажите хост подключения, логин и пароль.
Получившееся дерево устройств:
Добавьте тип аккаунта Аккаунт.
А также тип устройства - Терминал. В поле Родительские типы поставьте галочку на типе "Аккаунт", который создали только что. Установите галочку на "MAC-адрес". Также при необходимости можно установить галочку на поле "идентификатор", но следует учитывать, что в текущей версии поле Идентификатор сохраняется в поле inet_addr IPTVPortal’а, и потому должно быть либо пустым, либо правильным IP-адресом.
Теперь необходимо создать Продукты - они будут отражать пакеты системы IPTVPortal. Поле Название - это название, с которым данный продукт будет отображаться в биллинге. Поле Идентификатор - идентификатор пакета системы IPTVPortal (по умолчанию обычно free, pkg0, pkg1, pkg2…).
Чтобы абонент мог активировать Продукт (тем самым активируя подписку в IPTVPortal) необходимо, чтобы в продукте был задан хотя бы один режим активации. Далее от выбранного режима активации может зависеть режим тарификации.
Получившееся дерево Продуктов:
Далее нужно создать тарифный план с веткой модуля. Пример тарифа:
На договоре нужно добавить модуль TV и создать аккаунт, который будет связан с аккаунтом из системы IPTVPortal
Можно (не обязательно) добавить терминал, как дочерний к аккаунту.
Получившееся дерево аккаунтов:
При регистрации терминала в системе IPTVPortal не приходит какое-либо уведомление в биллинг. Поэтому для синхронизации информации о терминалах нужно создать отдельную задачу. Для этого сначала нужно добавить глобальный скрипт поведения:
Далее добавить задачу в планировщик "Выполнение глобальных скриптов по таймеру". Для корректной работы не забудьте указать правильный ID типа аккаунта-терминала в поле om.terminal.tvAccountSpecId (чтобы добавленные дочерние аккаунты-терминалы были указанного типа) в конфигурации типа устройства IPTVPortal:
# ID типа аккаунта - терминала (STB)
# При подгрузке новых терминалов с IPTVPortal будет создаваться дочерний аккаунт данного типа
om.terminal.tvAccountSpecId=
FrontStage Middleware (Mediastage.tv, TelecomTV, BCC)
При интеграции с системой FrontStage Middleware используется единый тариф MW, продукты модуля являются подключаемыми услугами MW.
Создайте конфигурацию модуля и сделайте ее активной:
# Параметры аккаунта
# минимальный логин при генерации
account.login.min=100000
# максимальный логин при генерации
account.login.max=999999
# форматирование логина
account.login.format=000000
# длина пароля при генерации
account.password.length.auto=4
# символы генерируемого пароля
account.password.chars=0123456789
# Тип устройства - TelecomTV
# используется для задачи синхронизации терминалов из MW в биллинг
om.deviceTypeIds=
# Web-сервис для обращения MW к биллингу по адресу /abilling/tv-ws/ru.avantis.abilling.modules.tv.integration.bcc.telecomtv.ws.billing/<mid>/BillingIptv
tv.ws.billing.class=ru.avantis.abilling.modules.tv.integration.bcc.telecomtv.ws.billing.impl.BillingIptvImpl
# Привязка orderType MW (в данном случае TV1) к продукту биллинга для активации через приставку
om.orderType.TV1.productSpecId=
Необходимо создать новый тип устройства, назвать его, например, Access+Accounting - данный тип устройства будет отражать приложения TvAccess и TvAccounting.
Далее создайте новый тип устройства, назовите его, например, TelecomTV и добавьте конфигурацию:
# Регион MW-системы
om.regionId=1
# Язык MW-системы
om.lang=ru
# Коды параметров договора для заполнения полей в FrontStage Middleware
# код параметра договора ФИО или Фамилия (если фамилия указывается отдельно)
customer.lastName.pid=
# код параметра Имя (если он указан отдельно)
#customer.firstName.pid=
# код параметра - названия компании (для юр. лиц)
customer.company.pid=
# код параметра - адрес
customer.address.pid=
# код параметра - телефон
#customer.phone.pid=
# Тариф системы FrontStage Middleware по умолчанию для аккаунта
om.tariff.default=
# Режим интеграции FrontStage Middleware с биллингом
#om.integrationMode=Prepaid 2.0
# Режим синхронизации продуктов (0 - по событию, 1 - по событию, полная)
om.product.syncMode=1
# уровень интеграции, 0 - интеграция на уровне продуктов модуля, 1 - интеграция на уровне сервисов модуля
#om.product.serviceMode=0
Создайте устройство типа Access+Accounting и дочернее к нему устройство типа TelecomTV, укажите хост и порт подключения, логин и пароль.
Добавьте тип аккаунта Аккаунт, установите галочки на "логин" и "пароль", укажите конфигурацию:
# ID устройства TelecomTV
const.device.id=
# Шаблон имени аккаунта
title.pattern=Аккаунт: (${login})
Далее добавьте тип аккаунта для STB, установите галочки на "идентификатор" и "MAC-адрес", укажите конфигурацию, в зависимости от типа приставки:
# Шаблон имени
title.pattern=Yuxing IPTV: (${identifier}) ([${macAddress}])
# Тип приставки в FrontStage Middleware
terminal.typeId=18
terminal.bandwidth=99
В поле Родительские типы поставьте галочку на типе "Аккаунт", который создали только что.
Middleware Stalker (infomir)
Интеграция с Middleware Stalker представлена в виде отрытого кода (динамические классы).
CTI TVEngine
Интеграция с CTI TVEngine представлена в виде отрытого кода (динамические классы).
При интеграции с данной системой продукты модуля являются подключаемыми сервисами TVEngine.
После установки TVAccess и TVAccounting скопируйте папку BillingServer/lib/endorsed в TVAccess/lib и TVAccounting/lib, если она там отсутствует. Скопируйте BillingServer/lib/ext/serializer.jar в TVAccess/lib/ext и TVAccounting/lib/ext. Удостоверьтесь, что в access.sh и accounting.sh есть строка -Djava.endorsed.dirs=${ APP_HOME }/lib/endorsed:${ JAVA_HOME }/lib/endorsed" именно в таком виде. После этого необходимо перезапустить TVAccess и TVAccounting.
Добавьте конфигурацию модуля, укажите в ней веб-сервисы, к которым будет обращаться TVEngine и установите конфигурацию активной:
# Активные и приостановленные статусы договора
contract.status.active.codes=0
contract.status.suspend.codes=3,4
# Id сущностей (Справочники - Атрибуты) для продукта, сервиса и канала,
# для привязки атрибутов к продуктам, сервисам и каналам
#productSpec.entitySpecId=
#serviceSpec.entitySpecId=
#tvChannelSpec.entitySpecId=
#Пункты Web - меню
web.menuItem1=TV подписки
# Параметры автоматической генерации логина для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальное значение логина при генерации логина
account.login.min=10000001
# максимальное значение логина при генерации логина (т.е. если в базе присутствуют логины 1,2,3 и 10000000,
# то при генерации создастся логин 4, а не 10000001)
account.login.max=99999999
# форматирование генерируемого логина
#account.login.format=0000000
# Парамерты пароля для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальная длина пароля
account.password.length.min=4
# Максимальная длина пароля
account.password.length.max=8
# Разрешенные символы (используются также при генерации пароля)
account.password.chars=1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
# Описание разрешенных символов, если пользователь ввел другие
account.password.chars.description=В пароле допустимы только цифры и латинские буквы.
# Длина для автоматически генерируемого пароля
account.password.length.auto=6
# Используемые символы для автоматически генерируемого пароля (по умолчанию значение берется из параметра account.password.chars)
#account.password.chars.auto=
# Веб-сервисы биллинга, к которым обращается TVEngine
tv.ws.billing.class=ru.avantis.abilling.modules.tv.dyn.cti.tve.ws.billing.impl.BillingServiceWSImpl
tv.ws.pricing.class=ru.avantis.abilling.modules.tv.dyn.cti.tve.ws.pricing.impl.PricingServiceWSImpl
tv.ws.order.class=ru.avantis.abilling.modules.tv.dyn.cti.tve.ws.order.impl.OrderManagementServiceWSImpl
Обратите внимание, что для этих сервисов нет авторизации, т.е. они должны быть закрыты от внешнего доступа (контекст tv-ws, т.е. http://billing:8080/tv-ws/…;).
В конфигурации TVEngine iptvmw-config.properties должны быть указаны пути к этим веб-сервисам биллинга (10 - это код модуля, значение нужно будет заменить):
#--------------------------------------------------------------------------------------------------------
# 1.2 PUSH (EXTERNAL) MODE
#--------------------------------------------------------------------------------------------------------
# type of billing system:
# db - internal billing
# ws - external billing through web-services
# cti - CTI-BILLING
# fastcom - FASTCOM-billing
tve.billing.type=ws
# getting customer status from billing during stb authentication process (default - FALSE)
tve.billing.needGetDataFromBillingDuringStbAuthentication=false
# allows to select OrderManagementService implementation type (available values: db , ws, cti, fastcom)
tve.billing.external.orderManagementService.type=ws
# allows to select BillingManagementService implementation type for 'queryCustomerAccountInfo' method only (available values: db , ws, cti, fastcom)
tve.billing.external.billingManagementService.queryCustomerAccountInfo.type=ws
# external billing realization for "askPermissionToActivateOnBilling" method
# (using during set top box registration operation)
tve.billing.external.customerManagementService.askPermissionToActivateOnBilling.type=ws
tve.billing.external.billingManagementService.type=db
tve.billing.external.billingManagementService.queryCustomerAccountInfo.type=ws
tve.billing.external.billingManagementService.queryBillingEntries.type=ws
tve.billing.external.billingManagementService.querySummByService.type=ws
#--------------------------------------------------------------------------------------------------------
# 1.3.1.1 SINGLE BILLING SYSTEM - setting for single billing PULL mode
#--------------------------------------------------------------------------------------------------------
billadapter.pull.pricingservice=http://billing:8080/abilling/tv-ws/ru.avantis.abilling.modules.tv.dyn.cti.tve.ws.pricing/10/PricingServiceWS?wsdl
billadapter.pull.orderservice=http://billing:8080/abilling/tv-ws/ru.avantis.abilling.modules.tv.dyn.cti.tve.ws.order/10/OrderManagementServiceWS?wsdl
billadapter.pull.billingservice=http://billing:8080/abilling/tv-ws/ru.avantis.abilling.modules.tv.dyn.cti.tve.ws.billing/10/BillingServiceWS?wsdl
После изменения конфигурации TVEngine необходимо его перезапустить (service jetty restart).
Необходимо создать новый тип устройства, назвать его, например, Access+Accounting - данный тип устройства будет отражать приложения TvAccess и TvAccounting.
Далее создайте новый тип устройства, назовите его, например, TVEngine и добавьте конфигурацию:
# Коды параметров договора для заполнения полей в CTI TVEngine
# код параметра договора ФИО или Фамилия (если фамилия указывается отдельно)
customer.lastName.pid=
# код параметра Имя (если он указан отдельно)
#customer.firstName.pid=
# код параметра Отчество (если он указан отдельно)
#customer.middleName.pid=
# код параметра - названия компании (для юр. лиц)
customer.company.pid=
# код параметра - пол
#customer.gender.pid=
# код параметра - дата рождения
customer.birthDate.pid=
Укажите в нем OrderManager - ru.avantis.abilling.modules.tv.dyn.cti.tve.TveOrderManager.
Создайте устройство типа Access+Accounting и укажите конфигурацию:
# Обработка/обсчет
# кол-во потоков в обработчике
accounting.worker.1.thread.count=1
# пауза перед следующим выполнением
accounting.worker.1.tracking.account.1.delay=60
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.account.1.batchSize=500
# пауза перед следующим выполнением
accounting.worker.1.tracking.event.1.delay=10
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.event.1.batchSize=100
# Синхронизация
# кол-во выполняемых задач в одном блоке
om.batch.size=20
# время ожидания завершения future задач
om.batch.pause=0
# время ожидания завершения future задач
om.batch.wait=5
# время ожидания следующей задачи перед закрытием соединения
om.batch.waitNext=5
# пауза после ошибки
om.error.pause=30
# кол-во попыток с ошибкой перед тем как отложить задачу
om.error.redelivery.count=5
# кол-во попыток с ошибкой после которого отправить оповещение
om.error.alarm.count=20
# таймаут задания, выполняющегося с ошибкой
om.error.redelivery.timeout=86400
Данное устройство будет отражать приложения TVAccess и TVAccounting.
Создайте дочернее к предыдущему устройству устройство типа TVEngine, указажите хост подключения, логин и пароль.
Добавьте тип аккаунта Аккаунт, установите галочки на "логин" и "пароль", укажите конфигурацию:
# ID устройства TVEngine
const.device.id=
# Шаблон имени аккаунта
title.pattern=Аккаунт: (${login})
Добавьте тип аккаунта для приставки. Конфигурацию укажите в зависимости от типа приставки:
# Шаблон имени
title.pattern=SagemHD85: (${identifier}) ([${macAddress}])
# Тип приставки в MW CTI TVEngine
stb.type=sagemHD85
В поле Родительские типы поставьте галочку на типе "Аккаунт", который создали только что. В договоре он будет дочерним по отношению к аккаунту типа "Аккаунт".
LifeStream (lfstrm.tv, smotreshka.tv)
Интеграция с LifeStream API представлена в виде отрытого кода (динамические классы).
При интеграции с системой LifeStream используется единый тариф MW, продукты модуля являются подключаемыми подписками MW.
Создайте конфигурацию модуля и сделайте ее активной:
Обратите внимание, что логины назначаются со стороны биллинга, а не MW, но при этом они сквозные для всех провайдеров, поэтому во избежание ошибок "Пользователь с таким username уже существует" необходимо указать параметр account.login.prefix. Данный префикс будет использоваться при синхронизации с MW, однако в биллинге логины будут без него. |
# Активные и приостановленные статусы договора
contract.status.active.codes=0
contract.status.suspend.codes=3,4
# Id сущностей (Справочники - Атрибуты) для продукта, сервиса и канала,
# для привязки атрибутов к продуктам, сервисам и каналам
#productSpec.entitySpecId=
#serviceSpec.entitySpecId=
#tvChannelSpec.entitySpecId=
#Пункты Web - меню
web.menuItem1=TV подписки
# Параметры автоматической генерации логина для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальное значение логина при генерации логина
account.login.min=10000001
# максимальное значение логина при генерации логина (т.е. если в базе присутствуют логины 1,2,3 и 10000000,
# то при генерации создастся логин 4, а не 10000001)
account.login.max=99999999
# форматирование генерируемого логина
#account.login.format=0000000
# Префикс логина для LifeStream
account.login.prefix=
# Параметры пароля для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальная длина пароля
account.password.length.min=4
# Максимальная длина пароля
account.password.length.max=8
# Разрешенные символы (используются также при генерации пароля)
account.password.chars=1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
# Описание разрешенных символов, если пользователь ввел другие
account.password.chars.description=В пароле допустимы только цифры и латинские буквы.
# Длина для автоматически генерируемого пароля
account.password.length.auto=6
# Используемые символы для автоматически генерируемого пароля (по умолчанию значение берется из параметра account.password.chars)
#account.password.chars.auto=
Необходимо создать новый тип устройства, назвать его, например, Access+Accounting - данный тип устройства будет отражать приложения TvAccess и TvAccounting.
Далее создайте новый тип устройства, назовите его, например, LifeStreamTV и добавьте конфигурацию:
# Коды параметров договора для заполнения полей в Middleware
# откуда брать email, можно указать через запятую (1 - из параметра договора, 2 - из поля логин, 3 - из поля идентификатор)
customer.email.sources=1
# код параметра email (если он указан отдельно)
customer.email.pid=
# домен, который будет добавляться к логину для составления фиктивного email, в случае если email не указан
#customer.email.domain=
# Режим синхронизации продуктов (0 - по событию, 1 - по событию, полная)
om.product.syncMode=1
# уровень интеграции, 0 - интеграция на уровне продуктов модуля, 1 - интеграция на уровне сервисов модуля
#om.product.serviceMode=0
В случае, если Вы хотите указывать фиктивный email в MW (например, у вас нет данных о email абонентов), то укажите такие параметры:
# Коды параметров договора для заполнения полей в Middleware
# откуда брать email, можно указать через запятую (1 - из параметра договора, 2 - из поля логин, 3 - из поля идентификатор)
customer.email.sources=1
# код параметра email (если он указан отдельно)
customer.email.pid=0
# домен, который будет добавляться к логину для составления фиктивного email, в случае если email не указан
#customer.email.domain=
При указании логина идентичным email абонента (т.е. при использовании customer.email.sources=2) можно добавить проверку на то, чтобы в поле логин вводили корректный email. Для этого в скрипт поведения, привязанный к договору, нужно на событие "Изменяется аккаунт договора" добавить дин. класс ru.avantis.abilling.modules.tv.dyn.lfstrm.LifeStreamEventListener, а также в конфигурации модуля прописать account.login.email.check=1.
Выберите в поле OrderManager динамический класс ru.avantis.abilling.modules.tv.dyn.lfstrm.LifeStreamV2OrderManager (чтобы его можно было выбрать, данный дин. класс должен быть скомпилирован через вкладку Управление динамическим кодом).
Создайте устройство типа Access+Accounting и укажите конфигурацию:
# Обработка/обсчет
# кол-во потоков в обработчике
accounting.worker.1.thread.count=1
# пауза перед следующим выполнением
accounting.worker.1.tracking.account.1.delay=60
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.account.1.batchSize=500
# пауза перед следующим выполнением
accounting.worker.1.tracking.event.1.delay=10
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.event.1.batchSize=100
# Синхронизация
# кол-во выполняемых задач в одном блоке
om.batch.size=20
# время ожидания завершения future задач
om.batch.pause=0
# время ожидания завершения future задач
om.batch.wait=5
# время ожидания следующей задачи перед закрытием соединения
om.batch.waitNext=5
# пауза после ошибки
om.error.pause=60
# кол-во попыток с ошибкой перед тем как отложить задачу
om.error.redelivery.count=5
# кол-во попыток с ошибкой после которого отправить оповещение
om.error.alarm.count=20
# таймаут задания, выполняющегося с ошибкой
om.error.redelivery.timeout=86400
Данное устройство будет отражать приложения TVAccess и TVAccounting.
Создайте дочернее к предыдущему устройству устройство типа LifeStreamTV, укажите хост подключения (например, provider.test.lfstrm.tv), логин и пароль. Также URL подключения можно указать в конфигурации устройства, тогда поле Хост/порт не будет использоваться:
om.url=http://provider.test.lfstrm.tv
Добавьте тип аккаунта Аккаунт, укажите в его конфигурации ID только что добавленного устройства LifeStreamTV:
# автоматически привязываем к устройству LifeStreamTV
const.device.id=
# шаблон названия
title.pattern=Аккаунт (${login})
Установите галочки на полях логин и пароль.
Теперь необходимо создать Продукты - они будут отражать пакеты системы LifeStreamTV. Поле Название - это название, с которым данный продукт будет отображаться в биллинге. Поле Идентификатор - идентификатор пакета системы LifeStreamTV (поле "id").
Commpass (commpass.tv, ТИТВ)
Интеграция с Commpass API представлена в виде отрытого кода (динамические классы).
При интеграции с системой Commpass используется единый тариф MW, продукты модуля являются подключаемыми подписками MW.
Создайте конфигурацию модуля и сделайте ее активной:
# Активные и приостановленные статусы договора
contract.status.active.codes=0
contract.status.suspend.codes=3,4
# Id сущностей (Справочники - Атрибуты) для продукта, сервиса и канала,
# для привязки атрибутов к продуктам, сервисам и каналам
#productSpec.entitySpecId=
#serviceSpec.entitySpecId=
#tvChannelSpec.entitySpecId=
#Пункты Web - меню
web.menuItem1=TV подписки
# Параметры автоматической генерации логина для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальное значение логина при генерации логина
account.login.min=10000001
# максимальное значение логина при генерации логина (т.е. если в базе присутствуют логины 1,2,3 и 10000000,
# то при генерации создастся логин 4, а не 10000001)
account.login.max=99999999
# форматирование генерируемого логина
#account.login.format=0000000
# Параметры пароля для аккаунта. Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса
# (в последнем случае значения будут главнее):
# минимальная длина пароля
account.password.length.min=4
# Максимальная длина пароля
account.password.length.max=8
# Разрешенные символы (используются также при генерации пароля)
account.password.chars=1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
# Описание разрешенных символов, если пользователь ввел другие
account.password.chars.description=В пароле допустимы только цифры и латинские буквы.
# Длина для автоматически генерируемого пароля
account.password.length.auto=6
# Используемые символы для автоматически генерируемого пароля (по умолчанию значение берется из параметра account.password.chars)
#account.password.chars.auto=
# ID типа устройства - Commpass
om.commpass.deviceTypeIds=
Необходимо создать новый тип устройства, назвать его, например, Access+Accounting - данный тип устройства будет отражать приложения TvAccess и TvAccounting.
Далее создайте новый тип устройства, назовите его, например, Commpass и добавьте конфигурацию:
# Коды параметров договора для заполнения полей в Middleware
#customer.lastName.pid=
#customer.firstName.pid=
#customer.middleName.pid=
# Режим синхронизации продуктов (0 - по событию, 1 - по событию, полная)
om.product.syncMode=1
# уровень интеграции, 0 - интеграция на уровне продуктов модуля, 1 - интеграция на уровне сервисов модуля
#om.product.serviceMode=0
# ID типа аккаунта - STB
om.terminal.tvAccountSpecId=
Выберите в поле OrderManager динамический класс ru.avantis.abilling.modules.tv.dyn.commpasstv.CommpassOrderManager (чтобы его можно было выбрать, данный дин. класс должен быть скомпилирован через вкладку Управление динамическим кодом).
Укажите ID только что созданного типа устройства в конфигурации модуля, в параметре om.commpass.deviceTypeIds.
Создайте устройство типа Access+Accounting и укажите конфигурацию:
# Обработка/обсчет
# кол-во потоков в обработчике
accounting.worker.1.thread.count=1
# пауза перед следующим выполнением
accounting.worker.1.tracking.account.1.delay=60
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.account.1.batchSize=500
# пауза перед следующим выполнением
accounting.worker.1.tracking.event.1.delay=10
# максимальное кол-во обработанных аккаунтов в одном выполнении
accounting.worker.1.tracking.event.1.batchSize=100
# Синхронизация
# кол-во выполняемых задач в одном блоке
om.batch.size=20
# время ожидания завершения future задач
om.batch.pause=0
# время ожидания завершения future задач
om.batch.wait=5
# время ожидания следующей задачи перед закрытием соединения
om.batch.waitNext=5
# пауза после ошибки
om.error.pause=60
# кол-во попыток с ошибкой перед тем как отложить задачу
om.error.redelivery.count=5
# кол-во попыток с ошибкой после которого отправить оповещение
om.error.alarm.count=20
# таймаут задания, выполняющегося с ошибкой
om.error.redelivery.timeout=86400
Данное устройство будет отражать приложения TVAccess и TVAccounting.
Создайте дочернее к предыдущему устройству устройство типа Commpass, укажите хост подключения, логин и пароль.
Добавьте тип аккаунта "Аккаунт", укажите в его конфигурации ID только что добавленного устройства Commpass:
# автоматически привязываем к устройству Commpass
const.device.id=
# шаблон названия
title.pattern=Аккаунт (${login})
Добавьте тип аккаунта "STB", установите галочку MAC-адрес, на вкладке "Родительские типы" установите галочку на типе аккаунта "Аккаунт", в конфигурации укажите:
# автоматически привязываем к устройству Commpass
const.device.id=
# шаблон названия
title.pattern=STB: (${macAddress})
Укажите ID только что добавленного типа аккаунта в конфигурации типа устройства Commpass в параметре om.terminal.tvAccountSpecId.
Теперь необходимо создать Продукты - они будут отражать пакеты системы Commpass. Поле Название - это название, с которым данный продукт будет отображаться в биллинге. Поле Идентификатор - идентификатор пакета системы Commpass (поле "id"). Список и id доступных пакетов можно посмотреть запросом https://api.commpass.tv/rest/package.
Чтобы абонент мог активировать Продукт (тем самым активируя подписку в Commpass) необходимо, чтобы в продукте был задан хотя бы один режим активации. Далее от выбранного режима активации может зависеть режим тарификации.
При регистрации приставки в системе Commpass не приходит какое-либо уведомление в биллинг. Поэтому для синхронизации информации о терминалах нужно создать отдельную задачу. Для этого нужно добавить глобальный скрипт поведения (Сервис - Автоматизация - Глобальные скрипты поведения), выбрав класс ru.avantis.abilling.modules.tv.dyn.commpasstv.CommpassTerminalSynchronizingTask, далее добавить задачу в планировщик "Выполнение глобальных скриптов по таймеру".
Модуль Inet (продукты TV - опции Inet)
Интеграция с модулем Inet производится на уровне активных продуктов с помощью опций Inet. В тариф необходимо добавить ветку Продукт, в нее ветку Опция. Внутрь ветки Продукт запрос будет попадать только, если выбранный продукт(ы) на данный момент активен. А уже в модуле Inet, в зависимости от того активна или нет данная опция, можно производить какие-либо действия, например, менять параметры порта на коммутаторе.