Poe*_*dit 5 auth0 actions-on-google dialogflow-es
我想用Dialogflow和Google智能助理以及Google Transactions API创建一个聊天机器人,以便用户订购一些商品.现在我的代理包含以下四个意图:
Default Welcome Intent (文字回复:你好,你想买一个巧克力盒吗?)Default Fallback IntentInt3 (培训短语:"是的,我想登录",履行:启用webhook)Int4(事件:actions_intent_SIGN_IN,履行:启用webhook)我使用Dialogflow Json而不是Node.js将我的代理与Transactions API连接起来.我实现了所有必要的步骤来设置Account Linking为Actions on Google以Auth0作为是在帖子中描述,如下面的:
https://productforums.google.com/forum/#!topic/dialogflow/omr_2iZXLxw;context-place=forum/dialogflow
https://www.jovo.tech/blog/google-action-account-linking-auth0/
因此,现在我在对话期间询问用户手机Google智能助理 "你想登录吗?" 然后用户回答"是的,我想登录"哪个触发器Int3.在这种情况下,从我的后端通过webhook我发送以下json:
{
"payload": {
"google": {
"expectUserResponse": true,
"isSsml": false,
"noInputPrompts": [],
"systemIntent": {
"data": {
"@type": "type.googleapis.com/google.actions.v2.SignInValueSpec",
"optContext": "To make the order easier"
},
"intent": "actions.intent.SIGN_IN"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,这会使以下窗口出现在用户的屏幕上:登录窗口
所以我正在按下LOG IN WITH GOOGLE并选择我的一个Gmail帐户.但是,我在Google智能助理上收到以下错误:Sorry, something went wrong. Please try again later
而且我在后端收到以下json作为回复:
{
"responseId": "c65ab8d3-f6e9-4e86-9645-6785b01d3f10",
"queryResult": {
"queryText": "actions_intent_SIGN_IN",
"action": "sign_in",
"parameters": {},
"allRequiredParamsPresent": true,
"fulfillmentMessages": [
{
"text": {
"text": [
""
]
}
}
],
"outputContexts": [
{
"name": "projects/*********/agent/sessions/1527240031183/contexts/actions_capability_screen_output"
},
{
"name": "projects/*********/agent/sessions/1527240031183/contexts/actions_intent_sign_in",
"parameters": {
"SIGN_IN": {
"@type": "type.googleapis.com/google.actions.v2.SignInValue",
"status": "ERROR"
}
}
},
{
"name": "projects/*********/agent/sessions/1527240031183/contexts/actions_capability_audio_output"
},
{
"name": "projects/*********/agent/sessions/1527240031183/contexts/actions_capability_web_browser"
},
{
"name": "projects/*********/agent/sessions/1527240031183/contexts/actions_capability_media_response_audio"
}
],
"intent": {
"name": "projects/*********/agent/intents/75e0bc57-1829-4efe-9e35-dbcaa3da5a77",
"displayName": "Sign_in"
},
"intentDetectionConfidence": 1,
"diagnosticInfo": {},
"languageCode": "en-gb"
},
"originalDetectIntentRequest": {
"source": "google",
"version": "2",
"payload": {
"isInSandbox": true,
"surface": {
"capabilities": [
{
"name": "actions.capability.SCREEN_OUTPUT"
},
{
"name": "actions.capability.MEDIA_RESPONSE_AUDIO"
},
{
"name": "actions.capability.WEB_BROWSER"
},
{
"name": "actions.capability.AUDIO_OUTPUT"
}
]
},
"inputs": [
{
"rawInputs": [
{}
],
"arguments": [
{
"extension": {
"@type": "type.googleapis.com/google.actions.v2.SignInValue",
"status": "ERROR"
},
"name": "SIGN_IN"
}
],
"intent": "actions.intent.SIGN_IN"
}
],
"user": {
"lastSeen": "2018-05-25T09:20:16Z",
"locale": "en-GB",
"userId": "*********"
},
"conversation": {
"conversationId": "1527240031183",
"type": "ACTIVE",
"conversationToken": "[]"
},
"availableSurfaces": [
{
"capabilities": [
{
"name": "actions.capability.SCREEN_OUTPUT"
},
{
"name": "actions.capability.WEB_BROWSER"
},
{
"name": "actions.capability.AUDIO_OUTPUT"
}
]
}
]
}
},
"session": "projects/*********/agent/sessions/1527240031183"
}
Run Code Online (Sandbox Code Playgroud)
返回"status": "ERROR"的SignInValue.
在Auth0日志部分,此登录尝试被描述为成功但交换被描述为失败:
此特定失败交换的特定日志包含以下json:
{
"date": "2018-05-25T09:20:53.786Z",
"type": "feacft",
"description": "Unauthorized",
"connection_id": "",
"client_id": "Xsr3VFE***********",
"client_name": null,
"ip": "66.249.81.44",
"user_agent": "OpenAuth",
"hostname": "*********.eu.auth0.com",
"user_id": "",
"user_name": "",
"log_id": "****************"
}
Run Code Online (Sandbox Code Playgroud)
其中feacft代表Failed to exchange authorization code for Access Token在Auth0.
虽然可能无关紧要,但请注意:
Auth0- > Connections- > Social- > Google- >TRYGo to auth0.com (unsafe)页面:"这未经验证"allow auth0.com to access my Google Account我终于得到了这个:"它有效!"
在Auth0日志部分,我终于得到Success Exchange了这个.
此特定成功交换的特定日志包含以下json:
{
"date": "2018-05-29T08:14:48.843Z",
"type": "seacft",
"description": "",
"connection_id": "",
"client_id": "EXOtUb****************",
"client_name": "N/A",
"ip": "35.160.3.103",
"user_agent": "Node-oauth",
"hostname": "**********.eu.auth0.com",
"user_id": "",
"user_name": "",
"log_id": "*****************"
}
Run Code Online (Sandbox Code Playgroud)
但请注意,在后一种情况下(Success Exchange)client_id,与前一种情况()不同Failed Exchange.在这种Failed Exchange情况下,这client_id是Auth0我创建的应用程序之一,但在Success Exchange我不知道这是什么client_id; 也许它是client_id内部安装的Auth0,用于测试Auth0与其他客户(谷歌,Facebook等)之间的连接.
我怎样才能通过谷歌助理登录成功,并得到"status": "OK"了SignInValue?
到目前为止我做错了什么?
我发现有两个帖子报告了我遇到的错误Auth0(feacft错误):
- https://github.com/auth0/react-native-auth0/issues/62
他们都报告说他们将Auth0应用程序更改为Native(例如从Machine to Machine)并且错误已修复.但是,我测试了这个,到目前为止它对我不起作用.
最后我解决了这个问题,尽管我不太清楚为什么会解决这个问题,所以欢迎对我的答案进行任何额外的解释。请写在下面的评论中。
Auth0面板上Applications现在看起来像这样:
到目前为止,我正在使用该Auth0 Management API (Test Application)应用程序及其在 Actions on Google 上的凭据来完成我上面的帖子中描述的任务。我正在尝试修改此应用程序的一些设置和配置详细信息,但仍然遇到相同的错误。
然后,我想到简单地创建一个新应用程序。我的两个新应用程序 ( New、New2) 在手机上的 Google Assistant 上运行良好。
请记住,据我所知,在应用程序Auth0 Management API (Test Application)和应用程序之间New2,所有配置详细信息和设置都是相同的,因此我不知道为什么后者对我有用而前者对我不起作用。我怀疑前者是一个测试应用程序,因此它的用途非常有限,但我认为它适用于我的项目。
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |