如果小程序设置了消息推送,微信用户向小程序客服发送消息时,微信服务器会先将消息 POST 到开发者填写的 URL 上。若希望将该消息转发到网页版客服工具,开发者需要在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后会把当次消息转发至客服系统。
使用自有服务器接收消息推送时,需返回如下格式的 XML 数据:
<xml>
<ToUserName><![CDATA[touser]]></ToUserName>
<FromUserName><![CDATA[fromuser]]></FromUserName>
<CreateTime>1399197672</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>
若使用云函数接收的消息推送,则需在云函数被客服消息触发后返回同样格式的 JSON 数据:
exports.main = async (event, context) => {
// 判断处理客服消息 ...
return {
MsgType: 'transfer_customer_service',
ToUserName: 'touser',
FromUserName: 'fromuser',
CreateTime: parseInt(+new Date / 1000),
}
}
需要注意,只有微信用户主动发来的消息才会被转发;对于用户从小程序唤起客服会话等其他事件,不应转发,否则客服系统会收到无意义的消息。此外,当会话超过 30 分钟客服未关闭时,微信服务器会自动停止转发,消息将恢复推送至开发者填写的 URL。