Создавайте модели разговоров

Модель диалога определяет, что пользователи могут сказать вашим действиям и как ваши действия реагируют на пользователей. Основными строительными блоками вашей модели разговора являются намерения , типы , сцены и подсказки . После вызова одного из ваших действий Google Assistant передает пользователю это действие, и действие начинает разговор с пользователем на основе вашей модели разговора, которая состоит из:

  • Действительные запросы пользователей . Чтобы определить, что пользователи могут сказать о ваших действиях, вы создаете коллекцию намерений, которые дополняют Assistant NLU, чтобы он мог понимать запросы, специфичные для ваших действий. Каждое намерение определяет обучающие фразы, которые описывают, что пользователи могут сказать, чтобы соответствовать этому намерению. Assistant NLU расширяет эти обучающие фразы, включая похожие фразы, и агрегирование этих фраз приводит к созданию языковой модели намерения.

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

Рисунок 1. Модель диалога состоит из намерений, типов, сцен и подсказок, которые определяют ваш пользовательский опыт. Намерения, которые можно вызвать, также действительны для сопоставления в ваших разговорах.

Определите действительные запросы пользователей

Чтобы определить, что пользователи могут сказать вашим действиям, вы используете комбинацию намерений и типов. Намерения и типы пользователей позволяют дополнять Assistant NLU собственными языковыми моделями. Системные намерения и типы позволяют вам воспользоваться преимуществами встроенных языковых моделей и обнаружения событий, например, пользователи, желающие выйти из вашего действия, или помощник, не обнаруживающие никакого ввода.

Создание намерений пользователя

Намерения пользователя позволяют вам определять собственные обучающие фразы, которые определяют, что пользователи могут сказать о ваших действиях. Assistant NLU использует эти фразы, чтобы научиться понимать, что говорят ваши пользователи. Когда пользователи говорят что-то, что соответствует языковой модели намерения пользователя, Ассистент соответствует намерению и уведомляет ваше действие, чтобы вы могли реализовать логику и ответить пользователям.

Рисунок 1 . Пример намерения пользователя

Чтобы создать намерение пользователя:

  1. На вкладке «Разработка» нажмите «Намерения пользователя» > ⊕ (Новое намерение) , укажите имя и нажмите Enter , чтобы создать намерение.
  2. Щелкните вновь созданное намерение в левом меню. Появится редактор намерений .
  3. Добавьте к намерению обучающие фразы. Вам следует добавить как можно больше обучающих фраз для обучения Assistant NLU.
  4. Необязательно : добавьте примечания к обучающим фразам, чтобы дать указание Assistant NLU анализировать и извлекать типизированные параметры из пользовательского ввода, соответствующие указанному типу:
    1. Введите имя параметра в поле Добавить новый параметр .
    2. Выберите тип системы из раскрывающегося меню или создайте собственный тип .
    3. Укажите, является ли параметр списком. Это позволяет параметру собирать несколько значений одного типа.
    4. В разделе «Добавить обучающие фразы» выделите текст, к которому вы хотите применить тип. Это сообщает Assistant NLU, что выделенный текст следует рассматривать как параметр. Если пользователи говорят что-то, что соответствует типу, NLU извлекает это значение в качестве параметра.

Создание системных намерений

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

  1. На вкладке «Разработка» нажмите «Системные намерения» . Доступен набор системных намерений, например NO_MATCH , NO_INPUT и CANCEL .
  2. Каждое системное намерение содержит свои собственные обработчики, которые можно настроить для каждого типа системного намерения. Например, системные намерения позволяют запускать события веб-перехватчика и отправлять статические подсказки при возникновении события.

Создание пользовательских типов

Пользовательские типы позволяют создать собственную спецификацию типа, чтобы научить NLU понимать набор значений, которые должны сопоставляться с одним ключом.

Фигура 2 . Пример пользовательского типа

Чтобы создать пользовательский тип:

  1. На вкладке «Разработка» нажмите «Типы» > ⊕ (Новый тип) .
  2. Выберите способ предоставления значений типов в разделе «Какие значения поддерживаются этим типом?». раздел:

    • Слова и синонимы позволяют сопоставлять несколько значений одному ключу, который называется записью. Ваш тип может содержать одну или несколько записей. Если вы выберете этот вариант, вы также сможете включить следующие настройки NLU:
      • Включить нечеткое сопоставление . Это позволяет сопоставлять записи, содержащие более одного слова, даже если слова произносятся в другом порядке.
      • Принимать неизвестные значения . Если вы не можете указать все возможные значения, будут приниматься неизвестные слова или фразы на основе окружающих входных данных и данных обучения намерений, таких как элементы, которые могут быть добавлены в список покупок.
    • Регулярные выражения позволяют типу сопоставляться с шаблонами регулярных выражений, основанными на стандарте Google RE2 .
    • Текст произвольной формы позволяет типу соответствовать всему, что говорит пользователь.
  3. Укажите значения типа в разделе Добавить записи . Если вы выбрали Текст в произвольной форме , ваш тип соответствует любому тексту, поэтому вам не нужно вводить какие-либо записи.

Построение логики действий и ответов

Assistant NLU сопоставляет запросы пользователей с намерениями, чтобы ваше действие могло обрабатывать их в сценах. Сцены — это мощные логические исполнители, позволяющие обрабатывать события во время разговора.

Рисунок 3 . Пример пользовательской сцены

Создать сцену

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

