Интеграция с LifeStream (Смотрёшка, Смотрешка)

Skip to end of metadata
Go to start of metadata

Заведение оборудования

Время выполнения инструкции: до 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

После этого обязательно нужно нажать кнопку "Сохранить" сразу под полем, в которое вносились изменения.

Должен быть e-mail

  1. Синхронизация абонента происходит по e-mail адресу абонента, который должен быть задан на вкладке "Информация" в разделе "Контактная информация"
  2. Если e-mail адрес абонента не заполнен, то в личном кабинете при подключении абонентом услуги, которая относится к Смотрешке, будет отображаться сообщение "Услуга не подключена, необходимо заполнить email." и услуга не подключится. Для отображения данного сообщения в личном кабинете необходимо, чтобы в настройках услуги был указан Вид сервиса: IPTV.
  3. У Смотрешки единая база учетных записей, поэтому если абонент ранее подключал Смотрешку у другого оператора связи, может возникнуть ошибка создания абонента



Обратитесь в Cмотрешку

Обратитесь в Смотрешку с просьбой разрешить работу с абонентами по логину, как правило такая схема работает более корректно

Ограничение запросов к 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 можно передавать параметр region, соответствующий одному из операторов, данный функционал используется для установки конкретного часового пояса для учетной записи абонента.

Для этого в main.ini (Оборудование > IPTV > Выбрать нужный NAS > Управление > Настройка > main.ini) соответсвтующего NAS нужно добавить строку:

region={"1": "ru.far-east.primorsky-krai.vladivostok"}
(Если необходимо указать несколько передаваемых регионов, то указываем через запятую region={"1": "Регион оператора с id=1", "2": "Регион оператора с id=2"} )

Где "1" - это id оператора связи, "ru.far-east.primorsky-krai.vladivostok" - значение параметра region.

После этого необходимо перезапустить service oss:

chroot /app/asr_billing
service oss restart

После сохранения настроек при регистрации всех абонентов, обслуживаемых оператором с id 1, на портале Lifestream будет отправлен дополнительный параметр "region": "ru.far-east.primorsky-krai.vladivostok".

Врем списания услуги

Списание услуги Lifestream происходит в 23:30 предыдущего дня. Если у абонента недостаточно средств, услуги необходимо отключить до 00:00. Это нужно, чтобы не возникла переплата за день следующий за отключением у оператора связи. Если команды на отключение уйдут после 00:00, оператор связи не спишет средства с абонента, а Lifestream спишет с оператора. Для списания в 23:30 у услуги пакет каналов должен быть выбран НАС.

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:
http://ip сервера биллинга:1444/integration_lifestream.php
Для https:
https://ip сервера биллинга:1443/integration_lifestream.php
https://ip сервера биллинга:2443/integration_lifestream.php
Дополнение:
 Базовый URL это http://ip сервера биллинга:1444/integration_lifestream.php
 Для методов необходимо использовать: 
 http://ip сервера биллинга:1444/integration_lifestream.php/upsale/v1/ или http://ip сервера биллинга:1444/integration_lifestream.php/upsale/v2/
 Для защищенного протокола https по 1443 или 2443 порту необходимо аналогично явно указывать адрес метода. 

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.
  • Вторая: подключение пакетов телевидения

Услуг, подключающих пакеты ТВ может быть несколько.

  • Услуга создания учётной записи должна быть в единственном экземпляре для каждого сервиса IPTV: одна для 24часаТВ, одна для Смотрёшки и тд
  • Если не делать отдельную услугу, создающую учетную запись IPTV, она все равно будет создана синхронизатором в течение 10 минут после подключения услуги с пакетом ТВ

Добавление услуги, подключающей пакеты телевидения

