Перейти к основному содержимому

YAML-справочники

подсказка
YAML-справочники используются для хранения различных структурированных данных для проекта.

Примеры использования YAML-справочников:

  • Вы можете вынести в YAML-справочник тексты ответов бота, чтобы хранить их в одном месте и поддерживать отдельно от кода бота.
  • Следует хранить в отдельных справочниках параметры конфигурации бота, которые часто используются и могут изменяться: ключи к внешним API, ограничения на различные счетчики и т. д.

Формат

YAML-справочники хранятся в файлах с расширением .yaml или .yml.

YAML — простой формат для записи типизированных значений и стандартных структур данных: последовательностей и пар вида «ключ — значение» произвольной степени вложенности. Например:

start:
id: 1
summary: Приветствие
answers:
- Здравствуйте, {{$client.name}}!
- {{$client.name}}, рад знакомству!

# ...

catchAll:
id: 99
summary: Нераспознанный текст
answers:
- Извините, я вас не понял.
- Не могли бы вы переформулировать вопрос?
подсказка
Если вы хотите использовать строки из YAML-словаря после тегов реакций или действий, вы можете использовать в них строковые подстановки. Внутри скобок {{}} может находиться любое допустимое выражение на JavaScript. Во время работы бота оно будет вычислено и подставлено в строку.

Подключение

Для подключения YAML-справочника к сценарию воспользуйтесь тегом require с параметром var:

require: states.yaml
var = states
подсказка
При подключении справочник будет преобразован в эквивалентный объект JavaScript, который будет доступен из кода сценария по имени переменной, указанному после var.

Использование в сценарии

Воспользуемся справочником выше, чтобы вывести случайный ответ на нераспознанный текст. Для генерации случайного числа воспользуемся методом $reactions.random.

state: CatchAll
event!: noMatch
script:
$temp.index = $reactions.random(states.catchAll.answers.length);
a: {{states.catchAll.answers[$temp.index]}}