java - 为什么 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
解决方案
您使用的库主要设计为客户端库,可让您将文本发送到 Dialogflow 并让它从该文本中确定 Intent 和参数(可能还有响应)。
听起来您正试图在另一端使用它 - 在 webhook 中处理履行。它只是不是为此而设计的。该类是从ProtoBuf 定义自动生成的,它不会序列化为 JSON,也不是为了以这种方式表示事物。
您需要自己为响应构建 JSON。
推荐阅读
- django - 为什么 Django upvote 只增加最新添加项目的投票?
- python - 如何使用 asyncio 和 multiprocess.map 获取数据
- python - 一些 Unix 命令失败并显示“
未找到”,当使用 Python Paramiko exec_command 执行时 - pdf-generation - 使用 DinkToPdf 分隔分页符
- com - SafeArrayTypeMismatchException
- scala - 在 Scala 中设计一个通用特征
- android - MapBox Android 插件:在活动中显示位置搜索栏
- javascript - 无法单击表格单元格以打开记录
- python-3.x - 比较两个日期时间字符串python
- dart - 隐藏在键盘后面的文本字段