簡體   English   中英

Google 助理 - 與 Google Sign-In 關聯的帳戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM