Работа со сниппетами
Сниппеты: Расширение функциональности с помощью JavaScript
Сниппет — это встроенный в платформу инструмент, позволяющий выполнять произвольный код на языке JavaScript в ответ на действия пользователя. Этот мощный механизм реакции предназначен для реализации сложной бизнес-логики и интеграции со сторонними сервисами.
Ключевые возможности
С помощью сниппетов вы можете:
Взаимодействовать с внешними API: Отправлять запросы на сторонние серверы для получения или отправки данных (например, для проверки статуса заказа, получения информации о погоде и т.д.).
Генерировать динамические ответы: Формировать ответы пользователю на основе данных из контекста диалога, результатов вычислений или информации, полученной из внешних систем.
Реализовывать кастомную бизнес-логику: Выполнять сложные вычисления, валидацию данных, форматирование и любые другие операции, необходимые для вашего сценария.
Ограничения и рекомендации по использованию
Для обеспечения стабильности и производительности платформы на сниппеты наложены следующие ограничения:
Память: Объём оперативной памяти, доступной для одного сниппета, ограничен 128 МБ.
Время выполнения: Максимальное время выполнения одного сниппета составляет 5 секунд.
Создание и интеграция в сценарий
Создание сниппета
Перейдите в раздел «Сниппеты» в левом боковом меню.
Нажмите кнопку «+ Добавить».
В рабочей области появится шаблон асинхронной JavaScript-функции. Вся ваша логика должна быть реализована внутри этой функции.
Интеграция в сценарий
Сниппет добавляется в сценарий как один из видов реакции.
В нужном блоке сценария добавьте реакцию типа «Сниппет».
При нажатии на блок справа откроется панель, где вы сможете выбрать один из ранее созданных сниппетов.
Обработка ошибок: Активируйте чекбокс «Ошибка», чтобы у блока появилась дополнительная ветка (Fail). Крайне рекомендуется использовать эту ветку для обработки потенциальных сбоев:
Некорректные данные от пользователя.
Сетевые ошибки при выполнении HTTP-запросов.
Превышение таймаута выполнения.
Важно: В случае ошибки и перехода в ветку «Fail», любые факты, установленные в сниппете, не сохраняются в контексте, а сгенерированные реакции не будут отправлены пользователю.
Встроенные инструменты
Библиотеки
Для вашего удобства в окружение сниппетов предустановлены популярные JS-библиотеки:
moment.js
request
axios
Готовые шаблоны
Мы подготовили шаблоны с часто используемыми методами, которые можно перетаскивать прямо в редактор кода. Шаблоны сгруппированы по категориям:
Методы запросов: GET/POST request, axios.
Работа с контекстом:
get fact
,set fact
,current event
,events history
.Прочие методы: Функции для генерации различных реакций (текст, кнопки и т.д.).
Тестирование и отладка
Быстрое тестирование
Для проверки базовой логики сниппета вне сценария используйте кнопку «Run» под редактором кода. Результат выполнения будет отображаться в консоли.
Тестирование с контекстом
Если ваш сниппет использует данные из контекста (например, lastMessage
или факты, полученные из API), его запуск вне сценария вызовет ошибку, так как контекст будет отсутствовать.
Для полноценного тестирования таких сниппетов необходимо вручную симулировать контекст:
Под тестовым чатом найдите поле «Add global facts».
Задайте необходимые факты в формате JSON-объекта.
После этого можно запускать сниппет — он получит доступ к заданным данным.
Важно: После завершения тестирования не забудьте очистить поле «Add global facts», оставив в нём пустой объект {}
Last updated