內建意圖是一組專屬 ID,您可以指定用來通知 你的動作可滿足特定類別使用者的 Google 助理動作 要求。以下列舉幾個會讓使用者查詢 Google 助理會比對內建意圖:
- 「玩遊戲」內建意圖:「Ok Google.來玩記憶遊戲」
- 「取得星座運勢」內建意圖:「Ok Google.取得星座運勢」
在探索動作期間,Google 助理可以用 動作的中繼資料,包括您指定的內建意圖 推薦您的動作給使用者為盡可能減少來回對話, Google 助理也會嘗試掃描使用者查詢內容的參數 並傳遞至動作
如欲查看 Google 助理支援的內建意圖完整清單 包括參數和使用者查詢範例 內建意圖參考資料。
整合內建意圖
動作方法會因建立動作的方式而異 整合內建意圖
Dialogflow
如果你使用 Dialogflow 建立動作,可以附加內建意圖 透過 Dialogflow 主控台建立圖形。
如要透過 Dialogflow 附加內建意圖,請按照下列步驟操作:
- 開啟 Dialogflow 主控台,選取您的代理程式,然後前往 「Intents」(意圖) 畫面。
建立或選取代理程式在收到回應時觸發的意圖 特定內建意圖開啟「事件」部分,然後按一下「新增」 活動。
在「事件」欄位中,輸入應用程式中內建意圖事件的名稱。 (例如
actions_intent_PLAY_GAME
)。按一下 [儲存]。
Actions SDK
如果您使用 Actions SDK 建立動作,就必須指定 內建意圖和動作套件中的「動作」之間的對應。
如要透過 Actions SDK 附加內建意圖,請按照下列步驟操作:
- 在 Action 定義的名稱欄位中指定內建意圖。
- 使用
gactions
工具將動作套件上傳至 Actions 專案,如下所示: 如「Actions SDK 總覽」一文所述。
舉例來說,下列程式碼片段說明如何新增 CHECK_AIR_QUALITY
內建意圖:
{
"actions":[
{
"description":"Default Welcome Intent",
"name":"MAIN",
"fulfillment":{
"conversationName":"conversation_1"
},
"intent":{
"name":"actions.intent.MAIN"
}
},
{
"description":"Check Air Quality",
"name":"CHECK_AIR_QUALITY",
"fulfillment":{
"conversationName":"conversation_1"
},
"intent":{
"name":"actions.intent.CHECK_AIR_QUALITY"
}
}
],
"conversations":{
"conversation_1":{
"name":"conversation_1",
"url":"https://example.com/fulfillment",
"fulfillmentApiVersion":2
}
}
}
處理內建意圖參數
透過內建意圖叫用動作時,執行要求可能會 接收額外參數。意圖結構定義會定義 參數及其類型做為原始類型或 schema.org 實體。如要查看 Conversational Action 內建意圖的結構定義,請參閱 內建意圖參考資料。
您可以選擇是否使用內建意圖的參數。Google 助理會處理 這類參數如果可從使用者的叫用中擷取 以及內建意圖
例如 actions.intent.CHECK_AIR_QUALITY
內建函式的結構定義
意圖會定義四個選用參數:
參數名稱 | 類型 |
---|---|
attributes |
字串值。 |
location |
schema.org/Place 物件。 |
temporalCoverage |
schema.org/Duration 物件。 |
timeIndicator |
EnumeratedDuration (Google 專屬擴充功能)。 |
下列程式碼片段是對話 Webhook (JSON) 的範例 並在使用者叫用您的動作時,要求系統提供「現在的空氣品質如何?」 明天是舊金山嗎?」:
"inputs":[
{
"intent":"actions.intent.CHECK_AIR_QUALITY",
"rawInputs":[
{
"inputType":"VOICE",
"query":"what is the air quality in san francisco tomorrow"
}
],
"arguments":[
{
"name":"location",
"structuredValue":{
"geo":{
"longitude":-122.41941550000001,
"latitude":37.7749295
},
"@context":"https://schema.org",
"@type":"Place",
"name":"san francisco"
}
},
{
"name":"temporalCoverage",
"rawText":"2018-04-25",
"textValue":"2018-04-25"
}
]
}
]
在這個範例中,參數採用下列值:
location
參數包含schema.org/Place
的值。temporalCoverage
參數包含schema.org/Duration
值。attributes
和timeIndicator
參數沒有任何值 因為使用者的叫用詞組不包含這類資訊。
如果您使用的是 Actions on Google 用戶端程式庫 for Node.js, 您可以擷取參數的值,如以下程式碼片段所示:
app.intent('actions.intent.CHECK_AIR_QUALITY', (conv) => {
const attributes = conv.arguments.get('attributes');
const location = conv.arguments.get('location');
const temporal_coverage = conv.arguments.get('temporalCoverage');
Const time_indicator = conv.arguments.get('timeIndicator')
// Your Action logic. If you need to use any of the parameter values,
// you should check first that it is defined. Arguments.get returns
// undefined if it can't find a value for a parameter.
});
測試與內建意圖的整合作業
請按照下列步驟測試整合作業:
- 在已啟用測試動作的情況下開啟動作模擬工具,或是開啟 裝置上的 Google 助理
- 說出或輸入與該內建意圖相關聯的查詢。例如: 「我想玩遊戲。」
- 在畫面顯示的應用程式選項對話方塊中,找出你的動作。
- 選取要將意圖傳送至應用程式的應用程式。
使用內建意圖的最佳做法
使用內建意圖時,請務必遵循下列最佳做法:
- 將內建意圖對應至特定動作:當特定內建意圖時
觸發動作、將使用者導向特定意圖
讓動作變得更加流暢適用對象
舉例來說,如果您的動作支援
PLAY_GAME
內建意圖,且 收到該意圖後,您就應立即將使用者導向遊戲功能 動作。如果使用者想玩遊戲,請避免再次詢問使用者。 - 處理內建意圖參數:請務必使用內建意圖 參數值。 避免重複提示使用者輸入這些值。