Плагины
Инструкция пользователя
Плагины Metabot — это JavaScript библиотеки, скрипты которых доступны для повторного использования в различных скриптах ботов.
Существует два вида плагинов:
- Плагины бизнеса — это собственные JavaScript библиотеки, созданные вами и доступные в любом боте вашего бизнеса. Другим бизнесам эти библиотеки не доступны;
- Общие (предопределенные) плагины — это JavaScript библиотеки доступные в любом бизнесе, любого бота. Разработкой таких библиотек занимается команда Metabot.
Другими словами, вы можете создать свои собственные JavaScript библиотеки или использовать предопределенные, готовые библиотеки.
Список общих плагинов
Наименование | Подключение | Пример | Дополнительно |
moment | require() | let moment = require('moment') | |
moment-with-locales |
require() | let moment = require('moment-with-locales') |
Это OpenSource библиотека для работы с датами, https://momentjs.com/ Версия библиотеки moment.js: 2.29.3 |
Common.Bot.Commands |
require() | snippet() | require('Common.Bot.Commands') | snippet('Common.Bot.Commands') |
Если для вашей ситуации доступно подключение через require – то это более предпочтительный с точки зрения производительности вариант, используйте именно его. Если подключение с помощью require() недоступно или не приемлемо, то используйте подключение через snippet().
На данный момент подключение собственных библиотек бизнеса доступно только через snippet().
Интерфейс и логика настройки плагинов
- Плагины — в данном разделе настраивается общее описание библиотеки и пространство имен для скриптов вложенных в плагин. Название плагина похоже на название директории в которой хранится ваша библиотека;
- Скрипты плагинов — это сами скрипты которые вы можете использовать в своих ботах. Название соответствует названию файла к которому вы обращаетесь.
- Уровень доступа (Common или Business);
- Название плагина;
- Название скрипта плагина.
При подключении библиотеки «составляющие» разделяются точкой, а при обращении к методам библиотеки из JS «составляющие клеятся» вместе, т.е. пишутся слитно, без точки.
Сниппеты
Перед тем как разобрать пример использования собственного плагина, необходимо понять принцип действий сниппетов. Работа сниппетов аналогична макросам, т.е. это просто текст, который подставляется вместо указанного макроса.
Доступны два варианта подключения сниппета:
snippet("your_snippet_name")
или
[[:your_snippet_name:]]
let text = snippet("mysnippet");
"Hello World!"
let text = "Hello World!"
"Hello World!";
let text = "Hello World!";
Сниппет идентичен макроподстановке. Макроподстановка выполняется до запуска скрипта и не является командой интерпретатора JavaScript, поэтому если вы закомментируете объявление сниппета, то он все равно будет подставлен в исходный код ! Чтобы закомментировать сниппет нужно закомментировать его и нарушить синтаксис его объявления, чтобы система не нашла макрос со сниппетом и не выполнила макроподстановку, например написать: s!nippet("your_snippet_name").
Пример №1: Общий плагин (скрипт общего плагина)
Полное имя библиотеки «клеится» из трех составляющих:
- Общий плагин (Common);
- Название плагина «Bot»;
- Скрипт «Commands».
Подключается такая библиотеки с помощью кода:
require('Common.Bot.Commands');
После подключения, в JavaScript автоматически будет доступна переменная CommonBotCommands.
К методам CommonBotCommands можно обращаться, например для отправки сообщения в мессенджер из JavaScript:
CommonBotCommands.SendText('Текст отправленный из V8');
Полный список команд каждой библиотеки выходит за рамки данной документации и может постоянно дополняться.
В данном примере речь идет именно об общей библиотеке (Common), внутри которой уже описан специальный объект, который можно использовать с помощью методов, чтобы добиться такого же варианта использования вы должны самостоятельно описать свой объект на JavaScript. Оформление в виде JavaScript обьекта при создании вашего собственного плагана бизнеса не является обязательным, за счет того что ваши скрипты будут подключаться в виде сниппетов. Вы можете просто описать любые переменные и функции в вашей библиотеке и обращаться к ним по имени.
Для библиотек уровня бизнеса автоматически создаваемые переменные-объекты не доступны (или доступны только в тех библиотеках которые для вас создаст команда Metabot).
Отметим, что существуют другие библиотеки, например, такие как moment.js. Подключение и использование таких библиотек отличается от использования библиотек созданных на платформе. Например, для moment.js, не нужно указывать три «состявляющие» названия скрипта (уровень доступа, плагин и скрипт). Для moment.js мы явно объявляем переменную и «экспортируем в нее библиотеку»:
let moment = require('moment');
Подключение различных библиотек может отличаться и зависит от реализации самой библиотеки. Но, в основном как подключать и будет ли доступна автоматически переменная-объект понятно из названия библиотеки (если при подключении нет указания уровня доступа, то скорее всего это OpenSource библиотека).
Если вы подключаете к одному скрипту несколько сниппетов, то переменные обьявленые внутри каждого из сниппетов не должны пересекаться между собой по имени, а также переменные объявленные в сниппете и вашем скрипте, к которому вы подключаете сниппет не должны пересекаться.
Пример №2: Плагин бизнеса (скрипт вашего плагина)
Создадим новый плагин для формирования текста, который мы будет отправлять пользователю с помощью атрибутов бота.
Заполним все необходимые поля.
Далее, перейдем в скрипты плагина.
И создадим новый скрипт.
Заполним в открывшемся окне необходимые поля.
const greetMsg = 'Привет, ' + lead.getData('name') + '!';
memory.setAttr("greet", greetMsg);
Здесь мы сохраняем текст приветствия в memory (временном атрибуте бота).
Полное имя библиотеки «клеится» из трех составляющих:
- Плагин бизнеса (Business);
- Название плагина «Notifications»;
- Скрипт «HelloLead».
Подключается с помощью кода:
snippet('Business.Notifications.HelloLead');
- Выполнить JavaScript — здесь мы подключаем сниппет, для заполнения атрибута(макропеременной) во временной памяти бота:
snippet('Business.Notifications.HelloLead');
- Отправить текст — в содержимом использована макропеременная, текст который будет отправлен в
мессенджер:
{{ &$greet }}
Результат работы скрипта в телеграм:
Пример №3: Использование общего плагина в плагине бизнеса
Модифицируем пример 2 так, чтобы текст отправлялся не с помощью команды Отправить текст, а прям из JS кода плагина.
require('Common.Bot.Commands');
const greetMsg = 'Привет, ' + lead.getData('name') + '!';
CommonBotCommands.sendText(greetMsg);
Удалим команду Отправить текст, команду Выполнить JavaScript оставляем без изменений.
Результат работы данного скрипта будет идентичным примеру 2:
Нет комментариев