履行遷移作業

設定意圖和場景後,您必須更新執行要求程式碼,以因應 Action Builder 要求與回應格式的變更。您也可以考慮利用 Actions Builder 的其他功能。本頁說明更新執行要求程式碼的一般步驟和注意事項。

思考執行方式

專案的執行要求程式碼會因對話模型和開發平台的功能而異。Actions Builder 導入新的對話模型和功能,改變對話的建構方式,並有可能改變您達成專案執行要求的方式。本節說明 Actions Builder 與 Dialogflow 不同的功能,以及這些差異會如何改變執行執行要求程式碼的方式。

  • 對話導入變更

    • Dialogflow 採用意圖對意圖、內容導向的對話流程,也就是根據訓練詞組和上述意圖的輸入/輸出背景資訊,比對個別意圖。
    • Actions Builder 的對話流程會使用場景做為對話回合的容器。類似 Dialogflow 的背景資訊,可在場景中比對特定意圖。轉場效果會根據相符的意圖,定義要轉換至哪個場景。
  • 可重複使用的 Webhook 函式

    • 在 Dialogflow 中,Webhook 處理常式會與個別意圖連結。如果需要其他邏輯,您必須另外建立一項意圖來處理新函式。
    • Webhook 處理常式在 Actions Builder 中具有自訂處理常式名稱。這項功能可讓你從專案的多個場景呼叫函式。
  • 其他叫用 Webhook 的方法

    • 在 Dialogflow 中,每個意圖方法各有一個 Webhook 需要額外的意圖,才能在專案執行要求中使用更多對話邏輯。
    • Action Builder 可讓您根據輸入條件,在場景中的多個位置發出 Webhook 呼叫:根據條件 (根據輸入內容)、運算單元填充,以及透過自訂和系統意圖比對。

更新出貨代碼

每個動作的執行要求程式碼會因為動作的複雜性和用途而不同,但在更新程式碼時,一般需要採取的步驟如下:

  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. 更新回應代碼,利用建構工具的新回應基元。例如:

    conv.ask(new Suggestions (['a', 'b']));
    

    上述程式碼已更新為以下程式碼:

    for (suggestion of ['a', 'b']) {
      conv.add.(new Suggestion({title: suggestion}))
    }
    

如需完整的方法清單,請參閱下方的執行要求程式碼轉譯對應

使用以下頁面比較要求和回應酬載:

,瞭解如何調查及移除這項存取權。

設定 Webhook

更新執行要求後,請在專案中的整個場景啟用 Webhook 呼叫。雖然遷移工具會遷移 Dialogflow 意圖的 Webhook 設定,不過由於重構的執行要求程式碼和 Webhook 函式可能會變更,因此您必須查看這些設定。

Dialogflow 中的 Webhook 會在意圖中啟用,當意圖相符時,執行要求程式碼會包含要執行的處理常式和函式。在 Actions Builder 中,Webhook 可在叫用意圖或場景中觸發,進而將要求傳送至執行要求端點。您的執行要求包含處理要求中 JSON 酬載的 Webhook 處理常式。您可以在下列情況觸發 Webhook:

  • 成功比對叫用意圖後
  • 在進入舞台的場景中
  • 某個條件在場景的條件階段評估為 true 之後
  • 場景的運算單元歸檔階段期間
  • 在情境的輸入階段發生意圖比對後

從 Dialogflow 遷移至 Actions Builder 時,您必須考量對話流程的相關變更,因為這可能會改變您發出 Webhook 呼叫的時間和位置。

如要啟用 Webhook 呼叫,請按照下列步驟操作:

  1. 選取要呼叫 Webhook 的場景。
  2. 選擇要啟用 Webhook 的狀態。您可以為下列一或多個狀態啟用 Webhook:

    • 輸入時
    • 條件
    • 運算單元填充
    • 使用者意圖處理
    • 系統意圖處理
  3. 勾選「Call your Webhook」選項。

  4. 輸入您在執行要求程式碼中定義的 Webhook 處理常式。

  5. 按一下 [儲存]

  6. 前往「測試」即可測試 Webhook 呼叫和執行要求變更。

完成程式碼轉譯對應

下表說明 Dialogflow 的執行要求程式碼語法如何轉譯為 Actions Builder 程式碼。如需完整的方法清單,請參閱 Actions Builder 和 SDK 參考資料文件

Dialogflow 動作建構工具
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

如要瞭解其他工具的使用方式,請參閱下文: