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














