功能描述
小程序客服消息,使用开发者服务器接收消息推送,应用可以正常接收到客服消息;然后如果客户输入“转人工”后,需要将消息转发到客服系统,然后通过官方提供的客服界面,进行人工回复
功能实现
public Object sendCustomerServiceMsg(HttpServletRequest request) throws IOException, WxErrorException {
BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null){
responseStrBuilder.append(inputStr);
}
WxMaMessage message = WxMaMessage.fromJson(responseStrBuilder.toString());
log.info("接收到微信客服的消息内容,通过WxMessage转json后内容为:{}", JSON.toJSONString(message));
if (message.getMsgType().equals("event")) {
log.info("收到微信客服消息为event类型");
return "success";
}
//todo 此处判断有问题
if (WxMaConstants.KefuMsgType.TEXT.equals(message.getMsgType()) && message.getContent().contains("转人工")) {
// 设置转到客服消息 进行人工回复
WxMaXmlOutMessage wxMaXmlOutMessage = new WxMaXmlOutMessage();
wxMaXmlOutMessage.setCreateTime(message.getCreateTime().longValue());
wxMaXmlOutMessage.setFromUserName(message.getToUser());
wxMaXmlOutMessage.setToUserName(message.getFromUser());
wxMaXmlOutMessage.setMsgType("transfer_customer_service");
// 这里注意 如果你在配置消息推送是是xml 返回xml 如果是json返回json
log.info("收到需要转人工的消息,具体信息为:{}", JSON.toJSONString(wxMaXmlOutMessage));
//使用fastjson,将对象转换为JSON
return JSON.toJSON(wxMaXmlOutMessage);
} else {
//根据message中的msgId,判断消息是否重复
...
WxMaKefuMessage kefuMessage = new WxMaKefuMessage();
kefuMessage.setToUser(message.getFromUser());
String recoverMsg = "您好,收到了您的反馈,请稍等!";
WxMaKefuMessage.KfText text = new WxMaKefuMessage.KfText(recoverMsg);
kefuMessage.setText(text);
kefuMessage.setMsgType(WxMaConstants.KefuMsgType.TEXT);
wxMaMsgService.sendKefuMsg(kefuMessage);
return "success";
}
}
问题描述
微信平台中,功能-客服-小程序中,配置如下:
1.应用可以正常收到客户发送的客服消息(与预期一致)
2.如果客户发送“转人工”,此时在官方客服界面,未收到相关的消息,相关的请求如下:
{"createTime":1723687264,"fromUserName":"gh_2df7****f064","msgType":"transfer_customer_service","toUserName":"oVGMq5CW*****MZVOQyx2VM"}
如果在功能-客服-小程序中,将“在官方客服工作平台收发消息”开启后
官方客服界面可以正常收到消息提醒,但是应用中收不到客户发送的消息
有遇到过类似情况的大佬吗?请帮忙指点
上述问题,已解决,具体解决方案为:
需要将客服消息转发到客服系统时,需要严格按照微信的要求返回给微信,如:createTime、fromUserName、msgType、toUserName这四个字段,必须要首字母大写,即使使用的是JSON格式接收和返回,所以返回的字段必须是:CreateTime、FromUserName、MsgType、ToUserName
然后需要将微信客服消息转发给客服系统,需要注意的点有:
{"CreateTime":1723707466,"FromUserName":"gh_2d***24f064","MsgType":"transfer_customer_service","ToUserName":"oVGMq5C***GBKjMZVOQyx2VM"}