11.4. CTI TVEngine

Интеграция с CTI TVEngine представлена в виде отрытого кода (динамические классы).

При интеграции с данной системой продукты модуля являются подключаемыми сервисами TVEngine.

После установки TVAccess и TVAccounting скопируйте папку BGBillingServer/lib/endorsed в TVAccess/lib и TVAccounting/lib, если она там отсутствует. Скопируйте BGBillingServer/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.bitel.bgbilling.modules.tv.dyn.cti.tve.ws.billing.impl.BillingServiceWSImpl
tv.ws.pricing.class=ru.bitel.bgbilling.modules.tv.dyn.cti.tve.ws.pricing.impl.PricingServiceWSImpl
tv.ws.order.class=ru.bitel.bgbilling.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/bgbilling/tv-ws/ru.bitel.bgbilling.modules.tv.dyn.cti.tve.ws.pricing/10/PricingServiceWS?wsdl
billadapter.pull.orderservice=http://billing:8080/bgbilling/tv-ws/ru.bitel.bgbilling.modules.tv.dyn.cti.tve.ws.order/10/OrderManagementServiceWS?wsdl
billadapter.pull.billingservice=http://billing:8080/bgbilling/tv-ws/ru.bitel.bgbilling.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.bitel.bgbilling.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

В поле Родительские типы поставьте галочку на типе "Аккаунт", который создали только что. В договоре он будет дочерним по отношению к аккаунту типа "Аккаунт".