Диалоговые действия

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

Обзор

Диалоговое действие — это простой объект, который определяет точку входа (называемую вызовом) в диалог:

  • Вызов определяет, как пользователи сообщают Ассистенту, что хотят начать разговор с помощью одного из ваших действий. Вызов действия определяется одним намерением , которое сопоставляется, когда пользователи запрашивают действие.
  • Диалог определяет, как пользователи взаимодействуют с действием после его вызова. Вы строите разговоры, используя намерения , типы , сцены и подсказки .
  • Кроме того, ваши действия могут делегировать дополнительную работу выполнению — веб-сервисам, которые взаимодействуют с вашими действиями через веб-перехватчики. Это позволяет вам выполнять проверку данных, вызывать другие веб-службы, выполнять бизнес-логику и многое другое.

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

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

Призыв

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

Например, пользователи могут произнести следующие фразы, чтобы вызвать три отдельных действия в проекте с отображаемым именем «Факты о Google»:

  • «Окей, Google, поговори с Фактами о Google»
  • «Окей, Google, поговори с Фактами о Google, чтобы узнать факты о компании»
  • «Окей, Google, поговори с Фактами о Google, чтобы узнать исторические факты»

Первый вызов в примере является основным вызовом . Этот вызов связан со специальным системным намерением с именем actions.intent.MAIN . Второй и третий вызовы — это вызовы глубоких ссылок, которые позволяют указать дополнительные фразы, позволяющие пользователям запрашивать определенные функции. Эти вызовы соответствуют намерениям пользователя, которые вы обозначили как глобальные. Каждый вызов в этом примере обеспечивает точку входа в диалог и соответствует одному действию.

Фигура 2 . Пример основного вызова

На рис. 2 описан типичный основной поток вызова:

  1. Когда пользователи запрашивают действие, они обычно запрашивают его у Ассистента, указывая ваше отображаемое имя.
  2. Ассистент сопоставляет запрос пользователя с соответствующим намерением, соответствующим запросу. В данном случае это будет actions.intent.MAIN .
  3. Действие уведомляется о совпадении намерений и отвечает соответствующим приглашением начать разговор с пользователем.

Беседа

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

Рисунок 3 . Пример разговора

На рисунке 3 описан типичный ход разговора:

  1. Когда пользователи что-то говорят, Assistant NLU сопоставляет вводимые данные с соответствующим намерением. Намерение считается сопоставленным, если языковая модель для этого намерения может близко или точно соответствовать вводу пользователя. Вы определяете языковую модель, указывая обучающие фразы или примеры того, что пользователи могут захотеть сказать. Ассистент берет эти обучающие фразы и расширяет их, чтобы создать языковую модель намерения.
  2. Когда Assistant NLU соответствует намерению, он может извлечь необходимые вам параметры из входных данных. С этими параметрами связаны типы , например дата или число. Вы аннотируете определенные части обучающих фраз намерения, чтобы указать, какие параметры вы хотите извлечь.
  3. Затем сцена обрабатывает совпадающее намерение. Вы можете думать о сценах как о логических исполнителях Действия, выполняющих тяжелую работу и реализующих логику, необходимую для продвижения разговора. Сцены выполняются в цикле, обеспечивая гибкий жизненный цикл выполнения, который позволяет выполнять такие действия, как проверка параметров намерения, заполнение слотов, отправка подсказок пользователю и многое другое.
  4. Когда выполнение сцены завершается, она обычно отправляет пользователям приглашение продолжить диалог или может завершить его, если это необходимо.

Выполнение

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

Рисунок 4 . Пример разговора

На рис. 4 показано, как можно использовать выполнение для создания подсказок — распространенный способ использования выполнения:

  1. В определенные моменты выполнения вашего действия оно может активировать веб-перехватчик, который отправляет запрос зарегистрированному обработчику веб-перехватчика (вашей службе выполнения) с полезной нагрузкой JSON.
  2. Ваше выполнение обрабатывает запрос, например вызывает REST API для поиска данных или проверки некоторых данных из полезных данных JSON. Очень распространенный способ использования выполнения — создание динамического приглашения во время выполнения, чтобы ваши разговоры были более адаптированы к текущему пользователю.
  3. Ваше выполнение возвращает ответ на ваше действие, содержащий полезную нагрузку JSON. Он может использовать данные из полезной нагрузки, чтобы продолжить выполнение и ответить пользователю.