Google Actions on Dialogflow SDK无法获取UPDATES_USER_ID [英] Actions-on-Google can not get UPDATES_USER_ID on Dialogflow SDK

查看:42
本文介绍了Google Actions on Dialogflow SDK无法获取UPDATES_USER_ID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在设置一个使用推送通知的操作。但是,在Firebase上,我无法保存用户 UPDATES_USER_ID。它返回未定义。



我遵循了链接,这是我的代码,用于获取UPDATES_USER_ID。

  app.intent('设置,(转换,参数)=> {
conv.ask(new UpdatePermission({
intent: notificationResponseIntent
}));
});

app.intent( FinishNotificationSetup,(conv,params)=> {
if(conv.arguments.get('PERMISSION')){
conv.data .GoogleUserID = conv.arguments.get( UPDATES_USER_ID);
console.log(conv.data.GoogleUserID);
conv.ask( some response ....);
}
});

这是调用FinishNotificationSetup意图时的Webhook请求。

  {
responseId: 2f425fe5-db42-47dc-90a1-c9bc85f725d2,
queryResult:{
queryText: actions_intent_PERMISSION,
parameters:{},
allRequiredParamsPresent:true,
fulfillmentMessages:[
{
text:{
text:[

]
}
}
],
outputContexts:[
{
name:项目/项目名称/代理/会话/ ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwA $ b_s $ b_s $ b_s $ b_s $ b_s $ b_s $ b_s_b_b : projects / projectname-10c22 / agent / sessions / ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA / contexts / actions_intent_per_b:$ b b $ b}
},
{
n ame:项目/项目名称-10c22 / agent / sessions / ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA / contexts / $$ b, $ b \ ***:\ ***,\ ***:\ ***}
}
},
{
名: 项目/项目名称-10c22 /代理/会话/ ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA /环境/ actions_capability_account_linking
},
{
名:项目/项目名称,10c22 /代理/会话/ ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA /环境/ actions_capability_audio_output
},
{
名: b $ b计划/项目名称-10c22 /代理/会话/ ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA /环境/ google_assistant_input_type_keyboard $ },
{
名: 项目/项目名称-10c22 /代理/会话/ ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA /环境/ actions_capability_web_browser
},
{
名:项目/项目名称-10c22 /剂/ sessions / ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA / contexts / actions_capability_media_agent / name
in,
in: 0f24-45e9-a1b2-5649083831b0,
displayName: FinishNotificationSetup
},
intentDetectionConfidence:1,
languageCode: tr
},
originalDetectIntentRequest:{
source: google,
version: 2,
payload:{
isInSandbox:true,
surface:{
capabilities:[
{
name: actions.capability.SCREEN_OUTPUT
},
{
name: actions.capability.WEB_BROWSER
},
{
name: actions.capability.ACCOUNT_LINKING
},
{
name: actions.capability.MEDIA_RESPONSE_AUDIO
},
{
name: actions.capability.AUDIO_OUTPUT
}
]
},
requestType:模拟器,
输入:[
{
rawInputs: [
{
inputType:键盘
}
],
参数:[
{
textValue: true,
name: PERMISSION,
boolValue:true
},
{
name: text
}
],
intent: actions.intent.PERMISSION
}
],
我们er:{
lastSeen: 2019-04-30T07:23:23Z,
权限:[
UPDATE
],
语言环境: TR-TR,
的用户id: ABwppHHCEdtf23ZaNg0DaCv3fvshSUXUvYGXHe6kR7jbKacwIS6vDBBL7YXbN70jYa8KaXWZqbsyhFFSdsYLiw
},
对话:{
的conversationId: ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA,
type: ACTIVE,
conversationToken: [\ _actions_on_google\]
},
availableSurfaces:[
{
capabilities:[
{
name: actions.capability.AUDIO_OUTPUT
},
{
name:动作。 Capacity.SCREEN_OUTPUT
},
{
name: actions.capability.WEB_BROWSER
}
]
}
]
}
},
ses sion:项目/项目名称10c22 /代理/会话/ ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA
$ $$$$要发送通知,我一直在使用userID而不是UPDATES_USER_ID,并且它正在运行。但是,它将很快被弃用。因此,我需要找到一种解决方案来获取此ID,并且无法使其正常工作。我需要怎么做才能获得此ID?

解决方案

我找到了解决此问题的方法。在获取 UPDATES_USER_ID 时,conv.arguments.get()仅适用于首次尝试。因此,在构建动作时必须保存它。如果您没有存储或保存,则可以重设个人资料,然后再试一次,您将可以获取。

  app.intent( FinishNotificationSetup,(conv,params)=> {
if(conv.arguments .get('PERMISSION')){
if(!conv.user.storage.GoogleUserID)
{
conv.user.storage.GoogleUserID = conv.arguments.get( UPDATES_USER_ID );
//最好的情况下
//在数据库中存储ID。
}
console.log(conv.user.storage.GoogleUserID);
conv .ask( some response ....);
}
});

最好的情况下,请尝试将其保存到数据库中,因为conv.user.storage有时不起作用。


