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

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (19)

просмотр истории страницы
{toc:maxLevel=23}
{include:CarbonBilling:Добавление NAS IPTV}


{info}
Т.к. на стороне биллинга указывается только url без логина и пароля, необходимо добавить ip адрес биллинга в список разрешенных ip адресов на стороне Lifestream.
Для этого обратитесь в техподдержку Lifestream и сообщите им ip адрес биллинга с которого будут приходить запросы на Lifestream
{info}
После этого обязательно нужно нажать кнопку "Сохранить" сразу под полем, в которое вносились изменения.

{note}

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

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

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

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

h2. Ограничение запросов к API поставщика услуг

{code}

{info} {note}
Параметр *sync_minutes* работает только в схеме Lifestream v2
{info}

{note}

h3. Должен быть e-mail
h2. Передавать параметр региона (для подключения абонентов с разным часовы поясом)

# Синхронизация абонента происходит по e-mail адресу абонента, который должен быть задан на вкладке "Информация" в разделе "Контактная информация"
# Если e-mail адрес абонента не заполнен, то в личном кабинете при подключении абонентом услуги, которая относится к Смотрешке, будет отображаться сообщение "Услуга не подключена, необходимо заполнить email." и услуга не подключится.
# У Смотрешки единая база учетных записей, поэтому если абонент ранее подключал Смотрешку у другого оператора связи, может возникнуть ошибка создания абонента
\\
\\ !email.png|border=1!\\
\\
При регистрации пользователя на портале Lifestream можно передавать параметр region, соответствующий одному из операторов, данный функционал используется для установки конкретного часового пояса для учетной записи абонента.

h3. Обратитесь в Cмотрешку
Для этого в main.ini (Оборудование > IPTV > Выбрать нужный NAS > Управление > Настройка > main.ini) соответсвтующего NAS нужно добавить строку:
{code}
region={"1": "ru.far-east.primorsky-krai.vladivostok"}
(Если необходимо указать несколько передаваемых регионов, то указываем через запятую region={"1": "Регион оператора с id=1", "2": "Регион оператора с id=2"} )
{code}
Где "1" - это id оператора связи, "ru.far-east.primorsky-krai.vladivostok" - значение параметра region.
!lvstr3.png|border=1,width=1100pxpx!

Обратитесь в Смотрешку с просьбой разрешить работу с абонентами по логину, как правило такая схема работает более корректно
После этого необходимо перезапустить service oss:
{code}
chroot /app/asr_billing
service oss restart
{code}

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

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

Списание услуги Lifestream происходит в 23:30 предыдущего дня. Если у абонента недостаточно средств, услуги необходимо отключить до 00:00. Это нужно, чтобы не возникла переплата за день следующий за отключением у оператора связи. Если команды на отключение уйдут после 00:00, оператор связи не спишет средства с абонента, а Lifestream спишет с оператора.
Для списания в 23:30 у услуги пакет каналов должен быть выбран [НАС|Услуги#Вкладка "Дополнительно"]. При выборе NAS с типом *Lifestream* в услуге будет установлено значение опции *Сдвиг начала списания, мин на* -150. Это значит что услуга будет списана в 23:30 предыдущего дня. Подробнее по работе услуги можно прочесть в [статье|Услуги#Дополнительные настройки]. Если вы хотите чтобы списание проходили в [стандартного времени 02:00|Вопросы одной строкой.#Почему списания происходят ночью и это не настраивается?], укажите в опции значение *0*.
{note}
При смене NAS в услуге значение вернётся на стандартное - то есть без сдвига.
{note}

h2. Lifestream v2

Актуальной версией для настройки взаимодействия биллинга и сервиса IPTV является схема Lifestream v2. По ней проводятся доработки и, в случае необходимости, могут быть добавлены исправления.
{note}
При работе схемы Lifestream v2 управление пакетами услуг абонентов со стороны биллинга осуществляется только по username.
{note}
На текущий момент переход на вторую версию схемы взаимодействия необходимо выполнять по следующему алгоритму:

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 [инструкции,|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=53313591#ИнтеграциясLifeStream(Смотрёшка%2CСмотрешка)-Заведениеоборудования] (данные для заполнения файла main.ini возьмите из файла, сохраненного в пункте 2)

h2. Обратная интеграция с сервисом IPTV Lifestream - Smotreshka
{info}
Перед тем, как приступить к обратной интеграции с сервисом, обязательно проверьте, что при ручном включении/отключении пакетов на биллинге, команды уходят на портал lifestream и корректно обрабатываются.
{info}
h3. Принцип работы

Взаимодействие между биллингом и IPTV сервисом выполняется с использованием запросов от сервера IPTV к биллингу на обработчик _integration_lifestream.php_

Для работы в таком режиме требуется выполнить следующие действия:

1) Указать в разделе *"Платежные системы"* - *"Настройка сети"* ip-адреса IPTV-портала для добавления в "белый"("разрешенный") список. [Пример заполнения.|CarbonBilling:Настройка сети для платежных систем]
2) Предоставить адрес расположения обработчика технической службе портала lifestream.


