Skip to content

Плагины

Технология плагинов - это очень гибкий механизм, реализованный на платформе Telebreeze, который позволяет расширять функционал видеоплатформы без необходимости модификации ее основного кода.
Плагины могут использоваться для интеграции со следующими типами внешних сервисов:

  • подготовка контента (транскодеры для прямой трансляции и VOD), доставка контента и серверы защиты контента;
  • платежные шлюзы (Stripe, Orange Mone и т.д.) и биллинговые системы;
  • серверы и сервисы уведомлений (SMTP, SMS, Push и другие);
  • серверы фильтрации по Geo IP;
  • серверы метаданных для описания контента (TMDB, OMDB, IMDB и подобные);
  • сервисы авторизации (SSO-серверы, социальные сети и другие);
  • контент-провайдеры (сторонние системы, которые имеют API для обмена контентом);
  • услуги EPG (поставщики электронных программных гидов для телеканалов).

Базовый состав плагина

Базовый плагин представляет собой zip-архив с набором файлов:

  • package.json
  • config.json
  • index.js

В зависимости от функции плагина в него могут быть включены и другие файлы. Например, дополнительный файл кода или файл изображения с логотипом внешней платежной системы, который должен отображаться в приложениях конечного пользователя.

package.json

"package.json" описывает общую информацию о плагине в JSON-формате в соответствии с пакетом Node.JS и имеет следующие основные параметры:

Ключевое имя Тип значения Описание значения
name Строка Внутренний человекочитаемый идентификатор плагина, который должен быть уникальным в пределах платформы.
type Строка "common.js" определяет тип плагина в соответствии с документацией менеджера пакетов Node.JS. Это значение должно оставаться неизменным и не должно меняться.
dependencies Объект Набор зависимостей для плагина в формате "name": "path".
private Булево значение Необязательный ключ. Если для этого параметра установлено значение "true", то доступность плагина будет определяться лицензионными ограничениями для платформы IPTV/OTT.
main Строка "index.js" Имя основного файла, содержащего код плагина на JavaScript. Это значение должно оставаться неизменным и не должно меняться.

config.json

"config.json" описывает настройку плагина в JSON-формате и имеет следующие параметры:

