Намерения

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

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

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

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

Намерения пользователя

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

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

При построении пользовательских намерений вы указываете следующие элементы:

  • Обозначение глобального намерения определяет, может ли среда выполнения Assistant соответствовать указанному намерению пользователя во время вызова, а также во время разговора. По умолчанию Assistant может соответствовать намерениям пользователя только во время разговора. Только намерения, которые вы помечаете как глобальные, имеют право на вызов диплинка.

  • Обучающие фразы — это примеры того, что пользователь может сказать, чтобы соответствовать намерению. Механизм Assistant NLU (понимание естественного языка) естественным образом расширяет эти обучающие фразы, включая другие похожие фразы. Предоставление большого набора высококачественных примеров повышает качество намерения и точность сопоставления.

  • Параметры — это типизированные данные, которые вы хотите извлечь из пользовательского ввода. Чтобы создать параметр, вы аннотируете обучающие фразы типами , чтобы уведомить механизм NLU о том, что вы хотите, чтобы части пользовательского ввода были извлечены. Вы можете использовать системные типы или создавать свои собственные типы для параметров.

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

Параметры Intent также поддерживают «частичные» совпадения. Например, если вы укажете тип DateTime , а пользователь предоставит только дату, NLU все равно извлечет частичное значение в качестве параметра.

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

Когда вы создаете пользовательское намерение в консоли Actions, Actions Builder предлагает системные намерения, которые могут выполнять ту же роль, что и ваше пользовательское намерение. Дополнительные сведения о намерениях системы см. в следующем разделе.

Системные намерения

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

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

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

Список намерений

Намерение Описание
actions.intent.MAIN Каждый проект Actions должен содержать этот основной вызов по умолчанию, привязанный к вашему отображаемому имени. Пользователи произносят такие фразы, как «О'кей, Google, поговори с <отображаемое имя>» , чтобы вызвать действие.

actions.intent.NO_MATCH_1

actions.intent.NO_MATCH_2

actions.intent.NO_MATCH_FINAL

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

actions.intent.NO_INPUT_1

actions.intent.NO_INPUT_2

actions.intent.NO_INPUT_FINAL

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

actions.intent.CANCEL Это намерение соответствует, когда пользователь хочет выйти из ваших действий во время разговора, например, пользователь говорит: «Я хочу выйти».
actions.intent.MEDIA_STATUS_FINISHED Это намерение сопоставляется и отправляется вашему действию, когда пользователь завершает воспроизведение мультимедиа или переходит к следующему фрагменту мультимедиа.
actions.intent.MEDIA_STATUS_PAUSED Это намерение сопоставляется и отправляется вашему действию, когда пользователь приостанавливает воспроизведение мультимедиа в ответе мультимедиа.
actions.intent.MEDIA_STATUS_STOPPED Это намерение сопоставляется и отправляется вашему действию, когда пользователь останавливает или выходит из воспроизведения мультимедиа из ответа мультимедиа.
actions.intent.MEDIA_STATUS_FAILED Это намерение сопоставляется и отправляется вашему действию, когда проигрыватель медиа-ответа не воспроизводится.
actions.intent.YES

Это намерение соответствует, когда пользователь дает утвердительный ответ на ваше действие.

actions.intent.NO

Это намерение срабатывает, когда пользователь дает отрицательный ответ на ваше действие.

actions.intent.REPEAT

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

actions.intent.PLAY_GAME Это намерение соответствует, когда пользователь просит сыграть в игру. Это намерение позволяет вам выбрать неявный вызов (вызов без использования вашего отображаемого имени), предоставляемый Actions on Google.

Добавить поддержку других языков

Некоторые системные намерения, такие как YES , NO и NO_MATCH , поддерживаются только на английском языке. Чтобы добавить поддержку других языков, необходимо создать пользовательские намерения, соответствующие этим системным намерениям. Ваши новые намерения должны обрабатываться в вашем коде так же, как системные намерения, которые вы реализовали.

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

Узнайте больше о создании пользовательских намерений .

Узнайте больше о локализации намерений пользователя .

Несовпадение

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

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

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