Интеграция с 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
В поле Родительские типы поставьте галочку на типе "Аккаунт", который создали только что. В договоре он будет дочерним по отношению к аккаунту типа "Аккаунт".