Google Assistant API V2, пользовательское хранилище - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь разработать действие Google с API Dialogflow v2

Моя функция сохраняет значение для пользовательского хранилища следующим образом

def save_value(value):
res = {
  "fulfillmentText": "Set value to {}".format(int(value)),
  "payload": {
    "google": {
      "userStorage": str(value)
    }
  }
}
print ("Saved value")
response = jsonify(res)
return response

И я получаю следующее от тестирования в Dialogflow

{
  "fulfillmentText": "Set value to 36237269",
  "payload": {
    "google": {
      "userStorage": "36237269"
    }
  } 
}

Это работает на время сеанса, я могу использовать это в более поздних намерениях через

 value = request_json['originalRequest']['data']['user']['userStorage']

Однако данные сохраняются только для одного сеанса - если я снова вызову свое действие, ничего не будет сохранено.

Это правильный способ использования хранилища пользователей? Кто-нибудь успешно использовал его с Python?

Неудачный «ответ»

{
  "responseMetadata": {
    "status": {
      "code": 10,
      "message": "Failed to parse Dialogflow response into AppResponse because of empty speech response",
      "details": [
        {
          "@type": "type.googleapis.com/google.protobuf.Value",
          "value": "{\"id\":\"816605a7-f7e0-4d37-a490-c84ff63fb7dd\",\"timestamp\":\"2018-11-08T17:18:49.422Z\",\"lang\":\"en-us\",\"result\":{},\"alternateResult\":{},\"status\":{\"code\":206,\"errorType\":\"partial_content\",\"errorDetails\":\"Webhook call failed. Error: 500 Internal Server Error\"},\"sessionId\":\"ABwppHHai3qsY2WPZWezmh9Q_bUF45aD51GbQ81sUDF7iSrRLA2m8KFgZ1ZYavnCv3fAckW1tcoJdydZTXQY5Nw\"}"
        }
      ]
    }
  }
}

Рабочий "ответ"

{
  "conversationToken": "[]",
  "finalResponse": {
    "richResponse": {
      "items": [
        {
          "simpleResponse": {
            "textToSpeech": "Text"
          }
        }
      ]
    }
  },
  "responseMetadata": {
    "status": {
      "message": "Success (200)"
    },
    "queryMatchInfo": {
      "queryMatched": true,
      "intent": "047ad9d9-0180-47f9-88bd-e5ffc8936c08"
    }
  },
  "userStorage": "36237269"
}

Рабочий "Запрос"

{
  "user": {
    "userId": "ABwppHE5H0FKrXKk8PjJyzZJ12OSMQcjxuT2NnfPAgLvai0UsfWEoYE8R_L8qLQdqY29sOnsZhQhE5G4XVVXiGs",
    "locale": "en-US",
    "lastSeen": "2018-11-08T17:18:16Z",
    "userStorage": "36237269"
  },
  "conversation": {
    "conversationId": "ABwppHE6BwK2zIBKxHA8hc9uBGumVgKbbNGHhRVFz7O6yrxxa1WJ_xtKNqhesj3EwNCVlestM-bF6tDWzZhqUXE",
    "type": "ACTIVE",
    "conversationToken": "[]"
  },
  "inputs": [
    {
      "intent": "actions.intent.TEXT",
      "rawInputs": [
        {
          "inputType": "KEYBOARD",
          "query": "when is the next bus"
        }
      ],
      "arguments": [
        {
          "name": "text",
          "rawText": "when is the next bus",
          "textValue": "when is the next bus"
        }
      ]
    }
  ],
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.WEB_BROWSER"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      },
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      }
    ]
  },
  "isInSandbox": true,
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.WEB_BROWSER"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        },
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        }
      ]
    }
  ],
  "requestType": "SIMULATOR"
}

Неудачный "запрос"

{
  "user": {
    "userId": "ABwppHE5H0FKrXKk8PjJyzZJ12OSMQcjxuT2NnfPAgLvai0UsfWEoYE8R_L8qLQdqY29sOnsZhQhE5G4XVVXiGs",
    "locale": "en-US",
    "lastSeen": "2018-11-08T17:18:41Z"
  },
  "conversation": {
    "conversationId": "ABwppHHai3qsY2WPZWezmh9Q_bUF45aD51GbQ81sUDF7iSrRLA2m8KFgZ1ZYavnCv3fAckW1tcoJdydZTXQY5Nw",
    "type": "ACTIVE",
    "conversationToken": "[]"
  },
  "inputs": [
    {
      "intent": "actions.intent.TEXT",
      "rawInputs": [
        {
          "inputType": "KEYBOARD",
          "query": "when is the next bus"
        }
      ],
      "arguments": [
        {
          "name": "text",
          "rawText": "when is the next bus",
          "textValue": "when is the next bus"
        }
      ]
    }
  ],
  "surface": {
    "capabilities": [
      {
        "name": "actions.capability.WEB_BROWSER"
      },
      {
        "name": "actions.capability.MEDIA_RESPONSE_AUDIO"
      },
      {
        "name": "actions.capability.SCREEN_OUTPUT"
      },
      {
        "name": "actions.capability.AUDIO_OUTPUT"
      }
    ]
  },
  "isInSandbox": true,
  "availableSurfaces": [
    {
      "capabilities": [
        {
          "name": "actions.capability.WEB_BROWSER"
        },
        {
          "name": "actions.capability.SCREEN_OUTPUT"
        },
        {
          "name": "actions.capability.AUDIO_OUTPUT"
        }
      ]
    }
  ],
  "requestType": "SIMULATOR"
}
...