上述问题,已解决,具体解决方案为: 需要将客服消息转发到客服系统时,需要严格按照微信的要求返回给微信,如:createTime、fromUserName、msgType、toUserName这四个字段,必须要首字母大写,即使使用的是JSON格式接收和返回,所以返回的字段必须是:CreateTime、FromUserName、MsgType、ToUserName 然后需要将微信客服消息转发给客服系统,需要注意的点有: 如果你在配置消息推送是是xml 返回xml,如果是json返回jsonfromUserName字段,需要用message.getToUser()的值;ToUserName字段,需要用message.getFromUser()的值;msgType的值,需要用transfer_customer_servicejson中key的值,必须严格按照微信官方文档中提供的key,所以返回的字段必须是:CreateTime、FromUserName、MsgType、ToUserName(***这个很重要***)返回给客服消息的json(如果接收是用json),最好将json中key按照首字母进行排序(此处需要验证,我是排序了){"CreateTime":1723707466,"FromUserName":"gh_2d***24f064","MsgType":"transfer_customer_service","ToUserName":"oVGMq5C***GBKjMZVOQyx2VM"}
小程序客服消息,使用开发者服务器接收消息推送,将消息转发到客服系统功能描述 小程序客服消息,使用开发者服务器接收消息推送,应用可以正常接收到客服消息;然后如果客户输入“转人工”后,需要将消息转发到客服系统,然后通过官方提供的客服界面,进行人工回复 功能实现 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"} 如果在功能-客服-小程序中,将“在官方客服工作平台收发消息”开启后 [图片] 官方客服界面可以正常收到消息提醒,但是应用中收不到客户发送的消息 有遇到过类似情况的大佬吗?请帮忙指点
08-15