После настройки намерений и сцен необходимо обновить код выполнения, чтобы учесть изменения в форматах запросов и ответов Action Builder. Это также возможность рассмотреть возможность использования дополнительных функций Actions Builder. На этой странице описаны общие шаги и рекомендации по обновлению кода выполнения.
Подумайте о своем подходе к реализации
Код выполнения вашего проекта зависит от диалоговой модели и особенностей платформы разработки. Actions Builder представляет новую диалоговую модель и функциональные возможности, которые меняют способ построения диалога и, вероятно, изменят ваш подход к выполнению вашего проекта. В этом разделе описываются функции Action Builder, которые отличаются от Dialogflow, и то, как эти различия меняют способ реализации кода выполнения.
Изменения в реализации диалога
- Dialogflow использует контекстно-управляемый диалоговый поток «от намерения к намерению», в котором отдельные намерения сопоставляются на основе обучающих фраз и контекстов ввода/вывода предыдущего намерения.
- Диалоговый поток Actions Builder использует сцены в качестве контейнера для диалоговых ходов. Внутри сцены могут сопоставляться определенные намерения, во многом аналогично контекстам Dialogflow. Переходы определяют, к какой сцене следует перейти, в зависимости от того, какое намерение соответствует.
Многоразовые функции веб-перехватчика
- В Dialogflow обработчики веб-перехватчиков привязаны к отдельным намерениям. Если необходима дополнительная логика, вы должны создать отдельное намерение для обработки новой функции.
- Обработчики веб-перехватчиков имеют собственные имена обработчиков в Actions Builder. Эта функция дает вам возможность вызывать функцию из нескольких сцен вашего проекта.
Дополнительные способы вызова вебхуков
- Один веб-перехватчик на каждое намерение в Dialogflow требует дополнительных намерений, чтобы облегчить более диалоговую логику при выполнении вашего проекта.
- Action Builder позволяет выполнять вызовы веб-перехватчиков из нескольких мест сцены: при входе, на основе условий, на основе заполнения слотов, а также посредством пользовательского и системного сопоставления намерений.
Обновите код выполнения
Код выполнения каждого Действия будет отличаться в зависимости от сложности и цели Действия, однако при обновлении кода необходимо предпринять общие шаги:
Загрузите и установите последнюю версию клиентской библиотеки.
npm install @assistant/conversation
Обновите операторы
require
в своем коде. Например:const { SimpleResponse, BasicCard, Image, } = require('actions-on-google');
Приведенный выше код обновляется следующим образом:
const { conversation, Simple, Card, Image, } = require('@assistant/conversation');
Выполните рефакторинг вашего кода, чтобы использовать новые методы.
- Обработчики намерений:
app.intent
→app.handle
- Ответ/подсказки:
conv.ask
→conv.add
- Возможности поверхности/устройства:
conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')
→conv.device.capabilities.includes('RICH_RESPONSE')
- Хранение данных:
conv.data
→conv.session.params
Типы ответов:
-
SimpleResponse
→Simple
-
BasicCard
→Card
-
Suggestions
→Suggestion
-
Параметры намерения:
conv.parameters[KEY]
→conv.intent.parameters[KEY].resolved
Переходы контекстов/сцен:
conv.contexts.set(content_name, 5);
→conv.scene.next.name = 'context_name'
Завершить разговор:
conv.close(response)
→conv.add.response; conv.scene.next.name = 'actions.page.END_CONVERSATION'
- Обработчики намерений:
Обновите код ответа, чтобы использовать новые примитивы ответа Builder. Например:
conv.ask(new Suggestions (['a', 'b']));
Приведенный выше код обновляется следующим образом:
for (suggestion of ['a', 'b']) { conv.add.(new Suggestion({title: suggestion})) }
Полный список методов см. на карте перевода кода выполнения ниже.
Используйте следующие страницы для сравнения полезных данных запроса и ответа:
- Форматы запросов
- Форматы ответов
Настройка вебхуков
После обновления выполнения включите вызовы веб-перехватчиков во всех сценах вашего проекта. Хотя инструмент миграции переносит настройки веб-перехватчика вашего намерения Dialogflow, вам необходимо просмотреть эти настройки, поскольку ваш рефакторинг кода выполнения и функции веб-перехватчика могут измениться.
В Dialogflow веб-перехватчики включены в намерениях, а ваш код выполнения включает обработчики и функции, которые необходимо выполнить при совпадении намерения. В Actions Builder веб-перехватчик может срабатывать в намерениях или сценах вызова, который отправляет запрос в конечную точку выполнения. Ваше выполнение содержит обработчики веб-перехватчиков, которые обрабатывают полезную нагрузку JSON в запросе. Вы можете активировать вебхуки в следующих ситуациях:
- После совпадения намерения вызова
- Во время сцены на сцене
- После того, как условие оценивается как истинное на этапе состояния сцены
- На этапе заполнения слотов сцены
- После того, как на этапе ввода сцены происходит совпадение намерений
При переходе с Dialogflow на Actions Builder вам необходимо учитывать изменения в потоке разговора, поскольку он может измениться, когда и где вы совершаете вызовы веб-перехватчика.
Чтобы включить вызов веб-перехватчика, выполните следующие действия:
- Выберите сцену, из которой вы хотите вызвать вебхук.
Выберите состояние, для которого вы хотите включить вебхук. Вы можете включить вебхук для одного или нескольких из следующих состояний:
- При входе
- Состояние
- Заполнение слотов
- Обработка намерений пользователя
- Обработка намерений системы
Установите флажок «Вызов веб-перехватчика» .
Введите обработчик веб-перехватчика, который вы определили в своем коде выполнения.
Нажмите Сохранить .
Перейдите в раздел «Тестировать» , чтобы опробовать изменения вызова веб-перехватчика и выполнения.
Карта перевода кода выполнения
В таблице ниже показано, как синтаксис кода выполнения Dialogflow преобразуется в код Actions Builder. Полный список методов см . в справочной документации Actions Builder и SDK .
Диалоговый поток | Конструктор действий |
---|---|
conv.data | conv.session.params |
conv.ask | conv.add |
conv.close | conv.scene.next.name = 'actions.scene.END_CONVERSATION' |
conv.user.storage | conv.user.params |
conv.input.raw | conv.intent.query |
conv.parameters | conv.intent.params[key].resolved |
conv.arguments.get('MEDIA_STATUS') mediaStatus.status==='FINISHED' | conv.intent.params['MEDIA_STATUS'] mediaStatus.resolved==='FINISHED' |
События | Обработка намерений системы:MEDIA_STATUS_FINISHED MEDIA_STATUS_FAILED |
conv.device.capabilities.has("actions.capability.SCREEN_OUTPUT") | conv.device.capabilities.includes("RICH_RESPONSE") |
app.intent | app.handler |
app.middleware | app.middleware |
Простой ответ | prompt -firstSimple |
Богатый ответ | prompt -content -card: object -image: object -table: object -media: object -suggestions -link |
Ниже вы можете найти информацию о дополнительных инструментах: