Сущности в контексте
Платформа предоставляет механизм извлечения сущностей (entities) для распознавания и обработки структурированных данных из пользовательского ввода. Этот функционал позволяет работать с различными типами данных, такими как номера телефонов, даты, адреса и другие.
Принцип работы
Распознавание: При поступлении сообщения NLU-модель автоматически извлекает сущности, соответствующие настроенным шаблонам.
Сохранение в контекст: Извлеченные данные сохраняются в объекте
context, становясь доступными для использования в сценарии.Доступ к данным: Доступ к значению сущности осуществляется через следующие поля:
context.имя_сущности.str: Отформатированное строковое представление.context.имя_сущности.raw: Оригинальное значение, как оно было введено пользователем.
Данные из контекста можно использовать как декларативно в блоке Текст, так и программно в Сниппетах.
Практическое руководство
Рассмотрим пример извлечения номера телефона и его использования в сценарии.
Шаг 1. Конфигурация сущности
Перейдите в раздел Сущности и создайте новую сущность с типом Phone number. Присвойте ей имя, например, Phone.
Шаг 2. Создание сниппета
Перейдите в раздел Сниппеты и создайте новый сниппет с именем getPhoneNumber. Добавьте следующий код для извлечения данных из контекста и вывода их в чат для отладки:
Шаг 3. Построение и тестирование сценария
Перейдите в раздел Сценарии и создайте новый сценарий.
В качестве триггера (первого шага) установите блок Сущность и выберите созданную ранее сущность
Phone.Добавьте два шага-реакции:
Сниппет: Выберите созданный сниппет
getPhoneNumber.Текст: Введите
Указан телефон: {{Phone.str}}для демонстрации прямого доступа к данным сущности.
Сохраните сценарий.
Для проверки откройте тестовый чат и отправьте сообщение, содержащее номер телефона. В ответ система должна вернуть два сообщения, подтверждающих успешное извлечение данных как через сниппет, так и напрямую в текстовом блоке.
Продвинутые техники работы с контекстом
Обработка нескольких сущностей
Если в одном сообщении может содержаться несколько сущностей одного типа, их можно обработать с помощью свойства .others, которое содержит массив всех дополнительных совпадений.
Пример сниппета:
Доступ к истории контекста
Сниппеты предоставляют доступ не только к текущему состоянию контекста, но и к его истории. Это позволяет извлекать данные из предыдущих сообщений диалога.
context.current.meta.entities: Сущности, извлеченные из текущего сообщения.context.events: Массив всех событий в диалоге. Для доступа к последнему событию используетсяcontext.events[context.events.length - 1].
Пример сниппета для демонстрации различных способов доступа:
Последнее обновление