首页 > 解决方案 > 为什么 WebhookResponse 构建器会在 json 中创建错误的键?

问题描述

我正在尝试利用com.google.cloud.dialogflow.v2.WebhookResponse与我的对话流代理进行交互。但我在履行期间无法回复代理。

创建的响应不遵循所需的规范,即代理期望 json 是,fulfillmentText: "something"但构建器以fulfillment_text. 关于如何正确使用 API 客户端的文档不足

任何人都有在 java/kotlin 中这样做的经验?

val response = WebhookResponse
                .newBuilder()
                .setFulfillmentText("Hello")
                .build()

println(response)
println(Gson().toJson(response)) 

输出:

履行文本:“你好”

{"bitField0_":0,"fulfillmentText_":"Hello","fulfillmentMessages_":
[],"source_":"","outputContexts_":[],"memoizedIsInitialized":1,"unknownFields":{"fields" :{}},"memoizedSize":-1,"memoizedHashCode":0}

我正在'com.google.cloud:google-cloud-dialogflow:0.75.1-alpha'使用https://cloud.google.com/dialogflow-enterprise/docs/reference/libraries/java

标签: javakotlindialogflow-es

解决方案


您使用的库主要设计为客户端库,可让您将文本发送到 Dialogflow 并让它从该文本中确定 Intent 和参数(可能还有响应)。

听起来您正试图在另一端使用它 - 在 webhook 中处理履行。它只是不是为此而设计的。该类是从ProtoBuf 定义自动生成的,它不会序列化为 JSON,也不是为了以这种方式表示事物。

您需要自己为响应构建 JSON。


推荐阅读