{code:title=Для http:}http://ip сервера биллинга:1444/integration_lifestream.php{code}

{code:title=Для https:}
https://ip сервера биллинга:1443/integration_lifestream.php
https://ip сервера биллинга:2443/integration_lifestream.php{code}

{code:title=Дополнение:}
Базовый 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 порту необходимо аналогично явно указывать адрес метода.
{code}
3) В настройках пакетных услуг IPTV в биллинге необходимо поставить опцию *Базовый пакет* у тех услуг, которые на портале lifestream значатся как *Базовые*. Для этого необходимо перейти на вкладку "Тарификация - услуги/бонусы - IP телевидение" и выбрать нужную услугу. Сама опция находится в услуге в разделе *"Дополнительно"*


Подробное описание работы опций *"Базовый пакет"* представлено [здесь |https://docs.carbonsoft.ru/pages/viewpage.action?pageId=50660430]
----
h3. Описание методов взаимодействия

Для обработчика 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 запросе придет следующий параметр:
{code}"trialDuration":
{
"days": 14,
"hours": 0,
"minutes": 0
}{code}
* Для триального периода логика будет следующей: Биллинг подключит абоненту услугу со 100% скидкой и примечанием "IPTV Lifestream API TRIAL", так же будет создана запланированная задача у абонента, которая будет выполнена через указанное количество дней, часов, минут. Данная задача сменит подключенную услугу со 100% скидкой на такую же услугу но уже без скидки.

h3. Отладка

Информация по поступившым запросам на обработчик ведется в логе:

{{/app/asr_fiscal/var/log/integrations/IntegrationIptvLifestream.log}}


h2. Решение проблем

h3. Проверка взаимодействия со Смотрёшкой по логину учётной записи

Для того, чтобы проверить работает ли сейчас взаимодействие с Lifestream по логину, Вы можете выполнить следующие действия на стороне Carbon BIlling 5, где *XXXX.proxy.lfstrm.tv* - \- Ваш url а *login_test* - \- логин одного из абонентов на стороне Lifestream :
{code}
chroot /app/asr_billing/
{code}

h3. Ошибки при синхронизации

h6. Ошибка в конфигурационном файле

Текст ошибки из лога отправки команд по учётной записи абонента:
{code}
ConfigParser.ParsingError: File contains parsing errors: <???>
[line 5]: 'ignore_username_difference'
Sentry is attempting to send 1 pending error messages
{code}
В данном случае неверно указан параметр *ignore_username_difference* в конфигурационном NAS при тюнинге схемы. Для решения проблемы обратитесь к соответствующему [разделу статьи|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=53313591#ИнтеграциясLifeStream(Смотрёшка%2CСмотрешка)-ТюнингсхемыLifestream].

h6. Ошибка при синхронизации абонентов по ID при использовании в работе схемы v1.

{code}
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__'
{code}
Для решения данной проблемы, рекомендуем выполнить смену схемы взаимодействия биллинга и портала на [версию v2|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=53313591#ИнтеграциясLifeStream(Смотрёшка%2CСмотрешка)-Lifestreamv2]
И выполнить повторную синхронизацию.
h6. Ошибка при создании учетной записи в биллинге по API со стороны IPTV-сервиса.
{code}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'"}{code}
Ошибка возникла из-за незаполненного поля 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'"\}|


h2. Тюнинг схемы Lifestream

В зависимости от настроек указанных в *main.ini* в API-запросы отправляемые на портал по конкретной учетной записи могут подставляется её подставляться (Для версии v1) *ID* или *username* \- (для версии v2) - в первом случае это может не работать если на стороне Смотрешки включена работа с API по username, во втором могут возникать определённые ошибки если логин в Lifestream и биллинге отличаются. Для того чтобы исключить какие-либо проблемы синхронизации, можно попробовать использовать следующие настройки:

* *use_login_as_api_id* \- отправка команд по *login* (биллинг): логины в биллинге и на Lifestream должны совпадать, иначе не будет происходить актуализация данных абонента на портале, а так же не будут управляться подписки ТВ.