java - java - 如何在java中正确解析来自对话框流的完整响应?
问题描述
正如您在 Dialogflow 中所知道的,当我们使用履行时,单个响应中可以有多种类型的响应,例如基本卡片、建议、简单响应、链接建议等。如何正确解析此响应以便我们可以拥有一个明确的 Object/JSONObject 区分以后使用的每种类型的响应。我在想有什么办法可以把它解析成这样
{
simpleRespond:[{text:"Hello},{text:hi}],
basicCard:[{title:"MyCard",subTitle:"When I was in school",image:{text:"hi",URL:"photo.jpg"}}],
suggestion:[{text:"banana"},{text:"Apple"}]
and other response
}
谢谢
解决方案
要知道如何正确填充webhook 响应,包含多个消息和不同类型,我认为您可以专注于该fulfillment_messages[]
字段。
请注意,我使用的是 WebhookResponse V2 RPC参考。
可以看到该fulfillment_messages[]
字段可以包含一个Message
对象列表,其结构如下:
{
"text": {
"text": [
"Text response from webhook"
]
}
}
其中text
对象是丰富的响应消息,并且只能是引用中指定的一个。
基于此,您可以fulfillment_messages[]
从 WebhookResponse 对象准备字段,如下所示:
{
"fulfillment_messages": [
{
"text": {
"text": [
"Message object sample 1"
]
}
},
{
"card": {
"title": "card title",
"subtitle": "Message object sample 2"
}
},
{
"text": {
"text": [
"Message object sample 3"
]
}
}
]
}
注意:使用此列表的实际最终结果以及 Dialogflow 的处理方式可能不是您想要的,因此我建议您进行一些测试以了解 Dialogflow 将如何处理它们。据我所知,Dialogflow 可能会在这里做几件事,它可能会尝试将它们放在一起,或者它可能会选择一条随机消息。
推荐阅读
- autosys - 季度开始后第 40 天的作业触发
- reactjs - 带有按钮的antd表格分页
- python-3.x - 如何重命名日期时间类型的列名?
- javascript - 将ckeditor数据转换为html
- amazon-sumerian - AWS Sumerian 场景中的参数化
- c - 如何进行`if`检查输入的单词是否等于C中字符串列表中的某个单词?
- javascript - Playwright JS:如何计算动态表列的 SUM 和带有总值的断言?
- python - 循环并分配给熊猫数据框的更快方法?
- azure - 如何在存储帐户 blob 容器中引用 VHD - Imagereference Id
- database - 创建具有多个数据库的应用程序