Ключевое имя Тип значения Описание значения
version Строка Версия плагина, назначенная разработчиком.
title Строка Внутренний параметр, определяемый в локалях и задающий заголовок плагина, который отображается в панели оператора.
description Строка Внутренний параметр, определяемый в локалях, который задает описание плагина, отображаемое в панели оператора.
type Строка Определяет тип плагина и может принимать одно из следующих значений:
  • “server”
  • “payment”
  • “notification”
  • “geoip”
  • “metadata”
  • “authorization”
  • “content”
  • “epg”
  • name Строка Внутренний человекочитаемый идентификатор плагина, который должен быть уникальным в рамках платформы IPTV/OTT. Этот параметр должен иметь то же значение, которое определено для ключа "name" в файле "package.json".
    locales Набор объектов Набор объектов, определяющих внутренние параметры, такие как название и описание плагина для различных языков локализации панели оператора. Двухбуквенные коды для языков локализации используются в соответствии со стандартом ISO 639-1. На данный момент в дашборде поддерживаются только два языка локализации ("en" и "ru"), поэтому локали, определенные для других языков, пока не будут отображаться в дашборде.
    parameters Набор объектов Набор объектов, определяющих параметры плагина. Для примеров платежных плагинов используются следующие параметры:
  • "paymentTypes" - определяет типы платежей, для которых может быть использован данный плагин. Для этого ключа допустимы только следующие значения:
    1. "balance" - пополнение внутреннего баланса абонента;
    2. "content" - покупка одного элемента контента, т.е. фильма, сериала, шоу, товара в магазине;
    3. "subscription" - приобретение подписки.
  • "type" - определяет тип взаимодействия в рамках платформы IPTV/OTT. Для ключа допускаются только следующие значения:
    1. "balance" - работает без перенаправления на внешние ресурсы, например, на внешнюю платежную систему;
    2. "external" - требует перенаправления на внешний ресурс для завершения операций.
  • "image" - путь к файлу изображения, содержащему логотип платежной системы, который будет отображаться для данного способа оплаты в приложении конечного пользователя;
  • "webHook" - булево значение, которое указывает, используются ли веб-крючки для данной платежной системы или нет.
  • instanceProps Набор объектов Набор объектов, определяющих свойства плагина, которые необходимо настроить на панели оператора, когда создается экземпляр плагина. Каждый объект, т.е. свойство плагина, может иметь следующий набор параметров:
  • "type" - тип свойства. Могут использоваться следующие типы свойств: "строка", "число", "чекбокс", "select", "multiselect";
  • "title" - название свойства, отображаемое на панели оператора;
  • "name" - внутреннее имя свойства;
  • "placeholder" - примерное значение, которое отображается в качестве подсказки на панели оператора;
  • "defaultValue" - значение, которое присваивается свойству по умолчанию;
  • "data" - массив объектов, определяющих набор значений для свойств типа "select" или "multiselect". Каждый объект массива должен иметь две пары параметров: "label" и "value", которые определяют, соответственно, отображаемые и внутренние значения для списка доступных опций.
  • index.js и его компиляция

    "index.js" содержит скомпилированный JavaScript-код плагина, определяющий его назначение.
    Исходный код плагина написан на TypeScript как более понятный и читаемый аналог JavaScript.
    Для того чтобы получить js-файлы из кода TypeScript, его необходимо скомпилировать.

    Процесс компиляции включает в себя следующие шаги:

    1. Установите среду выполнения Node.JS (https://nodejs.org/en/download), которая необходима для сборки кода плагинов.
    2. Установите менеджер пакетов Yarn (https://classic.yarnpkg.com/lang/en/docs/install/), чтобы управлять зависимостями между пакетами.
    3. Создайте папку для пакетов Telebreeze в вашей файловой системе. Например, [d:\telebreeze].
    4. Скачайте и распакуйте "Telebreeze Framework", "Telebreeze SDK" и "Telebreeze Plugins", которые являются необходимыми пакетами для любого плагина для платформы Telebreeze, в папку, созданную на предыдущем шаге. В результате в папке [d:\telebreeze] должны быть созданы три папки [framework], [sdk] и [plugins].
    5. Скачайте и распакуйте "Telebreeze Balance" и "Telebreeze Stripe" как образцы плагинов для Telebreeze IPTV/OTT Platform в папку, созданную на шаге 3. В результате в папке [d:\telebreeze\plugins] должны быть созданы две вложенные папки [balance] и [stripe].
    6. В командной строке (например, "Командная строка" или "PowerShell" для Windows) перейдите в папку [framework] и вызовите команду yarn, чтобы собрать зависимости для фреймворка.
    7. В командной строке перейдите в папку [sdk] и вызовите команду yarn, чтобы собрать зависимости для sdk.
    8. В командной строке перейдите в папку [balance] и вызовите команду yarn, чтобы собрать зависимости для плагина balance.
    9. В командной строке перейдите в папку [stripe] и вызовите команду yarn, чтобы собрать зависимости для плагина stripe.
    10. В командной строке перейдите в папку [plugins] и вызовите команду 'yarn build', чтобы собрать js-файлы для плагинов. В результате в папке, созданной на шаге 3, должна быть создана папка [dist/plugins] с двумя вложенными папками [balance] и [stripe]. Каждая из папок должна содержать js-файл(ы) с JavaScript-кодом плагинов, скомпилированным из исходных файлов TypeScript, два JSON-файла и, возможно, некоторые другие файлы, необходимые для плагина, такие как файл изображения плагина, дополнительные JS-файлы и т. д.
    11. Сожмите папку с названием плагина в папке [dist\plugins] в zip-файл.
    12. Загрузите zip-файл дистрибутива, созданный на предыдущем шаге, в соответствующий раздел панели управления оператора.

    В предоставленном файле "index.ts" для плагина "Оплата внутреннего баланса" основные действия выполняются в методе PayWithBalance().
    Если метод возвращает Promise.Resolve(), то операция завершена успешно.
    Если метод возвращает Promise.Rejected(), то операция завершается неудачей.
    Лог-сообщения сохраняются методом Logging.error() в файл "console.log", который является консольным выводом докер-контейнера.

    Создание плагина

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

    1. Создайте папку для нового плагина в папке [plugins] вместе с примерами плагинов.
    2. Скопируйте файлы образца плагина в новую папку.
    3. Измените значения JSON-файлов образца на желаемые.
    4. Перепишите код файла "index.ts".
    5. Соберите новый плагин с помощью команды yarn build.
    6. Сожмите папку с новым плагином в папке [dist\plugins] в zip-файл.
    7. Загрузите zip-файл с новым архивом в соответствующий раздел меню оператора. Чтобы в него попасть, в аккаунте оператора нажмите на ваше имя вверху справа.