Создайте услугу с типом "IP телевидение" по статье документации "Услуги". Настройте в ней следующие опции:

  1. Вкладка "Основные". Опции:
    • Вид сервиса: IPTV;
    • Название: любое, соответствующее пакету TV выбранного оператора



  2. Вкладка "Дополнительно". Опции:
    • Строка с дополнительными параметрами по активации/деактивации: ID пакета телевидения, список пакетов уточните у оператора IPTV



  3. Вкладка "Личный кабинет". Опции:
    • Разрешить заказ через веб-интерфейс и Разрешить отключать через ЛК: параметры, позволяющие абоненту самостоятельно управлять подключением пакетов телевидения



Добавление услуги, создающей учетную запись на портале телевидения

Создайте услугу с типом "IP телевидение" по статье документации "Услуги". Настройте в ней следующие опции:

  1. Вкладка "Основные". Опции:
    • Вид сервиса: IPTV;
    • Название: любое,  например "Учетная запись IPTV"
    • Бесплатный пакет IPTV: необходимая опция для работы услуги создания учетной записи:
      • в схеме LifeStream услуги с этой опцией не синхронизируются как пакеты IPTV
      • в схеме MEGOGO услуги с опцией не отображаются как возможные для заказа на промо-странице



  2. Вкладка "Дополнительно".
    • Строка с дополнительными параметрами по активации/деактивации: оставьте пустыми;
    • NAS: выберите NAS соответствующего IPTV сервиса
    • Создавать учетную запись при подключении: включите;
    • Количество учетных записей: в зависимости от специфики работы Вашего IPTV, минимум одна;
    • Использовать цифровой пароль при создании учетной записи: включении этой опции не обязательно, но может быть полезно для сервисов настраиваемых на ТВ-приставках


  3. Вкладка "Личный кабинет". Опции:
    • Разрешить заказ через веб-интерфейс: включите, чтобы абонент сам мог создать себе учетную запись;
    • Разрешить отключать через ЛК: отключите, чтобы  абонент случайно не создал себе множество учетных записей



Отправка сообщения абоненту о создании учетной записи

Создайте шаблон с типом сообщения "Создание учетной записи из услуги" по статье "Система отправки сообщений" как показано на изображении ниже:

Для передачи логина и пароля новой учетной записи, используйте переменные user_login и user_psw. Например:
Реквизиты учетной записи: логин %(user_login)s, пароль %(user_psw)s. Используйте их для идентификации в портале IPTV

В настройках шаблона сообщений должна быть отключена опция "Использовать шаблонизатор django"


Если несколько сервисов телевидения, как правильно настроить?

Если в биллинг интегрировано более 1 сервиса IPTV одновременно (например, Lifestream + IPTVPortal) - смс будет отправляться по любому событию создания учетной записи.
В этом случае абонент может получить логин и пароль от второго сервиса.

Как решить

  1. Добавьте в личном кабинете страницу с данными доступа к IPTV
  2. В СМС отправляйте текст общего характера, например: "Реквизиты учетной записи IPTV находятся в личном кабинете".
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.
  1. июл 17, 2018

    Технический писатель говорит:

    Понять как должна проходить синхронизация можно последовательно выполнив запрос ...

    Понять как должна проходить синхронизация можно последовательно выполнив запрос списка подписок абонента в командной строке по всем трем возможным вариантам:

    • Синхронизация по ID
      curl -XGET http://provider.proxy.lfstrm.tv/v2/accounts/5b067984eea9ae0c00898XXX/subscriptions
    • Синхронизация по email
      curl -XGET http://provider.proxy.lfstrm.tv/v2/accounts/testmail@example.com/subscriptions
    • Синхронизация по username
      curl -XGET http://provider.proxy.lfstrm.tv/v2/accounts/0200111/subscriptions

    Если возвращается ошибка, выбранный метод неправильный:

    {"error": "not found"}

    Если возвращается список с id подписок (либо пустой список), то метод выбран правильный:

    [{"id": "150"}]

    Если все три вернули ошибку - вероятно, абонента нет на портале.