Comment on page

Работа со сниппетами

Сниппет — один из видов реакций Лии, который позволяет в ответ на сообщение пользователя выполнить код на JavaScript.
С помощью сниппетов можно:
  • взаимодействовать с внешним API,
  • генерировать динамические ответы на основе информации из контекста,
  • реализовывать любую бизнес-логику
У сниппетов есть ограничения:
  • по памяти — 128 мб,
  • по времени выполнения — 5 сек

Создание сниппетов

Чтобы создать сниппет, надо зайти в левом боковом меню в раздел →
и нажать кнопку «+ Добавить».
В центральной части платформы появится сниппет-шаблон, который представляет собой асинхронную js-функцию. Вся логика сниппета прописывается внутри этого шаблона.

Сниппеты в сценарии

Сниппет добавляется в сценарий в качестве реакции на триггер от пользователя. Рассмотрим пример сценария со сниппетом в качестве реакции на намерение.
При нажатии на блок сниппета справа появится возможность выбора сниппета из ранее созданных:
Если выбрать чекбокс «Ошибка», то у блока появится ветвление в сценарии. Это удобно использовать для обработки ошибки исполнения сниппета.
В случае ошибки выполнения сниппета (переход в ветку Fail) факты контекста, установленные в данном сниппете, не сохраняются. Любые события (реакции), генерируемые внутри сниппета, не отправляются.
Поэтому если вы не уверены на 100% в том, что сниппет завершится корректно (все данные от пользователя получены верно, http-запрос пройдёт и не отвалится по тайм-ауту и т. д.) рекомендуется использовать ветку «Fail» для дальнейших действий в случае ошибки.

Встроенные библиотеки и методы

Сниппеты в Лии поддерживают следующие js-библиотеки:
Мы сделали готовые шаблоны с часто используемыми методами, которые можно перетягивать в код сниппета.
Есть методы запросов: GET request, POST request, axios, request;
методы работы с контекстом: get fact, set fact, current event, events history;
остальные методы — функции, генерирующие реакции.

Тестирование сниппетов

Проверять работу сниппетов вне сценария можно, нажав кнопку «Run» в нижней панели под редактором кода. При следующих нажатиях новое сообщение будет поверх предыдущего.
Если в сниппете используются переменные из контекста (например, последнее сообщение пользователя или факты из API), то при запуске сниппета вне сценария доступа к ним нет, возникнет ошибка.
Для того чтобы тестировать такие сниппеты, можно задавать контекст вручную через надстройку под тестовым чатом.
Устанавливаем факты.
Теперь сниппет выше имеет доступ к контексту, и его можно тестировать.
После проверки работы сниппетов не забудьте удалить все вручную установленные факты оставив в поле «Add global facts» пустой объект {}