Диалоговые действия позволяют расширить Google Assistant собственными диалоговыми интерфейсами, которые предоставляют пользователям доступ к вашим продуктам и услугам. Действия используют мощный механизм распознавания естественного языка (NLU) Assistant для обработки и понимания ввода на естественном языке и выполнения задач на основе этого ввода.
Обзор
Диалоговое действие — это простой объект, определяющий точку входа (называемую вызовом) в диалог:
- Вызов определяет, как пользователи сообщают Ассистенту, что хотят начать разговор с одним из ваших действий. Вызов действия определяется одним намерением , которое сопоставляется, когда пользователи запрашивают действие.
- Беседа определяет, как пользователи взаимодействуют с действием после его вызова. Вы строите беседы с намерениями , типами , сценами и подсказками .
- Кроме того, ваши действия могут делегировать дополнительную работу фулфилментам , которые представляют собой веб-службы, которые взаимодействуют с вашими действиями через веб-перехватчики. Это позволяет выполнять проверку данных, вызывать другие веб-службы, выполнять бизнес-логику и многое другое.
Вы объединяете одно или несколько действий в зависимости от вариантов использования, которые важны для ваших пользователей, в логический контейнер, называемый проектом действий. Ваш проект Actions содержит всю вашу модель вызова (набор всех ваших вызовов), которая позволяет пользователям начинать с логических мест в вашей модели диалога (все возможные вещи, которые могут сказать пользователи, и все возможные способы, которыми вы отвечаете пользователям).
Вызов
Вызов связан с отображаемым именем , представляющим бренд, имя или личность, которые позволяют пользователям просить помощника вызвать ваши действия. Пользователи могут использовать это отображаемое имя отдельно (называемое основным вызовом) или в сочетании с необязательными глубокими ссылками для вызова ваших действий.
Например, пользователи могут произнести следующие фразы, чтобы вызвать три отдельных действия в проекте с отображаемым названием «Факты о Google»:
- «Окей, Google, поговори с фактами о Google».
- «Окей, Google, поговорите с фактами о Google, чтобы узнать факты о компании».
- «Окей, Google, поговорите с фактами о Google, чтобы узнать исторические факты».
Первый вызов в примере является основным вызовом . Этот вызов связан со специальным системным намерением с именем actions.intent.MAIN
. Второй и третий вызовы — это вызовы внешних ссылок, которые позволяют указать дополнительные фразы, которые позволяют пользователям запрашивать определенные функции. Эти вызовы соответствуют намерениям пользователя, которые вы определили как глобальные. Каждый вызов в этом примере обеспечивает точку входа в диалог и соответствует одному действию.
На рис. 2 показан типичный основной поток вызовов:
- Когда пользователи запрашивают действие, они обычно запрашивают его у Ассистента по вашему отображаемому имени.
- Помощник сопоставляет запрос пользователя с соответствующим намерением, которое соответствует запросу. В данном случае это будет
actions.intent.MAIN
. - Действие уведомляется о совпадении намерений и отвечает соответствующей подсказкой, чтобы начать разговор с пользователем.
Беседа
Диалог определяет, как пользователи взаимодействуют с действием после его вызова. Вы строите эти взаимодействия, определяя действительный пользовательский ввод для вашего разговора, логику для обработки этого ввода и соответствующие подсказки для ответа пользователю. На следующем рисунке и пояснениях показано, как типичный ход разговора работает с низкоуровневыми компонентами разговора: намерениями , типами , сценами и подсказками .
На рис. 3 показан типичный ход разговора:
- Когда пользователи что-то говорят, Assistant NLU сопоставляет ввод с соответствующим намерением. Намерение сопоставляется, если языковая модель для этого намерения может близко или точно соответствовать пользовательскому вводу. Вы определяете языковую модель, указывая обучающие фразы или примеры того, что пользователи могут захотеть сказать. Помощник берет эти обучающие фразы и расширяет их, чтобы создать языковую модель намерения.
- Когда Assistant NLU соответствует намерению, он может извлечь необходимые параметры из входных данных. С этими параметрами связаны типы , такие как дата или число. Вы аннотируете определенные части обучающих фраз намерения, чтобы указать, какие параметры вы хотите извлечь.
- Затем сцена обрабатывает совпадающее намерение. Вы можете думать о сценах как о логических исполнителях Действия, выполняющих тяжелую работу и выполняющих логику, необходимую для продвижения разговора. Сцены выполняются в цикле, обеспечивая гибкий жизненный цикл выполнения, который позволяет вам выполнять такие действия, как проверка параметров намерения, заполнение слотов, отправка подсказок пользователю и многое другое.
- Когда сцена завершается, она обычно отправляет пользователям запрос на продолжение разговора или может завершить разговор, если это необходимо.
Исполнение
Во время вызова или разговора ваше действие может активировать веб-перехватчик, который уведомляет службу выполнения о выполнении некоторых задач.
На рис. 4 показано, как можно использовать выполнение для создания подсказок — распространенный способ использования выполнения:
- В определенные моменты выполнения вашего действия оно может запускать веб-перехватчик, который отправляет запрос зарегистрированному обработчику веб-перехватчиков (ваша служба выполнения) с полезной нагрузкой JSON.
- Ваше выполнение обрабатывает запрос, например, вызывает REST API для поиска некоторых данных или проверки некоторых данных из полезной нагрузки JSON. Очень распространенный способ использования выполнения — генерировать динамическую подсказку во время выполнения, чтобы ваши разговоры были более адаптированы к текущему пользователю.
- Ваше выполнение возвращает ответ на ваше действие, содержащий полезную нагрузку JSON. Он может использовать данные полезной нагрузки, чтобы продолжить выполнение и ответить пользователю.