執行要求定義了 Actions 專案要取得的對話式介面 處理輸入內容的邏輯,以及最終執行動作的邏輯。
總覽
執行要求會接收 Google 助理提出的要求、處理要求並 給予回應。這種往返要求和回應程序促成了 持續對話,直到完成初始使用者要求為止
下列步驟說明如何使用動作建立執行要求 使用 Node.js 或 Java/Kotlin 用戶端程式庫的 SDK:
- 初始化 ActionsSdkApp 物件。
- 在執行要求邏輯中建立用於處理要求的函式。
建築物對話方塊
將 ActionsSdkApp
物件初始化
以下程式碼會執行個體化
ActionsSdkApp
敬上
並針對 Google Cloud Functions 進行部分樣板 Node.js 設定:
'use strict'; const {actionssdk} = require('actions-on-google'); const functions = require('firebase-functions'); const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Hi!'); }); // More intent handling if needed exports.myFunction = functions.https.onRequest(app);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!"); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi!" } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
建立函式來處理要求
當使用者說出詞組時,你會收到 Google 助理的要求。目的地: 執行要求中的意圖,以及建立函式來處理 觸發意圖
如何處理要求:
執行處理使用者輸入內容所需的任何邏輯。
呼叫
conv.ask()
函式並傳遞想顯示的回應。 做為引數
以下程式碼說明如何建構簡易回應:
conv.ask(`Hi! Say something, and I'll repeat it.`);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi! Say something, and I'll repeat it."); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi! Say something, and I'll repeat it." } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
處理意圖
備妥所有函式來處理已觸發的意圖後,請使用 app.intent
來
將處理常式指派給意圖
app.intent('actions.intent.TEXT', (conv) => { // handle text intent. }); app.intent('actions.intent.MAIN', (conv) => { // handle main intent. });
@ForIntent("actions.intent.MAIN") public ActionResponse main(ActionRequest request) { // handle main intent // ... } @ForIntent("actions.intent.TEXT") public ActionResponse text(ActionRequest request) { // handle text intent // ... }
正在結束對話
如果不希望使用者輸入內容有所回應並想要結束對話,
呼叫 conv.close()
函式。
這項功能會指示 Google 助理向使用者說出文字,並關閉麥克風來結束對話。
處理主要叫用意圖
使用者觸發 app.intent.action.MAIN
意圖時,您通常不會
執行任何使用者輸入內容處理作業如果您的動作套件包含
並涵蓋許多用途。建議您引導使用者
以及一些可執行的操作
- 呼叫
conv.ask()
函式,將回應做為引數傳遞。 Google 助理會說出你的回覆內容,然後 等待使用者觸發您指定的其中一項意圖。
下列程式碼片段說明如何處理簡易的歡迎意圖:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
對話狀態
如果您使用的是對話 HTTP/JSON Webhook API,則可持續維護
您與 JSON 格式物件的對話狀態 (conversationToken
)
擷取的資訊。如果您是
透過 Node.js 用戶端程式庫
可以直接寫入及讀取 conv.data
欄位。這個欄位
會自動在要求和回應之間來回傳遞。
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");