尝试使用 Webhook On Dialogflow 动态提供响应时出现 Webhook 响应错误

我正在尝试在 java 中使用 DialogFlow api 进行 google 操作。我正在使用 Webhook 对 DialogFlow 上的操作进行请求响应,如下图所示。

http://img2.mukewang.com/61cd76d0000195ab16000900.jpg

当尝试此代码时,它工作正常并提供适当的响应,因为对话流具有预定义的操作设施。


代码:


@PostMapping("/webhook")

public ResponseEntity payload(RequestBody FulfillmentResponse fulfillmentResponse) {

   log.info(fulfillmentResponse.getQueryResult().getQueryText());

   return ResponseEntity.ok(HttpStatus.OK);

}

但是当我动态给出响应时。它给了我一个错误。


代码:


@PostMapping("/webhook")

public ResponseEntity payload(RequestBody FulfillmentResponse fulfillmentResponse) {

    log.info(fulfillmentResponse.getQueryResult().getQueryText());

    return ResponseEntity.ok("{\n" + 

            "  \"data\": {\n" + 

            "    \"google\": {\n" + 

            "      \"expectUserResponse\": true,\n" + 

            "      \"richResponse\": {\n" + 

            "        \"items\": [\n" + 

            "          {\n" + 

            "            \"simpleResponse\": {\n" + 

            "              \"textToSpeech\": \"Choose a item\"\n" + 

            "            }\n" + 

            "          }\n" + 

            "        ]\n" + 

            "      },\n" + 

            "      \"systemIntent\": {\n" + 

            "        \"intent\": \"assistant.intent.action.TEXT\",\n" + 

            "        \"data\": {\n" + 

            "          \"@type\": \"type.googleapis.com/google.actions.v2.OptionValueSpec\",\n" + 

            "          \"listSelect\": {\n" + 

            "            \"title\": \"Hello\",\n" + 

            "            \"items\": [\n" + 

            "              {\n" + 

            "}");

}


小怪兽爱吃肉
浏览 216回答 1
1回答

浮云间

我假设您正在使用 Java 构建 JSON 响应。请求从 AoG 发送到调用您的 webhook 的 Dialogflow。在这种情况下,Dialogflow 将原始 AoG 请求包装到“originalDetectIntentRequest”中,如https://developers.google.com/actions/build/json/dialogflow-webhook-json 中所述由于您正在解析 JSON 请求并在您的 webhook 中构建响应,因此您应该参考上述原始 JSON 协议的 URL。希望这可以帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java