【发布时间】:2020-06-10 09:34:55
【问题描述】:
我正在尝试在 Go 中为 Dialogflow 编写一个 webhook,我正在使用官方 SDK 的 apiv2
google.golang.org/genproto/googleapis/cloud/dialogflow/v2
但我无法使用官方 sdk 生成正确的响应。
我的意思是,按照文档和 WebhookResponse 结构,我无法为响应生成预期的 json。
这是我正在使用的一段代码:
response = dialogflow.WebhookResponse{
FulfillmentMessages: []*dialogflow.Intent_Message{
{
Message: &dialogflow.Intent_Message_Card_{
Card: &dialogflow.Intent_Message_Card{
Title: "Title",
Subtitle: "Subtitle",
ImageUri: "https://example.com/images/example.png",
Buttons: []*dialogflow.Intent_Message_Card_Button{
{
Text: "Button",
Postback: "https://example.com/path/for/end-user/to/follow",
},
},
},
},
},
},
}
这是它生成的 json:
{
"fulfillment_messages": [
{
"Message": {
"Card": {
"title": "Title",
"subtitle": "Subtitle",
"image_uri": "https://example.com/images/example.png",
"buttons": [
{
"text": "Button",
"postback": "https://example.com/path/for/end-user/to/follow"
}
]
}
}
}
]
}
但这是我应该发回的json(根据official documentation)
"fulfillmentMessages": [
{
"card": {
"title": "card title",
"subtitle": "card text",
"imageUri": "https://example.com/images/example.png",
"buttons": [
{
"text": "button text",
"postback": "https://example.com/path/for/end-user/to/follow"
}
]
}
}
]
}
所以我的 json 不起作用,因为它有不应该存在的 Message 和带有大写首字母的 Card。我尝试发送文档的 json 并且它有效,Dialog Flow 正确响应。
我不明白如何使用官方 SDK 生成正确的 json。请考虑到我是使用 Go Lang 的新手。这是我的第一个项目。
这是我目前正在使用的文档: https://pkg.go.dev/google.golang.org/genproto/googleapis/cloud/dialogflow/v2?tab=doc#WebhookResponse 如您所见,FulfillmentMessages 是 Intent_Message
的数组FulfillmentMessages []*Intent_Message
Intent_Message 必须包含 Message(here 文档)
提前感谢您的任何帮助和建议。
H2K
更新: 如果我使用 log.Println(response) 我可以在日志中看到正确的响应
fulfillment_messages:{card:{title:"Title" subtitle:"Subtitle" image_uri:"https://example.com/images/example.png" buttons:{text:"Button" postback:"https://example.com/path/for/end-user/to/follow"}}}
不是JSON但结构正确,没有Message,没有Card...
所以问题是当我用 Gin 和命令返回它时:
c.JSON(200, response)
【问题讨论】:
标签: json go sdk response dialogflow-es