- Заведение оборудования
- LifeStream
- Ограничение запросов к API поставщика услуг
- Lifestream v2
- Обратная интеграция с сервисом IPTV Lifestream - Smotreshka
- Решение проблем
- Тюнинг схемы Lifestream
- Создание услуг IPTV
- Добавление услуги, подключающей пакеты телевидения
- Добавление услуги, создающей учетную запись на портале телевидения
- Отправка сообщения абоненту о создании учетной записи
Заведение оборудования
![]() | Время выполнения инструкции: до 5 минут |
Для настройки IPTV нужно:
Шаг 1. Создать сервер IPTV в разделе оборудования, вкладка IPTV
![]() | IP-адрес - любой, например 1.1.1.1 IP важен только для [Ministra] |
Примечание: Стандартная схема OSS зависит от IPTV портала. В данном случае схема выбрана для TITV!
Шаг 2. На вкладке Дополнительно ставим опцию "Передавать пароль в скрипт событий"
Шаг 3. Переходим в управление и нажимаем Сохранить где указан каталог управления. Затем В "шаг 1 Инициализация" выполняем все кнопки последовательно
Шаг 4. Переходим на вкладку Настройка и обновляем список файлов
Шаг 5. В main.ini прописываем данные для вашего IPTV
LifeStream
Для LifeStream в файле main.ini необходимо указать *url* в формате:
XXXXXX.proxy.lfstrm.tv
![]() | Т.к. на стороне биллинга указывается только url без логина и пароля, необходимо добавить ip адрес биллинга в список разрешенных ip адресов на стороне Lifestream. Для этого обратитесь в техподдержку Lifestream и сообщите им ip адрес биллинга с которого будут приходить запросы на Lifestream |
После этого обязательно нужно нажать кнопку "Сохранить" сразу под полем, в которое вносились изменения.
Ограничение запросов к API поставщика услуг
В файле main.ini необходимо добавить параметр sync_minutes (по умолчанию значение параметра равно 60, единица измерения - 1 минута). Данный параметр задает период ожидания между синхронизациями IPTV OSS, другими словами, регулирует частоту отправки API-запросов на портал поставщика. У некоторых поставщиков услуг IPTV есть ограничение на кол-во API-запросов к их серверу. Чтобы не выходить за рамки данных ограничений, рекомендуется увеличить параметр sync_minutes таким образом, чтобы период ожидания увеличился с 60 минут до 24 часов или 7 суток. После этого необходимо перезапустить обработчик синхронизаций:
chroot /app/asr_billing service oss restart
![]() | Параметр sync_minutes работает только в схеме Lifestream v2 |
Lifestream v2
Актуальной версией для настройки взаимодействия биллинга и сервиса IPTV является схема Lifestream v2. По ней проводятся доработки и, в случае необходимости, могут быть добавлены исправления.
![]() | При работе схемы Lifestream v2 управление пакетами услуг абонентов со стороны биллинга осуществляется только по username. |
На текущий момент переход на вторую версию схемы взаимодействия необходимо выполнять по следующему алгоритму:
1) Зайти в контейнер биллинга с помощью команды chroot /app/asr_billing/
2) Сохранить содержимое файла /var/oss/core/LifeStream/main.ini в блокнот или в каталог с временным файлами
3) Удалить файлы из папки /var/oss/core/LifeStream/
4) В настроках NAS, в поле "Версия OSS схемы" указать 2
5) Выполнить шаг 3, шаг 4, шаг 5 инструкции, (данные для заполнения файла main.ini возьмите из файла, сохраненного в пункте 2)
Обратная интеграция с сервисом IPTV Lifestream - Smotreshka
![]() | Перед тем, как приступить к обратной интеграции с сервисом, обязательно проверьте, что при ручном включении/отключении пакетов на биллинге, команды уходят на портал lifestream и корректно обрабатываются. |
Принцип работы
Взаимодействие между биллингом и IPTV сервисом выполняется с использованием запросов от сервера IPTV к биллингу на обработчик integration_lifestream.php
Для работы в таком режиме требуется выполнить следующие действия:
1) Указать в разделе "Платежные системы" - "Настройка сети" ip-адреса IPTV-портала для добавления в "белый"("разрешенный") список. Пример заполнения.
2) Предоставить адрес расположения обработчика технической службе портала lifestream.
http://ip сервера биллинга:1444/integration_lifestream.php
https://ip сервера биллинга:1443/integration_lifestream.php https://ip сервера биллинга:2443/integration_lifestream.php
3) В настройках пакетных услуг IPTV в биллинге необходимо поставить опцию Базовый пакет у тех услуг, которые на портале lifestream значатся как Базовые. Для этого необходимо перейти на вкладку "Тарификация - услуги/бонусы - IP телевидение" и выбрать нужную услугу. Сама опция находится в услуге в разделе "Дополнительно"
Подробное описание работы опций "Базовый пакет" представлено здесь
Описание методов взаимодействия
Для обработчика integration_lifestream.php доступно 2 метода:
1) integration_lifestream.php/upsale/v1/
- Биллинг по параметру offerId из POST запроса, пришедшего на биллинг, ищет услугу в биллинге, которая привязана к NAS lifestream и имеет в поле "Дополнительный параметр активации" значение, которое равно offerId
- Биллинг по параметру login из POST запроса, пришедшего на биллинг, ищет абонента, у которого создана учетная запись с таким же логином
- Биллинг проверяет, подключена ли такая услуга уже абоненту. Если услуга уже подключена - новую биллинг не подключает.
- Если услуга для подключения является базовым пакетом, а у абонента уже есть подключенный базовый пакет - биллинг сможет подключить новую услугу и отключить старую только в том случае, если новый(подключаемый) базовый пакет стоит дороже уже текущего. Метод используется только для upsale. Подключение обычных (не базовых) пакетов проводится без этой проверки.
- Биллинг проверяет, хватит ли средств на подключение новой услуги. Если средств не хватит - услуга не будет подключена.
- Если все условия удовлетворены - подключается услуга абоненту с примечанием "IPTV Lifestream API"
2) integration_lifestream.php/upsale/v2/
- Для данного метода логика работа аналогична, но при этом доступно подключение услуги с триальным периодом в том случае, если в POST запросе придет следующий параметр:
"trialDuration": { "days": 14, "hours": 0, "minutes": 0 }
- Для триального периода логика будет следующей: Биллинг подключит абоненту услугу со 100% скидкой и примечанием "IPTV Lifestream API TRIAL", так же будет создана запланированная задача у абонента, которая будет выполнена через указанное количество дней, часов, минут. Данная задача сменит подключенную услугу со 100% скидкой на такую же услугу но уже без скидки.
Отладка
Информация по поступившым запросам на обработчик ведется в логе:
/app/asr_fiscal/var/log/integrations/IntegrationIptvLifestream.log
Решение проблем
Проверка взаимодействия со Смотрёшкой по логину учётной записи
Для того, чтобы проверить работает ли сейчас взаимодействие с Lifestream по логину, Вы можете выполнить следующие действия на стороне Carbon BIlling 5, где XXXX.proxy.lfstrm.tv - Ваш url а login_test - логин одного из абонентов на стороне Lifestream :
chroot /app/asr_billing/
curl -X GET -H 'Content-Type: application/json' --url 'https://XXXX.proxy.lfstrm.tv/v2/accounts/login_test'
Если взаимодействие по логину действительно влючено - Вы получите примерно следующий ответ:
{"info": {}, "id": "5670XXXXXXXXXX000070", "city": "", "email": "test@gmail.com", "username": "login_test", "created": "2015-12-16 01:46:35.019000+03:00", "updated": "2016-09-02 13:05:35.902000+03:00", "is_blocked": false, "subscriptions": []}
Если абонента найти не получается, значит взаимодействие сейчас настроено не по логину и Вы получите следующее сообщение:
{"error": "HTTP 404: Not Found"}
Если при обращении Вы получаете ошибку 403, значит, скорее всего на стороне Lifestream не разрешен доступ с ip адреса Вашего биллинга:
{"error": "HTTP 403: Forbidden"}
Ошибки при синхронизации
Ошибка в конфигурационном файле
Текст ошибки из лога отправки команд по учётной записи абонента:
ConfigParser.ParsingError: File contains parsing errors: <???> [line 5]: 'ignore_username_difference' Sentry is attempting to send 1 pending error messages
В данном случае неверно указан параметр ignore_username_difference в конфигурационном NAS при тюнинге схемы. Для решения проблемы обратитесь к соответствующему разделу статьи.
Ошибка при синхронизации абонентов по ID при использовании в работе схемы v1.
2020-11-05 11:13:14,949 - worker - commands - INFO - В изначальной выборке из портала не было пользователя с email=хххххххххх@gmail.com 2020-11-05 11:13:14,956 - worker - lifestream_sync - ERROR - Произошла ошибка Traceback (most recent call last): File "/mnt/var/oss/core/Smotreshka/init.d/lifestream_sync", line 162, in <module> iptv_portal.compare_users() ........................................ File "/mnt/var/oss/core/Smotreshka/lib/lifestream_package/commands.py", line 79, in _get_uniq_id self.logger.debug(u'_get_uniq_id portal_id={}'.format(portal_user['id'])) TypeError: 'NoneType' object has no attribute '__getitem__'
Для решения данной проблемы, рекомендуем выполнить смену схемы взаимодействия биллинга и портала на версию v2
И выполнить повторную синхронизацию.
Ошибка при создании учетной записи в биллинге по API со стороны IPTV-сервиса.
2021-11-02 17:17:35,571 - worker - commands - ERROR - На портале нет пользователя с login=ddd571 error=HTTP 404: Not Found 2021-11-02 17:17:35,571 - worker - commands - INFO - Command sending — user_add 2021-11-02 17:17:35,802 - worker - commands - INFO - Запрос не принят сервером: Результат отправки запроса: ... result.request.body={"username": "ddd571", "password": "test", "email": null} result.status_code=400 result.content={"error": "None is not of type 'string'"}
Ошибка возникла из-за незаполненного поля email в картоке абонента "Контактная информация". Требуется указать корректный email в биллинге и на портале IPTV.
Возможны другие варианты описания ошибки, в зависимости от ситуации:
Условие | Ошибка |
---|---|
Если не передавать email | {"error": "'email' is a required property"} |
Если передавать email null | {"error": "None is not of type 'string'"} |
Если передавать email пустая строка | {"error": "'' is not a 'email'"} |
Тюнинг схемы Lifestream
В зависимости от настроек указанных в main.ini в API-запросы отправляемые на портал по конкретной учетной записи могут подставляться (Для версии v1) ID или username (для версии v2) - в первом случае это может не работать если на стороне Смотрешки включена работа с API по username, во втором могут возникать определённые ошибки если логин в Lifestream и биллинге отличаются. Для того чтобы исключить какие-либо проблемы синхронизации, можно попробовать использовать следующие настройки:
- use_login_as_api_id - отправка команд по login (биллинг): логины в биллинге и на Lifestream должны совпадать, иначе не будет происходить актуализация данных абонента на портале, а так же не будут управляться подписки ТВ.
- use_username_as_api_id - синхронизация по username (Lifestream): для синхронизации используется логин учетной записи в Lifestream (username), получаемый через загрузку полного списка учетных записей на Lifestream, сопоставление пользователей в биллинге и Lifestream происходит по "Email для оповещений" контактной информации в карточке абонента
- ignore_username_difference - при синхронизации, которая выполняется раз в 10 минут, не проверять совпадение логина в биллинге и логина в Lifestream (username), и не пытаться изменить его на портале IPTV если в биллинге и портале логины не сопадают
Если все они не заданы или установлены в "0", то для отправки команд на Lifestream используется ID (например, 5b067984eea9ae0c00898XXX), сопоставление абонентов в биллинге и на портале так же происходит по "Email для оповещений"
В зависимости от того используется ли Смотрешка к моменту интеграции с биллингом или нет, используемых логинов для учетных записей интернет в биллинге и названий логинов на Смотрёшке, Вам могут пригодиться следующие сценарии настройки схемы.
Пример 1.
Логин в учетной записи Carbon BIlling и логин в учетной записи Lifestream совпадают у всех абонентов. Необходимо синхронизировать абонентов по логину в биллинге.
Для этого необходимо зайти в файл main.ini в настройках IPTV NAS'a и добавить строку
use_login_as_api_id=1
Пример 2.
Логин в учетной записи Carbon BIlling и логин в учетной записи Lifestream НЕ совпадают у всех или у части абонентов. Необходимо синхронизировать абонентов по логину учетной записи в Lifestream (username). При этом сопоставление логинов будет проходить по email адресу.(При такой настройке биллинг будет отправлять сообщение на почту администратора о том, что есть учетные записи с несовпадением логинов, так же будет создаваться автоматическая заявка).
Для этого необходимо зайти в файл main.ini в настройках IPTV NAS'a и добавить строку
use_username_as_api_id=1
Пример 3.
Логин в учетной записи Carbon BIlling и логин в учетной записи Lifestream НЕ совпадают у всех или у части абонентов. Необходимо синхронизировать абонентов по логину учетной записи в Lifestream (username). При этом сопоставление логинов будет проходить по email адресу. (При такой настройке НЕ будет отправлять сообщение на почту администратора о том, что есть учетные записи с несовпадением логинов, автоматическая заявка создаваться не будет).
Для этого необходимо зайти в файл main.ini в настройках IPTV NAS'a и добавить строки
use_username_as_api_id=1 ignore_username_difference=1
Создание услуг 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 находятся в личном кабинете".
Комментарии (1)
июл 17, 2018
Технический писатель говорит:
Понять как должна проходить синхронизация можно последовательно выполнив запрос ...Понять как должна проходить синхронизация можно последовательно выполнив запрос списка подписок абонента в командной строке по всем трем возможным вариантам:
curl -XGET http://provider.proxy.lfstrm.tv/v2/accounts/5b067984eea9ae0c00898XXX/subscriptions
curl -XGET http://provider.proxy.lfstrm.tv/v2/accounts/testmail@example.com/subscriptions
curl -XGET http://provider.proxy.lfstrm.tv/v2/accounts/0200111/subscriptions
Если возвращается ошибка, выбранный метод неправильный:
Если возвращается список с id подписок (либо пустой список), то метод выбран правильный:
Если все три вернули ошибку - вероятно, абонента нет на портале.