Сущности в контексте

Платформа предоставляет механизм извлечения сущностей (entities) для распознавания и обработки структурированных данных из пользовательского ввода. Этот функционал позволяет работать с различными типами данных, такими как номера телефонов, даты, адреса и другие.

Принцип работы

  1. Распознавание: При поступлении сообщения NLU-модель автоматически извлекает сущности, соответствующие настроенным шаблонам.

  2. Сохранение в контекст: Извлеченные данные сохраняются в объекте context, становясь доступными для использования в сценарии.

  3. Доступ к данным: Доступ к значению сущности осуществляется через следующие поля:

    • context.имя_сущности.str: Отформатированное строковое представление.

    • context.имя_сущности.raw: Оригинальное значение, как оно было введено пользователем.

Данные из контекста можно использовать как декларативно в блоке Текст, так и программно в Сниппетах.

Практическое руководство

Рассмотрим пример извлечения номера телефона и его использования в сценарии.

Шаг 1. Конфигурация сущности

Перейдите в раздел Сущности и создайте новую сущность с типом Phone number. Присвойте ей имя, например, Phone.

Шаг 2. Создание сниппета

Перейдите в раздел Сниппеты и создайте новый сниппет с именем getPhoneNumber. Добавьте следующий код для извлечения данных из контекста и вывода их в чат для отладки:

Шаг 3. Построение и тестирование сценария

  1. Перейдите в раздел Сценарии и создайте новый сценарий.

  2. В качестве триггера (первого шага) установите блок Сущность и выберите созданную ранее сущность Phone.

  3. Добавьте два шага-реакции:

    • Сниппет: Выберите созданный сниппет getPhoneNumber.

    • Текст: Введите Указан телефон: {{Phone.str}} для демонстрации прямого доступа к данным сущности.

  4. Сохраните сценарий.

Для проверки откройте тестовый чат и отправьте сообщение, содержащее номер телефона. В ответ система должна вернуть два сообщения, подтверждающих успешное извлечение данных как через сниппет, так и напрямую в текстовом блоке.

Продвинутые техники работы с контекстом

Обработка нескольких сущностей

Если в одном сообщении может содержаться несколько сущностей одного типа, их можно обработать с помощью свойства .others, которое содержит массив всех дополнительных совпадений.

Пример сниппета:

Доступ к истории контекста

Сниппеты предоставляют доступ не только к текущему состоянию контекста, но и к его истории. Это позволяет извлекать данные из предыдущих сообщений диалога.

  • context.current.meta.entities: Сущности, извлеченные из текущего сообщения.

  • context.events: Массив всех событий в диалоге. Для доступа к последнему событию используется context.events[context.events.length - 1].

Пример сниппета для демонстрации различных способов доступа:

Последнее обновление