美文网首页
将消息转发到客服

将消息转发到客服

作者: len_清水白 | 来源:发表于2022-03-05 23:57 被阅读0次

    原文链接

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

    如果小程序处于开发模式,普通微信用户向公众号发消息时,微信服务器会先将消息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 消息创建时间戳(整型)
    MsgType transfer_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上面。

    相关文章

      网友评论

          本文标题:将消息转发到客服

          本文链接:https://www.haomeiwen.com/subject/rjdirrtx.html