Сцены

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

Некоторые особенности сцен включают в себя:

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

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

Пользовательские сцены

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

  • Активация . Прежде чем сцену можно будет выполнить, вы должны активировать ее посредством глобального соответствия намерений или перехода сцены.
  • Выполнение . Когда сцена активна, она выполняется в рамках четко определенного жизненного цикла, который позволяет выполнять различные задачи, такие как заполнение слотов, проверка условий, генерация подсказок и запуск событий веб-перехватчика.
  • Переход . Когда сцена соответствует определенным вами критериям, например совпадению намерения или завершению заполнения слотов, вы можете перейти к другой сцене, чтобы выполнить еще больше логики. Альтернативно вы можете перейти к системной сцене «Завершить разговор» , которая завершит разговор с пользователем.
Рисунок 1. Типичный переход между сценами. Глобальное намерение активирует сцену во время вызова, сцена использует ввод пользователя и соответствует намерению, которое переходит и активирует другую сцену.

Активация

Прежде чем сцена сможет выполниться, она должна быть активной. В любой момент времени может быть активна только одна сцена. Активировать сцены можно следующими способами:

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

Жизненный цикл выполнения

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

  1. При входе — этот этап запускается только один раз при активации сцены. Вы можете активировать вебхук или предложить пользователю выполнить однократную настройку вашей сцены.

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

  3. Заполнение слотов . Сцена может автоматически предлагать пользователям до тех пор, пока не соберет все необходимые слоты (введенные данные). Сцена каждый раз запрашивает один слот в цикле выполнения. Если какие-либо слоты отсутствуют, жизненный цикл сцены в конечном итоге возвращается к этапу заполнения слотов и запрашивает следующий необходимый слот. На этом этапе можно определить критерии перехода для выхода из цикла выполнения.

  4. Подсказки — Ассистент доставляет очередь подсказок пользователю и очищает ее. Очередь подсказок — это объединенная коллекция подсказок, которые были агрегированы с момента последней очистки очереди на этом этапе.

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

Рисунок 2. Жизненный цикл выполнения сцены

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

При входе

При вводе — единственный этап, который не выполняется в цикле выполнения сцены. Он выполняет однократную инициализацию вашей сцены в следующем порядке:

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

Условия

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

  • Среда выполнения Assistant оценивает каждое условие в том порядке, в котором они указаны. Первое условие, которое оценивается как true выполняет связанный обработчик и останавливает оценку условий.
  • Условие else if scene.slots.status = "FINAL" автоматически добавляется в список условий, если вы выполняете заполнение слотов. Это необязательное условие проверяет завершение заполнения слотов и может активировать веб-перехватчик или добавить запросы в очередь запросов.

Если после оценки условия сцена не определяет переход, она продолжает заполнять слоты.

Заполнение слотов

На этом этапе добавляется подсказка о слоте для одного незаполненного и необходимого слота. Если вы не определили ни одного слота в сцене, этот этап ничего не делает.

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

Подсказки

Среда выполнения Assistant доставляет очередь запросов пользователю, очищает ее и обрабатывает введенные пользователем данные.

Вход

Среда выполнения Assistant пытается сопоставить входные данные с намерением или слотом:

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

    • no_match_1
    • no_match_2
    • no_match_final

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

Переход

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

  • Условия . Вы можете перейти к другой сцене на основе определенных вами условий. Обычное условие, которое следует проверить, — это полное заполнение слотов.
  • Ввод (сопоставление намерений пользователя) . Если намерение совпадает, оно может вызвать переход к другой сцене.
  • Ввод (сопоставление намерений системы) . Вы можете активировать веб-перехватчики во время любого события сопоставления намерений системы. Для событий «нет совпадения» и «нет ввода» сцена по умолчанию переходит в сцену «Завершить разговор» после трех повторений.

Системные сцены

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

В следующем списке описаны поддерживаемые системные сцены и способы их использования:

  • Завершить разговор — закрывает микрофон и завершает разговор с пользователем. Ассистент возвращает себе контроль над пользовательским интерфейсом после выполнения этой сцены.
  • Связывание учетных записей . Проводит пользователя через процесс связывания учетных записей и предоставляет вашим Действиям необходимую информацию для связывания учетной записи пользователя на ваших внутренних серверах с учетной записью пользователя Google. Дополнительную информацию о том, как использовать эту сцену, см. в документации по привязке учетной записи .
  • Ежедневные обновления . Проводит пользователя через поток подтверждения, чтобы добавить ваши действия к ежедневным обновлениям пользователя. Дополнительную информацию о том, как использовать эту сцену, см. в документации по ежедневным обновлениям .
  • Уведомления . Проводит пользователя через поток подтверждения для получения уведомлений о ваших действиях. Дополнительную информацию о том, как использовать эту сцену, см. в документации по push-уведомлениям .