将消息转发到客服

原文链接

关于微信小程序客服消息将消息转发到客服的功能,官方文档是这样写的:

如果小程序处于开发模式,普通微信用户向公众号发消息时,微信服务器会先将消息POST到开发者填写的url上,如果希望将消息转发到客服系统,则需要开发者在响应包中返回MsgType为transfer_customer_service的消息,微信服务器收到响应后会把当次发送的消息转发至客服系统。

接下来,还有个调用说明:

<xml> 
  <ToUserName><![CDATA[touser]]></ToUserName>  
  <FromUserName><![CDATA[fromuser]]></FromUserName>  
  <CreateTime>1399197672</CreateTime>  
  <MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>

请求参数说明

参数是否必须描述
ToUserName接收方OpenID账号
FromUserName开发者微信号
CreateTime消息创建时间戳(整型)
MsgTypetransfer_customer_service

那么,问题来了,之前我们都是直接 return "success" 的,现在怎么在响应包中返回MsgType为transfer_customer_service的消息?

网上搜了一遍,都是说直接拼一个字符串返回就行了,例如这样:

return "<xml><ToUserName><![CDATA[oU-j***Jm0]]></ToUserName><FromUserName><![CDATA[gh_***5607]]></FromUserName><CreateTime>164***86</CreateTime><MsgType><![CDATA[transfer_customer_service]]></MsgType></xml>";

但是对于 Java 开发来讲,这样写是不行的,至少我尝试了很多次都是不行的。

可行的方法是:把这个响应包封装成一个 JSON 字符串,例如:

{
    "CreateTime": 164***86,
    "ToUserName": "oU-j***Jm0",
    "FromUserName": "gh_***5607",
    "MsgType": "transfer_customer_service"
}

另外,需要注意的是,如果人工客服接入了,微信就不会再把消息发到我们的服务器上了。需要等30分钟,会话关闭之后,微信才会又重新把消息发送到我们填写的URL上面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值