微信小程序> 微信小程序接收客服消息时遇到的坑

微信小程序接收客服消息时遇到的坑

浏览量:652 时间: 来源:见悦

最近开发微信小程序, 使用到了客服消息功能, 开发文档中这样描述: 

接收消息和事件

在页面中使用 <button open-type="contact" /> 可以显示进入客服会话按钮。

当用户在客服会话发送消息(或进行某些特定的用户操作引发的事件推送时),微信服务器会将消息(或事件)的数据包(JSON或者XML格式)POST请求开发者填写的URL。开发者收到请求后可以使用发送客服消息接口进行异步回复。

用户在客服会话中发送文本消息时将产生如下数据包:

{"ToUserName": "toUser","FromUserName": "fromUser","CreateTime": 1482048670,"MsgType": "text","Content": "this is a test","MsgId": 1234567890123456}

也就是说微信服务器会把这个数据包post到我的服务器上, 我的服务器收到数据包后, 就把信息保存到数据库中.  

后台服务器我用的是java平台技术springBoot那一套方案, 我建立一个实体类来映射消息 , 字段名与数据包中的字段名保持一致, 问题来了, 数据包中的字段首字母都是大写的如 ToUserName, java类中字段名一般都是首字母小写的, 为了与数据包保持一致, 那就大写吧, 控制器方法用@RequestBody接收数据包, 写完调试时, 发现死活接收不到数据, 都是null , 没办法, 把字段名首字母改成小写试试, 发现spring直接报错, 说ToUserName没有找到相应的getter方法,  行不通. 

后来一通搜索大法, 找到解决方法如下 :

给实体类属性指定别名,如下:

@JsonProperty(value = "ToUserName")private String toUserName;

问题解决了.  下面亮点来了, 

接着要发送客服消息

小程序开发文档描述如下

客服接口-发消息

接口调用请求说明

http请求方式: POSThttps://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN

各消息类型所需的JSON数据包如下:

发送文本消息

{    "touser":"OPENID",    "msgtype":"text",    "text":    {         "content":"Hello World"    }}

首字母都是小写的, 我猜腾讯内部接收消息和发送消息这两个模块肯定是不同人做的吧 , 对别人马列主义, 对自己自由主义啊, 自己服务器接收消息时按规则来(首字母小写), 发给别人服务器的消息就不按规则了, 囧

最后吐槽下腾讯小程序, 你的服务端示例代码无一例外都是php, 你就不能多写一份java示例吗? 显得对java开发者很不友好

 

微信小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