Выполнение миграции

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

Подумайте о своем подходе к реализации

Код выполнения вашего проекта зависит от диалоговой модели и особенностей платформы разработки. Actions Builder представляет новую диалоговую модель и функциональные возможности, которые меняют способ построения диалога и, вероятно, изменят ваш подход к выполнению вашего проекта. В этом разделе описаны функции Action Builder, которые отличаются от Dialogflow, и то, как эти различия меняют способ реализации кода выполнения.

  • Изменения в реализации диалога

    • Dialogflow использует контекстно-управляемый диалоговый поток «от намерения к намерению», в котором отдельные намерения сопоставляются на основе обучающих фраз и контекстов ввода/вывода предыдущего намерения.
    • Диалоговый поток Actions Builder использует сцены в качестве контейнера для диалоговых ходов. Внутри сцены могут сопоставляться определенные намерения, во многом аналогично контекстам Dialogflow. Переходы определяют, к какой сцене следует перейти, в зависимости от того, какое намерение соответствует.
  • Многоразовые функции веб-перехватчика

    • В Dialogflow обработчики веб-перехватчиков привязаны к отдельным намерениям. Если необходима дополнительная логика, вы должны создать отдельное намерение для обработки новой функции.
    • Обработчики веб-перехватчиков имеют собственные имена обработчиков в Actions Builder. Эта функция дает вам возможность вызывать функцию из нескольких сцен вашего проекта.
  • Дополнительные способы вызова вебхуков

    • Один веб-перехватчик на каждое намерение в Dialogflow требует дополнительных намерений, чтобы облегчить более диалоговую логику при выполнении вашего проекта.
    • Action Builder позволяет выполнять вызовы веб-перехватчиков из нескольких мест сцены: при входе, на основе условий, на основе заполнения слотов, а также посредством пользовательского и системного сопоставления намерений.

Обновите код выполнения

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

  1. Загрузите и установите последнюю версию клиентской библиотеки.

    npm install @assistant/conversation
    
  2. Обновите операторы require в своем коде. Например:

    const {
      SimpleResponse,
      BasicCard,
      Image,
    } = require('actions-on-google');
    

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

    const {
      conversation,
      Simple,
      Card,
      Image,
    } = require('@assistant/conversation');
    
  3. Выполните рефакторинг вашего кода, чтобы использовать новые методы.

    • Обработчики намерений: app.intentapp.handle
    • Ответ/подсказки: conv.askconv.add
    • Возможности поверхности/устройства: conv.surface.capabilities.has('actions.capability.SCREEN_OUTPUT')conv.device.capabilities.includes('RICH_RESPONSE')
    • Хранение данных: conv.dataconv.session.params
    • Типы ответов:

      • SimpleResponseSimple
      • BasicCardCard
      • SuggestionsSuggestion
    • Параметры намерения: 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'

  4. Обновите код ответа, чтобы использовать новые примитивы ответа 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 вам необходимо учитывать изменения в потоке разговора, поскольку он может измениться, когда и где вы совершаете вызовы веб-перехватчика.

Чтобы включить вызов веб-перехватчика, выполните следующие действия:

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

    • При входе
    • Состояние
    • Заполнение слотов
    • Обработка намерений пользователя
    • Обработка намерений системы
  3. Установите флажок «Вызов веб-перехватчика ».

  4. Введите обработчик веб-перехватчика, который вы определили в своем коде выполнения.

  5. Нажмите Сохранить .

  6. Перейдите в раздел «Тестировать» , чтобы опробовать изменения вызова веб-перехватчика и выполнения.

Карта перевода кода выполнения

В таблице ниже показано, как синтаксис кода выполнения 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

Ниже вы можете найти информацию о дополнительных инструментах: