[英]Google Assistant - Account linking with Google Sign-In
我有一個 Express 應用程序,它支持通過護照進行 Google 身份驗證和授權。 我已經開始將它與 Google Assistant 集成,事情進展得很順利,但我在鏈接帳戶時遇到了問題,如https://developers.google.com/actions/identity/google-sign-in#start_the_authentication_flow 所述
使用https://codelabs.developers.google.com/codelabs/actions-2/#4上的文檔中的方法,我能夠獲取用戶詳細信息,但是當我嘗試修改以支持
app.intent('Start Signin', conv => {
conv.ask(new SignIn('To get your account details'))
})
和
app.intent('Get Signin', (conv, params, signin) => { ...}
對話流總是回退到我的默認回退意圖,我在 Express 控制台中收到錯誤
Error: Dialogflow IntentHandler not found for intent: Default Fallback Intent
我的對話流意圖設置為使用 webhook,其他意圖工作正常(直到我添加這些登錄意圖!)
閱讀此線程Dialogflow IntentHandler not found for Intent: myIntent (Dialogflow V2)有人建議使用意圖名稱而不是操作名稱,因此我檢查了我在 Google 模擬器上的操作,請求包含:
"inputs": [
{
"intent": "actions.intent.SIGN_IN",
"rawInputs": [
{
"inputType": "KEYBOARD"
}
],
"arguments": [
{
"name": "SIGN_IN",
"extension": {
"@type": "type.googleapis.com/google.actions.v2.SignInValue",
"status": "OK"
}
}
]
}
],
所以我嘗試將我的 Dialogflow 意圖名稱更新為actions.intent.SIGN_IN
並相應地修改我的 Express 應用程序中的意圖名稱,但沒有任何區別。
模擬器響應包括:
"responseMetadata": {
"status": {
"code": 14,
"message": "Webhook error (206)"
},
但我不確定這是否僅僅是因為出於某種原因意圖名稱不匹配。 非常感謝任何幫助!
正如您在評論中推測的那樣,問題在於您的“獲取登錄”意圖未注冊以獲取指示用戶已登錄(或未能登錄)的事件。 由於沒有這樣的 Intent 設置,它最終會調用 Fallback Intent,它顯然沒有在您的 webhook 中注冊 Intent Handler。
要使您的“獲取登錄”意圖獲得登錄事件,請將“事件”字段設置為actions_intent_SIGN_IN
。 (注意與您在模擬器中看到的 Intent 名稱相似,但使用下划線而不是點。)
順便說一句,模擬器向您展示了 Assistant 和 Dialogflow 之間的通信是什么樣的,因此理解 Dialogflow 用它做什么可能會有些混亂。 它與您的意圖或其他任何名稱的名稱無關。
最后,通常不需要進行此檢查。 您將知道用戶是否因為已設置身份驗證令牌或已設置 id 令牌(取決於您的帳戶鏈接方法)而登錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.