- Заведение оборудования
- Настройка NAS-сервера
- Ограничение запросов к API поставщика услуг
- Установка proxy сервера на стороне провайдера при работе клиентов через NAT
- Интеграция за 48 часов с 24часаТВ
- Отладка
- Как делать отладку?
- Существует несколько услуг создания одной учётной записи, биллинг не знает какую выбрать.
- Как проверить, что "Интеграция за 48 часов" работает?
- Ошибка "User with this phone already exists" - "Пользователь с этим телефоном уже существует"
- Подключаю услуги на приставке или в приложении - ничего не происходит
- Ошибка "Метод "create user account" не разрешен."
- Ошибка "Billing have many packets with id=6"
- Ошибка "Произошла ошибка: Ошибка запроса к 24h.tv! message=Не найдено.; detail=Не найдено."
- Ошибка "field user_id is unsupported"
- Ошибка "Not found services for create IPTV user" в логах /app/asr_fiscal/var/log/integrations/IntegrationIptv24htv.log
- Создание услуг IPTV
- Добавление услуги, подключающей пакеты телевидения
- Добавление услуги, создающей учетную запись на портале телевидения
- Отправка сообщения абоненту о создании учетной записи
Заведение оборудования
Время выполнения инструкции: до 5 минут |
Для настройки IPTV нужно:
Шаг 1. Создать сервер IPTV в разделе оборудования, вкладка IPTV
IP-адрес - любой, например 1.1.1.1 IP важен только для [Ministra] |
Примечание: Стандартная схема OSS зависит от IPTV портала. В данном случае схема выбрана для TITV!
Шаг 2. На вкладке Дополнительно ставим опцию "Передавать пароль в скрипт событий"
Шаг 3. Переходим в управление и нажимаем Сохранить где указан каталог управления. Затем В "шаг 1 Инициализация" выполняем все кнопки последовательно
Шаг 4. Переходим на вкладку Настройка и обновляем список файлов
Шаг 5. В main.ini прописываем данные для вашего IPTV
Настройка NAS-сервера
В файле main.ini необходимо указать token и balance_source_id выданный 24hTV.
tmplt=tmplt/main.cfg.tmplt enabled="1" url=https://api.24h.tv/v2/ token= balance_source_id= (Опционально) err_msg_user= (Опционально)
balance_source_id - идентификатор для источника баланса, предназначен для вывода баланса абонента в тв-приложение. Данный идентификатор запрашивается письмом у сервиса 24ТВ.
err_msg_user - здесь можно указать текст сообщения об ошибке, которое будет отображаться у абонента при попытке подключения пакета, если в запросе на подключение не указан provider_uid.
После этого обязательно нужно нажать кнопку "Сохранить" сразу под полем, в которое вносились изменения.
Ограничение запросов к API поставщика услуг
В файле main.ini необходимо добавить параметр sync_minutes (по умолчанию значение параметра равно 60, единица измерения - 1 минута). Данный параметр задает период ожидания между синхронизациями IPTV OSS, другими словами, регулирует частоту отправки API-запросов на портал поставщика. У некоторых поставщиков услуг IPTV есть ограничение на кол-во API-запросов к их серверу. Чтобы не выходить за рамки данных ограничений, рекомендуется увеличить параметр sync_minutes таким образом, чтобы период ожидания увеличился с 60 минут до 24 часов или 7 суток. После этого необходимо перезапустить обработчик синхронизаций:
chroot /app/asr_billing service oss restart
Установка proxy сервера на стороне провайдера при работе клиентов через NAT
Если вы используете NAT, то для для корректной работы метода AUTH, необходимо на стороне провайдера установить proxy сервер. Подробнее можно прочитать в официальной документации 24tv.
В состав Биллинг 5 proxy сервер не входит. Установить proxy на сервер биллинга нет технической возможности. Установите proxy на отдельный сервер.
Интеграция за 48 часов с 24часаТВ
Реализован обработчик для обратных запросов - со стороны 24часаТВ к биллингу.
Он доступен по следующим адресам:
- Для HTTP
http://169.254.14.44:1444/integration_iptv24htv.php
- Для HTTPS
https://169.254.14.43:1443/integration_iptv24htv.php https://169.254.14.43:2443/integration_iptv24htv.php
Порты могут быть изменены по статье "Основные настройки платежных систем". Рекомендуется использовать "Защищенный внешний порт платежных систем, без необходимости передачи сертификата"
|
Механизм работы
При заказе пакета каналов в приложении на ТВ или планшете будет отправлен запрос на сервер 24часаТВ. Сервер 24часаТВ отправит запрос на биллинг. Логика обработки запроса реализована на биллинге. На биллинге будет подключена услуга пакет каналов. При необходимости отключен более дешевый пакет. Далее от биллинга будет отправлен запрос на 24часаТВ с информацией о подключенных каналах.
Если абонент подключает новый базовый пакет, и он дешевле текущего базового, то новый пакет подключается только со следующего месяца. Это общая логика для базовых пакетов при подключении с приставки. |
Бандлы
Бандлы - это тарифы, объединяющие услуги интернет и телевидения, обычно предоставляющиеся со "скидкой": приобрести услуги бандлом выгодней, чем отдельно. Как использовать бандлы Интернет+24часаТВ:
- Договоритесь с 24часаТВ о льготных условиях при использовании бандлов
- 24часаТВ со своей стороны отметит данные пакеты для использования в бандлах
- Настройте тарифы интернет+ТВ в биллинге
- Абоненты в приложении не смогут переключать пакеты, входящие в бандлы - им потребуется делать это через личный кабинет провайдера.
Как настроить
- Путь к обработчику передайте специалистам 24часаТВ, обратите внимание на необходимость указания внешнего адреса биллинга, а так же перенаправления используемого порта в случае если биллинг находится за NAT
- Запросите у 24часаТВ IP-адреса с которых они планируют обращаться в биллинг и добавьте в список разрешенных по статье "Настройка сети для платежных систем"
Запрос AUTH
Поиск абонента происходит по IP. Если в биллинге несколько абонентов с одинаковым IP-адресом, то происходит уточнённый поиск по номеру телефона. В ответ сервису биллинг отправляет ID абонента. Дальнейшее взаимодействие с 24часаТВ и биллинга будет происходить по "provider_uid" - id абонента из биллинговой системы.
При запросе AUTH, учётная запись в биллинге не создаётся! Она будет создана автоматически, когда абонент подключит первый пакет ТВ, |
Запрос PACKET
В сервисе 24часаТВ бывают два вида пакетов: базовые (основной) и дополнительные. Каждый базовый пакет имеет свой набор дополнительных пакетов для подключения (могут быть базовые пакеты и без дополнительных).
При переключении базовых пакетов, может возникнуть ситуация когда был подключен дополнительный пакет, и он входит в состав нового базового пакета. В таком случае мы отключаем дополнительный пакет автоматический.
Например, если у абонента был тариф "Базовый" и подключена дополнительная услуга "Амедиатека", при смене на тариф "Максимальный", доп. услуга отключится автоматически, так как она входит в состав более дорого тарифа.
При успешном выполнении запроса, в ответе сервису возвращается параметр "status=1"
Запрос CONT
При успешном выполнении запроса, в ответе сервису возвращаются параметры "status=1" и "id=ID подключенного пакета в биллинге"
Отладка
Отладить передачу данных со стороны сервиса телевидения к биллингу Вы можете по следующим файлам журналов:
- Журнал веб сервера
/app/asr_fiscal/var/log/httpd/error_log
- Журнал службы интеграции 24часаТВ
/app/asr_fiscal/var/log/integrations/IntegrationIptv24htv.log
- Журнал закросов к API v2 со контейнера платёжных систем
/app/asr_fiscal/var/log/rest_api_v2.log
- Журнал API v2 со стороны контейнера биллинга
/app/asr_billing/var/log/django/api_v2.log
Из биллинга к сервису по этому логу:
/app/asr_billing/var/log/nas_event_daemon/iptv24tv.log /app/asr_billing/var/log/nas_event_daemon/24hTV_1.1.1.1.log /app/asr_billing/var/log/oss.log
1.1.1.1 - это IP с которым NAS добавлен в биллинг.
В аудите при подключении или отключении пакета ТВ по запросу из 24ТВ будет пометка Примечание=IPTV 24htv API:
1234123 Системные события 2020-01-01 10:10 ---- Добавлена запись №3926: таблица Услуги ... [Примечание=IPTV 24htv API]
Как делать отладку?
Анализируйте сообщения лога, обычно они довольно говорящие и описывают совершаемое действие, например "Создаю учетную запись" или "Подключаю пакет телевидения".
Если возникает ошибка, как правило, в тексте сообщения будет что-то вроде "ERROR" или "CRITICAL" и само сообщение ошибки.
Поняв текст сообщения об ошибке можно сделать вывод, следует ли обратиться к документации, техподдержке Carbon Soft или техподдержке сервиса.
События происходящие с абонентом удобно смотреть в реальном времени.
|
Существует несколько услуг создания одной учётной записи, биллинг не знает какую выбрать.
Ситуация возникает в случаях, когда на запрос подключения подписки биллинг возвращает ошибку:
Billing have many services for create IPTV user
Это происходит, когда в биллинге есть несколько услуг создания учётной записи (create_login=1) привязанных к одному NAS.
Например:
[root@TvoiTelecom ~]# sqlexec -l -r "select count(*) from usluga where create_login=1 and nas_id=1117"
COUNT 13
Если необходимо несколько таких услуг, то абоненту нужно заранее создать учётную запись IPTV любым способом, тогда обратная интеграция не будет пытаться подключить услугу создания учётной записи.
Как проверить, что "Интеграция за 48 часов" работает?
Самый надёжный способ - попробуйте управлять подписками через приложения для мобильного телефона или приставки.
Если такой возможности нет, можно отправить какой-либо запрос к платформе 24часаТВ с помощью CURL. Например, такой запрос должен подключить подписку в ID=6 учётной записи ID=70142, это внутренний ID в системе 24часаТВ.
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '[{ "packet_id": 6, "renew": true }]' 'https://api.24h.tv/v2/users/70142/subscriptions?token=gf809gu890fsjiogjkosf89u90u890gfsjkjkgfs' | jq .
В примере URL - api.24h.tv, а токен gf809gu890fsjiogjkosf89u90u890gfsjkjkgfs. Это примеры, для Ваших запросов возьмите URL и токен те, что указали в main.ini |
Команда jq может быть не установлена на Вашем сервере. Установите её командой
yum install -y jq |
Ошибка "User with this phone already exists" - "Пользователь с этим телефоном уже существует"
ValueError: Ошибка запроса к 24h.tv! message={'phone': [ErrorDetail(string='User with this phone already exists.', code='invalid')]
ValueError: Ошибка запроса к 24h.tv! message={'phone': [ErrorDetail(string='Пользователь с этим телефоном уже существует.', code='invalid')], 'email': [ErrorDetail(string='Пользователь с таким адресом электронной почты уже существует.', code='invalid')]};
Возможна ситуация, когда абонент зарегистрировался в ОТТ и его надо перенести в провайдера в ручном режиме. ОТТ - это абоненты не принадлежащие провайдерам, например - купившие подписку у 24ТВ напрямую. После обращения к провайдеру, биллинг пытается создать учётную запись по телефону зарегистрированному в 24ТВ - это вызывает ошибку.
Провайдеру надо обратиться в техническую поддержку 24ТВ и попросить перенести этого абонента в ручную.
После исправления ситуации на сервисе, удалите в биллинге услугу создания учетной записи и учетную запись. Подключите услугу заново.
Подключаю услуги на приставке или в приложении - ничего не происходит
- Посмотрите в администраторской панели 24h.tv логи отправленных команд к биллингу. Если там не отражены запросы на подключение услуги или регистрацию - обратитесь в поддержуц 24h,tv
- Если запросы есть и сервис отправлял команды на биллинг, их можно посмотреть в логе /app/asr_fiscal/var/log/IntegrationIptv24htv.log, если там пусто - возможно адресов сервиса нет в списке разрешенных. В любом случае, нужно проверить доходят ли запросы до биллинга:
tcpdump -nni any port 1444 or port 1443 or port 2443
Запустите мониторинг трафика по портам платежных систем в биллинге и попробуйте переключить услуги в приложении или на приставке, убедитесь что 24h.tv отправил запросы к биллингу по их администраторской панели и посмотрите будет ли это в снифере.
Если запросы есть, но логи пусты, еще раз проверьте корректно ли указаны адреса в списке разрешенных.На время теста в список разрешенных адресов можно добавить 0.0.0.0/0, то есть разрешить обращения со всех адресов, тем самым исключить возможные сетевые проблемы
Ошибка "Метод "create user account" не разрешен."
2020-05-22 19:12:35,796 - worker - iptv24tv_sync - ERROR - Произошла ошибка: Ошибка запроса к 24h.tv! message=Метод "create user account" не разрешен.; detail=Метод "create user account" не разрешен. ValueError: Ошибка запроса к 24h.tv! message=Метод "create user account" не разрешен.; detail=Метод "create user account" не разрешен.
В случае фиксирования ошибки в логе /app/asr_billing//var/log/oss.log, необходимо проверить, указан ли в настройках NAS, в файле main.ini, идентификатор balance_source_id.
Ошибка "Billing have many packets with id=6"
2021-08-11 08:26:01 Request="/integration_iptv24htv.php/packet?user_id=1384&trf_id=6" from IP=1.1.1.1 2021-08-11 08:26:01 Input={"user_id":"1234","trf_id":"6"} 2021-08-11 08:26:01 Method=packet 2021-08-11 08:26:01 WARNING Billing have many services for package! packet_id=6 2021-08-11 08:26:01 Response={"status":-3,"errmsg":"Billing have many packets with id=6"}
Эту ошибку можно увидеть в логе "Интеграции за 48 часов" /app/asr_fiscal/var/log/integrations/IntegrationIptv24htv.log и в панели управления 24часаТВ, в разделе "Внешние логи" (http://ISP_SITE.platform24.tv/admin/utils_externals_logs_list/)
Она просходит, если в биллинге есть есть несколько услуг с одинаковым ID пакета для 24часаТВ. В услуге этот параметр задаётся в поле "Строка с дополнительными параметрами по активации"
Для решения проблемы, оставьте только одну такую услугу.
Ошибка "Произошла ошибка: Ошибка запроса к 24h.tv! message=Не найдено.; detail=Не найдено."
2021-09-23 10:13:10,154 - worker - commands - INFO - Проверяем подписку на портале id=6440xxxxxx, packet_id=18, renew=True, end_at=2021-09-30T23:00:00Z, 2021-09-23 10:13:10,161 - worker - v1 - INFO - Request type: GET, request url: https://api.24h.tv/v2/packets/18?token=86c3ee7xxxxxxxxxxx, request data: null, request headers: {} 2021-09-23 10:13:10,233 - worker - iptv24tv_sync - ERROR - Произошла ошибка: Ошибка запроса к 24h.tv! message=Не найдено.; detail=Не найдено. Traceback (most recent call last): .......... File "/mnt/var/oss/core/24TV/lib/iptv24tv_package/commands.py", line 404, in get_portal_packet_info return self.send_request(url=url.format(packet_id=packet_id), method='GET', expected_codes=[200]) File "/mnt/var/oss/core/24TV/lib/iptv24tv_package/commands.py", line 54, in send_request result['error']['message'], result['detail'])) ValueError: Ошибка запроса к 24h.tv! message=Не найдено.; detail=Не найдено.
—
2021-11-01 09:36:08,235 - worker - commands - INFO - Найден в биллинге ABONENT_ID=2764, USER_ID=8413
2021-11-01 09:36:08,243 - worker - commands - INFO - Найден пользователь на портале по portal_id=200xxx id=200xxx, provider_uid=2764, username=5e763a4c-bf74-4a72-xxx-xxxxxxx, phone=792xxxxxx, email=None
2021-11-01 09:36:08,244 - worker - commands - INFO - Активируем услугу пользователя 2764: 190
2021-11-01 09:36:08,270 - worker - v1 - INFO - Request type: GET, request url: https://api.24h.tv/v2/packets/190?token=b4e76a6bcxxxxxx2, request data: null, request headers: {}
2021-11-01 09:36:08,385 - worker - iptv24tv_sync - ERROR - Произошла ошибка: Ошибка запроса к 24h.tv! message=Не найдено.; detail=Не найдено.
Причина возникновения ошибки - это отсутствие соответствующего пакета каналов на портале IPTV. Такая ситуация может возникнуть, когда сервис сделал пакет архивным или отключил его.
В таком случае, если абонент продолжает пользоваться услугой архивного пакета, то эту услуг необходимо скорректировать, убрав из настроек привязку к NAS IPTV и подключить ее заново, но дальнейший контроль за ее отключением или приостановкой ложится на администратора биллинга.
Изначально | После корректировки |
---|---|
Ошибка "field user_id is unsupported"
2021-10-04 01:30:54 Request="/integration_iptv24htv.php/auth?ip=10.0.10.121&phone=79121111111&mbr_id=222222" from IP=10.90.1.185 2021-10-04 01:30:54 Input={"ip":"10.0.10.121","phone":"79121111111","mbr_id":"222222"} 2021-10-04 01:30:54 Method=auth 2021-10-04 01:30:54 Response={"status":-3,"err":-9,"errmsg":"field user_id is unsupported"}
Ошибка произошла потому, что в биллинге нет действующего абонента с IP 10.0.10.121 (IP указывается в учётной записи) или номером SMS-оповещений 79121111111 (номер указывается в карточке абонента), а поиск абонента по "user_id" пока не реализован.
Ошибка "Not found services for create IPTV user" в логах /app/asr_fiscal/var/log/integrations/IntegrationIptv24htv.log
Ошибка происходит из - за того, что в биллинг не заведена услуга Создание учетной записи IPTV,в которой есть опция Создавать учетную запись и выбран NAS 24htv
Чтобы решить проблему, заведите в биллинге абонента с номером телефона или IP, по которым он должен авторизоваться.
Запрос auth только связывает абонентов 24часаТВ и биллинга, создавать их он не может: абоненты уже должны быть заведены в обеих системах с тем реквизитом, по которому Вы хотите его авторизовать, IP или номер SMS. |
Создание услуг IPTV
Время выполнения инструкции: от 5 минут, 1-2 минуты на каждую услугу, 1-2 минуты на создание шаблона сообщения |
Для подключения сервиса IPTV абоненту, рекомендуется подключить как минимум две услуги:
- Первая: создание учетной записи
В настройках услуги создания учётной записи для сервиса LifeStream нужно указать буквенный префикс логина для исключения возможного совпадения логинов в системе LifeStream. - Вторая: подключение пакетов телевидения
Услуг, подключающих пакеты ТВ может быть несколько.
|
Добавление услуги, подключающей пакеты телевидения
Создайте услугу с типом "IP телевидение" по статье документации "Услуги". Настройте в ней следующие опции:
- Вкладка "Основные". Опции:
- Вид сервиса: IPTV;
- Название: любое, соответствующее пакету TV выбранного оператора
- Вкладка "Дополнительно". Опции:
- Строка с дополнительными параметрами по активации/деактивации: ID пакета телевидения, список пакетов уточните у оператора IPTV
- Строка с дополнительными параметрами по активации/деактивации: ID пакета телевидения, список пакетов уточните у оператора IPTV
- Вкладка "Личный кабинет". Опции:
- Разрешить заказ через веб-интерфейс и Разрешить отключать через ЛК: параметры, позволяющие абоненту самостоятельно управлять подключением пакетов телевидения
- Разрешить заказ через веб-интерфейс и Разрешить отключать через ЛК: параметры, позволяющие абоненту самостоятельно управлять подключением пакетов телевидения
Добавление услуги, создающей учетную запись на портале телевидения
Создайте услугу с типом "IP телевидение" по статье документации "Услуги". Настройте в ней следующие опции:
- Вкладка "Основные". Опции:
- Вид сервиса: IPTV;
- Название: любое, например "Учетная запись IPTV"
- Бесплатный пакет IPTV: необходимая опция для работы услуги создания учетной записи:
- в схеме LifeStream услуги с этой опцией не синхронизируются как пакеты IPTV
- в схеме MEGOGO услуги с опцией не отображаются как возможные для заказа на промо-странице
- Вкладка "Дополнительно".
- Строка с дополнительными параметрами по активации/деактивации: оставьте пустыми;
- NAS: выберите NAS соответствующего IPTV сервиса
- Создавать учетную запись при подключении: включите;
- Количество учетных записей: в зависимости от специфики работы Вашего IPTV, минимум одна;
- Использовать цифровой пароль при создании учетной записи: включении этой опции не обязательно, но может быть полезно для сервисов настраиваемых на ТВ-приставках
- Вкладка "Личный кабинет". Опции:
- Разрешить заказ через веб-интерфейс: включите, чтобы абонент сам мог создать себе учетную запись;
- Разрешить отключать через ЛК: отключите, чтобы абонент случайно не создал себе множество учетных записей
Отправка сообщения абоненту о создании учетной записи
Создайте шаблон с типом сообщения "Создание учетной записи из услуги" по статье "Система отправки сообщений" как показано на изображении ниже:
Для передачи логина и пароля новой учетной записи, используйте переменные user_login и user_psw. Например:
Реквизиты учетной записи: логин %(user_login)s, пароль %(user_psw)s. Используйте их для идентификации в портале IPTV |
В настройках шаблона сообщений должна быть отключена опция "Использовать шаблонизатор django" |
Если несколько сервисов телевидения, как правильно настроить?
Если в биллинг интегрировано более 1 сервиса IPTV одновременно (например, Lifestream + IPTVPortal) - смс будет отправляться по любому событию создания учетной записи.
В этом случае абонент может получить логин и пароль от второго сервиса.
Как решить
- Добавьте в личном кабинете страницу с данными доступа к IPTV
- В СМС отправляйте текст общего характера, например: "Реквизиты учетной записи IPTV находятся в личном кабинете".