Действия в Google не могут получить UPDATES_USER_ID в Dialogflow SDK - PullRequest
3 голосов
/ 26 апреля 2019

Я настраиваю действие, которое использует push-уведомления.Тем не менее, в Firebase я не могу получить "UPDATES_USER_ID" пользователя для сохранения.Он возвращает "undefined".

Я следовал руководству по этой ссылке , и вот мой код для получения 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....");
    } 
});

А вот мой запрос на веб-крючок, когдаFinishNotificationSetup намерение вызывается.

{
  "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"
}

Чтобы отправить уведомление, я использовал идентификатор пользователя вместо UPDATES_USER_ID, и он работает.Тем не менее, это будет устаревшим в ближайшее время.Итак, мне нужно найти решение, чтобы получить этот идентификатор, и я не смог заставить его работать.Что мне нужно сделать, чтобы получить этот идентификатор?

1 Ответ

0 голосов
/ 26 июня 2019

Я нашел решение этой проблемы. При получении 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");
       //For best case
       //store ID in your db.
     }
     console.log(conv.user.storage.GoogleUserID);
     conv.ask("some response....");
    } 
});

В лучшем случае попробуйте сохранить это в своей базе данных, потому что conv.user.storage иногда не работает.

...