Намерения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Когда вы создаете пользовательское намерение в консоли 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 только для повторного запроса пользователя.