首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go对话框流sdk WebhookResponse没有返回正确的json

Go对话框流sdk WebhookResponse没有返回正确的json
EN

Stack Overflow用户
提问于 2020-06-10 09:34:55
回答 1查看 118关注 0票数 0

我正在尝试在对话框流中编写webhook,我使用的是官方SDK的apiv2

代码语言:javascript
复制
google.golang.org/genproto/googleapis/cloud/dialogflow/v2

但我无法使用官方sdk生成正确的响应。

我的意思是,在文档和WebhookResponse结构之后,我无法为响应生成预期的json。

这是我正在使用的代码:

代码语言:javascript
复制
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:

代码语言:javascript
复制
{
  "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 (根据正式文件)。

代码语言:javascript
复制
  "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不起作用,因为它有不应该出现的信息,还有带有大写字母的卡片。我试着发送文档的json,它工作正常,对话框流的响应是正确的。

我不明白如何使用官方SDK生成正确的json。请考虑一下,我是刚开始使用高朗的。这是我的第一个项目。

这是我目前正在使用的文档:如您所见,FulfillmentMessages是一个Intent_Message数组。

代码语言:javascript
复制
FulfillmentMessages []*Intent_Message

Intent_Message必须包含消息(这里,文档)

提前感谢您的帮助和建议。

H2K

更新:如果我使用log.Println(响应),我可以在日志中看到正确的响应

代码语言:javascript
复制
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,但是结构是正确的,没有消息,没有卡片.

所以问题是当我用Gin和命令返回它时:

代码语言:javascript
复制
c.JSON(200, response)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-10 11:55:07

我找到解决办法了!

我需要使用jsonpb封送处理程序,并将它作为字符串返回给Gin。

这里有一个例子:

代码语言:javascript
复制
m := jsonpb.Marshaler{}
result, _ := m.MarshalToString(response)
c.String(200, result)

我完全疯了,我希望它能对别人有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62300331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档