I'm setting up an action which uses push notifications. Yet, on firebase I can't get "UPDATES_USER_ID" of user to save. It returns "undefined".

I followed the guide on this link and here is my code to get UPDATES_USER_ID.

app.intent('Setup', (conv, params) => {
  conv.ask(new UpdatePermission({
    intent: "notificationResponseIntent"
    }));
});

app.intent("FinishNotificationSetup", (conv, params) => {    
  if (conv.arguments.get('PERMISSION')) {
      conv.data.GoogleUserID =  conv.arguments.get("UPDATES_USER_ID");
      console.log(conv.data.GoogleUserID);
      conv.ask("some response....");
    } 
});

And here is my webhook request when FinishNotificationSetup intent is invoked.

{
  "responseId": "2f425fe5-db42-47dc-90a1-c9bc85f725d2",
  "queryResult": {
    "queryText": "actions_intent_PERMISSION",
    "parameters": {},
    "allRequiredParamsPresent": true,
    "fulfillmentMessages": [
      {
        "text": {
          "text": [
            ""
          ]
        }
      }
    ],
    "outputContexts": [
      {
        "name": "projects/projectname/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/actions_capability_screen_output"
      },
      {
        "name": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/actions_intent_permission",
        "parameters": {
          "PERMISSION": true,
          "text": ""
        }
      },
      {
        "name": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/_actions_on_google",
        "lifespanCount": 98,
        "parameters": {
          "data": "{\"***":\"***",\"***":\"***"}"
        }
      },
      {
        "name": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/actions_capability_account_linking"
      },
      {
        "name": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/actions_capability_audio_output"
      },
      {
        "name": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/google_assistant_input_type_keyboard"
      },
      {
        "name": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/actions_capability_web_browser"
      },
      {
        "name": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA/contexts/actions_capability_media_response_audio"
      }
    ],
    "intent": {
      "name": "projects/projectname-10c22/agent/intents/a12b6d3f-0f24-45e9-a1b2-5649083831b0",
      "displayName": "FinishNotificationSetup"
    },
    "intentDetectionConfidence": 1,
    "languageCode": "tr"
  },
  "originalDetectIntentRequest": {
    "source": "google",
    "version": "2",
    "payload": {
      "isInSandbox": true,
      "surface": {
        "capabilities": [
          {
            "name": "actions.capability.SCREEN_OUTPUT"
          },
          {
            "name": "actions.capability.WEB_BROWSER"
          },
          {
            "name": "actions.capability.ACCOUNT_LINKING"
          },
          {
            "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
          },
          {
            "name": "actions.capability.AUDIO_OUTPUT"
          }
        ]
      },
      "requestType": "SIMULATOR",
      "inputs": [
        {
          "rawInputs": [
            {
              "inputType": "KEYBOARD"
            }
          ],
          "arguments": [
            {
              "textValue": "true",
              "name": "PERMISSION",
              "boolValue": true
            },
            {
              "name": "text"
            }
          ],
          "intent": "actions.intent.PERMISSION"
        }
      ],
      "user": {
        "lastSeen": "2019-04-30T07:23:23Z",
        "permissions": [
          "UPDATE"
        ],
        "locale": "tr-TR",
        "userId": "ABwppHHCEdtf23ZaNg0DaCv3fvshSUXUvYGXHe6kR7jbKacwIS6vDBBL7YXbN70jYa8KaXWZqbsyhFFSdsYLiw"
      },
      "conversation": {
        "conversationId": "ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA",
        "type": "ACTIVE",
        "conversationToken": "[\"_actions_on_google\"]"
      },
      "availableSurfaces": [
        {
          "capabilities": [
            {
              "name": "actions.capability.AUDIO_OUTPUT"
            },
            {
              "name": "actions.capability.SCREEN_OUTPUT"
            },
            {
              "name": "actions.capability.WEB_BROWSER"
            }
          ]
        }
      ]
    }
  },
  "session": "projects/projectname-10c22/agent/sessions/ABwppHGD33Tyho41g9Mr2vzxePlskNmvOzCTxUiDGzENcl3C7RQs94aOQ8ae_DUlOApR0VBO9DuwAWdWr2frAA"
}

To send notification, I've been using userID instead of UPDATES_USER_ID and it is working. Yet, it will be deprecated soon. So, I need to find a solution to get this ID and couldn't make it working. What do I need to do to get this ID?

解决方案

I've found solution for this problem. While getting UPDATES_USER_ID conv.arguments.get() only works for first attempt. So, while building your action you must save it. If you didn't store or save, you can reset your profile and try again, you will be able to get.

app.intent("FinishNotificationSetup", (conv, params) => {    
     if (conv.arguments.get('PERMISSION')) {
     if(!conv.user.storage.GoogleUserID)
     {
        conv.user.storage.GoogleUserID =  conv.arguments.get("UPDATES_USER_ID");
       //For best case
       //store ID in your db.
     }
     console.log(conv.user.storage.GoogleUserID);
     conv.ask("some response....");
    } 
});

For best case, try saving this to your database because conv.user.storage does not work sometimes.

这篇关于Google Actions on Dialogflow SDK无法获取UPDATES_USER_ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