2017-04-14 54 views
4

當我開始一個動作:對話已開始回調

OK谷歌談我的助手

它會驗證並運行它加載,可用於後續的問題,用戶實體歡迎意圖到API.AI

當我嘗試啓動一個動作:

OK谷歌問我的助手一些問題

它會驗證,但沒有辦法,我加載用戶的實體,因爲我沒有一個會話ID的談話。

當API.AI試圖評估某個問題它不能,因爲用戶實體尚未加載。

似乎唯一的選擇是SlotFilling WebHook ...但如果我有一個選項來定義用戶實體,我真的不需要這個(或者它需要的複雜性)。

在向API.AI發出第一個請求之前,獲取API.AI sessionID(由Google Actions定義)的任何方式?或者任何其他方式來獲得一些WebHook調用API.AI之前包含sessionsID嘗試評估一些問題

回答

0

不幸的是,在會話開始之前,沒有辦法搶先獲取會話標識符。另外,一般的深層鏈接短語應該是靜態的,或者依賴於API.AI已經知道的實體(而不是用戶實體)。

Ok Google talk to <invocation_name> about ... <deep_link_phrase> 

任何動態用戶內容都可能必須在對話期間提供。

根據您嘗試創建的體驗,您可能需要在此重新考慮您的設計。

1

那麼我找到了一個解決方案。 我將一個名爲「EntitiesLoaded」的輸入上下文放到了我所有的深層鏈接問題中。 後來,當我發出:

OK谷歌問我的助手一些問題

它調用備用意圖。 在回退意向我做到以下幾點:

  1. 加載用戶實體
  2. 將「EntitiesLoaded」上下文。
  3. 重新發出原始查詢(已傳遞給後備範圍)。這一次它會起作用。
+0

我忘了說我的Welcome Intent設置了「EntitiesLoaded」上下文。 –

+0

您正在使用API​​重新發出查詢。/查詢端點上的AI API? – Prisoner

+1

是的,我使用/ query端點重新發出查詢。 –