首页 文章

对话流的实现响应

提问于
浏览
1

刚开始使用DialogFlow构建应用程序 . 我在 Cloud 上托管了Java服务(不使用firebase) . 基本上,我从代理接收数据并将响应作为Json发回 . 对于简单查询,它按预期工作 . 就像我说“我的名字是X”一样,该服务将作为“Hello X”响应,它将在响应中播放 . JSON响应发送为

{speech: "Hello X", type:"0"}

现在,我想获取用户位置,因此我想要求用户访问该位置的权限 . 我有一个单独的意图,没有任何training_Phrases . 它有一个事件actions_intent_PERMISSION .

我发送以下回复

{
  "conversationToken": "[\"_actions_on_google_\"]",
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "PLACEHOLDER_FOR_PERMISSION"
              }
            }
          ]
        }
      },
      "possibleIntents": [
        {
          "intent": "actions.intent.PERMISSION",
          "inputValueData": {
            "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
            "optContext": "To locate you",
            "permissions": [
              "NAME"
            ]
          }
        }
      ],
      "speechBiasingHints": [
        "$geo_city",
        "$event_category",
        "$event_date"
      ]
    }
  ],
  "responseMetadata": {
    "status": {},
    "queryMatchInfo": {
      "queryMatched": true,
      "intent": "1ec64dc5-a6f4-44f6-8483-633b8638c729"
    }
  }
}

但我收到的响应为400 Bad request . 我在这里做错了什么或者我错过了什么?

1 回答

  • 1

    有三个问题 .

    第一个是响应权限请求发送 actions_intent_PERMISSION 事件 . 所以这不应该是触发请求的意图 .

    其次,您要求的是用户名,而不是他们的位置 . 你想要 DEVICE_COARSE_LOCATIONDEVICE_PRECISE_LOCATION .

    第三个也是更大的问题是你使用Dialogflow的JSON,你将使用different response format这是基本的Dialogflow response,以及 data.google JSON属性中Google特定内容的动作 .

    您的回复应该看起来像这样:

    {
      "data": {
        "google": {
          "expectUserResponse": true,
          "systemIntent": {
            "intent": "actions.intent.PERMISSION",
            "data": {
              "@type": "type.googleapis.com/google.actions.v2.PermissionValueSpec",
              "optContext": "To locate you",
              "permissions": [
                "NAME",
                "DEVICE_PRECISE_LOCATION"
              ]
            }
          }
        }
      }
    }
    

    Dialogflow还有some other examples的请求和回复,这些请求和回复应该有助于对话的其他部分 .

相关问题