Чтобы создать сцену:

  1. На вкладке «Разработка» нажмите «Сцены» > ⊕ (Новая сцена) , укажите имя и нажмите Enter , чтобы создать сцену.
  2. Нажмите на вновь созданную сцену в левом меню. Появится редактор сцены .

Определить однократную настройку

Когда сцена впервые становится активной, вы можете выполнять одноразовые задачи на этапе «При входе» . Этап «При входе» выполняется только один раз и является единственным этапом, который не выполняется внутри цикла выполнения сцены.

  1. В сцене щелкните этап «При входе» , чтобы указать его функциональность. На этом этапе вы можете указать следующий функционал:

    • Вызов вебхука — запускает вебхук. Дополнительную информацию о веб-перехватчиках см. в документации по веб-перехватчикам.
    • Отправлять подсказки . Укажите статические подсказки пользователю, чтобы он знал, как продолжить разговор. Дополнительную информацию об указании приглашений см. в документации по подсказкам.
    Рисунок 4 . Пример сцены на этапе входа

Проверить условия

Условия позволяют проверять заполнение слотов, хранилище сеансов, пользовательское хранилище и параметры домашнего хранилища для управления потоком выполнения сцены.

  1. В сцене щелкните значок + для этапа «Условие» . Редактор условий появится справа. На этом этапе вы можете указать следующий функционал:

    • Условие — укажите фактический условный оператор, от которого будет базироваться логика. Информацию о синтаксисе см. в документации по условиям .
    • Вызов вебхука — запускает вебхук. Дополнительную информацию о веб-перехватчиках см. в документации по веб-перехватчикам.
    • Отправлять подсказки — указывает статические подсказки, которые нужно отправить пользователю, чтобы он знал, как продолжить разговор. Дополнительную информацию об указании приглашений см. в документации по подсказкам.
    • Переход — указывает сцену, к которой осуществляется переход, если условное утверждение истинно.
Рисунок 5 . Пример этапа условий сцены

Определить заполнение слота

Слоты позволяют извлекать типизированные параметры из пользовательского ввода.

В редакторе сцен щелкните значок + для этапа заполнения слота . Справа появится редактор слота. Вы можете указать следующие свойства слота:

  • Имя слота: указывает имя слота. Если вы хотите воспользоваться преимуществами сопоставления значений слотов , используйте то же имя, что и у соответствующего параметра намерения.
  • Тип слота: указывает тип слота: системный или пользовательский тип.
  • Этот слот является обязательным: помечает этот слот как обязательный. Если этот параметр включен, заполнение слота не завершится, пока этот слот не будет заполнен.
  • Присвоить этому слоту значение по умолчанию: указывает значение по умолчанию для слота, считываемое из указанного параметра сеанса.
  • Настроить обратную запись значения слота: указывает параметр сеанса для сохранения значения слота после завершения заполнения слота.
  • Проверка слота: запуск веб-перехватчика, когда слот заполнен. Эта настройка применяется ко всем слотам.
  • Вызов веб-перехватчика (включено, если требуется слот): запускает веб-перехватчик. Дополнительную информацию о веб-перехватчиках см. в документации по веб-перехватчикам.
  • Отправлять подсказки (включено, если требуется слот): указывает статические подсказки, которые будут отправляться пользователю, чтобы он знал, как продолжить разговор. Дополнительную информацию об указании приглашений см. в документации по подсказкам.

Для определенных типов слотов (например, связанных с транзакциями или взаимодействием с пользователями) появляется дополнительный раздел, в котором вы можете настроить слот. Конфигурации слотов могут изменить взаимодействие с пользователями в зависимости от предоставленных вами свойств.

Чтобы настроить слот, укажите свойства в объекте JSON либо при выполнении (называемом параметром сеанса), либо во встроенном редакторе JSON. Доступные свойства для каждого типа слота можно найти в справочнике по JSON Actions Builder. Например, тип слота actions.type.DeliveryAddressValue соответствует ссылочному содержимому слота DeliveryAddressValue .

Рисунок 6 . Пример настроек заполнения слотов сцены

Сопоставление значений слотов

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

Например, если пользователь соответствует намерению заказать напиток, сказав «Я хочу заказать большой ванильный кофе» , существующие слоты для размера, вкуса и типа напитка считаются заполненными в соответствующей сцене, если эта сцена определяет те же слоты.

Входные данные процесса

На этом этапе вы можете заставить Assistant NLU сопоставлять вводимые пользователем данные с намерениями. Вы можете ограничить соответствие намерений конкретной сцене, добавив в сцену нужные намерения. Это позволяет вам контролировать ход разговора, сообщая Ассистенту, чтобы он соответствовал определенным намерениям, когда активны определенные сцены.

  1. В сцене щелкните значок + для этапа обработки намерений пользователя или обработки намерений системы . Справа появится редактор обработчика намерений. Вы можете указать следующую функциональность обработчика намерений:

    • Намерение — указывает намерение, которому вы хотите соответствовать в этой сцене.
    • Вызов вебхука — запускает вебхук. Дополнительную информацию о том, как обрабатывать запросы веб-перехватчиков , см. в документации по веб-перехватчикам.
    • Отправлять подсказки . Укажите статические подсказки для пользователя, чтобы они знали, как на них реагировать. Дополнительную информацию об указании приглашений см. в документации по подсказкам.
    • Переход (если применимо) — указывает сцену, к которой осуществляется переход, когда указанное намерение соответствует.
Рисунок 7 . Пример обработчика намерений пользователя сцены
Рисунок 8 . Пример обработчика системных намерений сцены