Плагины¶
Технология плагинов - это очень гибкий механизм, реализованный на платформе 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 |
Строка | Определяет тип плагина и может принимать одно из следующих значений: |
name |
Строка | Внутренний человекочитаемый идентификатор плагина, который должен быть уникальным в рамках платформы IPTV/OTT. Этот параметр должен иметь то же значение, которое определено для ключа "name" в файле "package.json". |
locales |
Набор объектов | Набор объектов, определяющих внутренние параметры, такие как название и описание плагина для различных языков локализации панели оператора. Двухбуквенные коды для языков локализации используются в соответствии со стандартом ISO 639-1. На данный момент в дашборде поддерживаются только два языка локализации ("en" и "ru"), поэтому локали, определенные для других языков, пока не будут отображаться в дашборде. |
parameters |
Набор объектов | Набор объектов, определяющих параметры плагина. Для примеров платежных плагинов используются следующие параметры:
|
instanceProps |
Набор объектов | Набор объектов, определяющих свойства плагина, которые необходимо настроить на панели оператора, когда создается экземпляр плагина. Каждый объект, т.е. свойство плагина, может иметь следующий набор параметров: |
index.js и его компиляция¶
"index.js" содержит скомпилированный JavaScript-код плагина, определяющий его назначение.
Исходный код плагина написан на TypeScript как более понятный и читаемый аналог JavaScript.
Для того чтобы получить js-файлы из кода TypeScript, его необходимо скомпилировать.
Процесс компиляции включает в себя следующие шаги:
- Установите среду выполнения Node.JS (https://nodejs.org/en/download), которая необходима для сборки кода плагинов.
- Установите менеджер пакетов Yarn (https://classic.yarnpkg.com/lang/en/docs/install/), чтобы управлять зависимостями между пакетами.
- Создайте папку для пакетов Telebreeze в вашей файловой системе. Например, [d:\telebreeze].
- Скачайте и распакуйте "Telebreeze Framework", "Telebreeze SDK" и "Telebreeze Plugins", которые являются необходимыми пакетами для любого плагина для платформы Telebreeze, в папку, созданную на предыдущем шаге. В результате в папке [d:\telebreeze] должны быть созданы три папки [framework], [sdk] и [plugins].
- Скачайте и распакуйте "Telebreeze Balance" и "Telebreeze Stripe" как образцы плагинов для Telebreeze IPTV/OTT Platform в папку, созданную на шаге 3. В результате в папке [d:\telebreeze\plugins] должны быть созданы две вложенные папки [balance] и [stripe].
- В командной строке (например, "Командная строка" или "PowerShell" для Windows) перейдите в папку [framework] и вызовите команду yarn, чтобы собрать зависимости для фреймворка.
- В командной строке перейдите в папку [sdk] и вызовите команду yarn, чтобы собрать зависимости для sdk.
- В командной строке перейдите в папку [balance] и вызовите команду yarn, чтобы собрать зависимости для плагина balance.
- В командной строке перейдите в папку [stripe] и вызовите команду yarn, чтобы собрать зависимости для плагина stripe.
- В командной строке перейдите в папку [plugins] и вызовите команду 'yarn build', чтобы собрать js-файлы для плагинов. В результате в папке, созданной на шаге 3, должна быть создана папка [dist/plugins] с двумя вложенными папками [balance] и [stripe]. Каждая из папок должна содержать js-файл(ы) с JavaScript-кодом плагинов, скомпилированным из исходных файлов TypeScript, два JSON-файла и, возможно, некоторые другие файлы, необходимые для плагина, такие как файл изображения плагина, дополнительные JS-файлы и т. д.
- Сожмите папку с названием плагина в папке [dist\plugins] в zip-файл.
- Загрузите zip-файл дистрибутива, созданный на предыдущем шаге, в соответствующий раздел панели управления оператора.
В предоставленном файле "index.ts" для плагина "Оплата внутреннего баланса" основные действия выполняются в методе PayWithBalance().
Если метод возвращает Promise.Resolve(), то операция завершена успешно.
Если метод возвращает Promise.Rejected(), то операция завершается неудачей.
Лог-сообщения сохраняются методом Logging.error() в файл "console.log", который является консольным выводом докер-контейнера.
Создание плагина¶
Для разработки нового плагина необходимо выполнить следующие действия:
- Создайте папку для нового плагина в папке [plugins] вместе с примерами плагинов.
- Скопируйте файлы образца плагина в новую папку.
- Измените значения JSON-файлов образца на желаемые.
- Перепишите код файла "index.ts".
- Соберите новый плагин с помощью команды yarn build.
- Сожмите папку с новым плагином в папке [dist\plugins] в zip-файл.
- Загрузите zip-файл с новым архивом в соответствующий раздел меню оператора. Чтобы в него попасть, в аккаунте оператора нажмите на ваше имя вверху справа.