小程序客服消息开发的坑

最近在研究小程序怎么引导关注微信公众号,发现联系客服,然后自动下发图片&链接是比较主流的做法

但是微信官方提供的在线客服功能实在是弱爆了,只提供自动文字回复,没办法满足需求

又看了几个第三方的客服系统,发现收费还是挺贵的,而且很多有小程序接入数量的限制

所以决定研究下如何让小程序自动回复图文的功能,开发下来发现微信的开发文档实在写的太含糊了,就把开发过程中会碰到的一些坑记录一下,为后来的开发者节约一些时间

微信官方客服消息文档 虽然里面很多坑,但是开发的时候还是要看的。

微信公众平台接口调试工具 可以来调试功能,可以直接看到返回结果

第一步:填写服务器配置

登录微信小程序官网后,在小程序官网的“设置-消息服务器”页面,管理员扫码启用消息服务,填写服务器地址(URL)、Token 和 EncodingAESKey。

我选择了加解密方式为安全模式 数据格式选择JSON格式

小程序客服消息开发的坑_第1张图片

配置完成前 要确保你的服务已经完成第一步开发任务 - 验证消息的确来自微信服务器

微信服务器将发送GET请求到填写的服务器地址URL上

signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

timestamp时间戳

nonce随机数

echostr随机字符串

开发者通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。

这边的第一个坑是返回 echostr 参数内容,文档标着是字符串,如果是原路返回字符串,那么永远是失败的。我用的是java 返回字符串就会加上"",所以要去掉""才是成功的

第二步:接收消息和事件

验证通过后,用户的每次行为都会发一条消息到你的服务器,这时候要做的就是根据消息类型和内容进行不同的处理。

这边要注意的有两个:

1.选择了消息推送的格式为json的话,那么你跟微信之间的数据都是以json的形式来传输

2.如果选择了安全模式,那么微信上行的消息都会被加密,需要自行解密后使用,方式可以参考官方的代码 加密解密官方DEMO

小程序客服消息开发的坑_第2张图片

如果选择安全模式,那么你在后台是取不到这样的数据的,微信会JSON POST上去

{ "ToUserName": "xxxxx", "Encrypt": "xxxxxx"}

这样的数据格式,需要自行解密才能拿到文档写的数据格式,这是第二个坑

第三步: 发送客服消息

接入微信客服消息最重要的目的就是为了完成自动回复的,这边文档写的挺清楚的,可以直接查看官方文档

第四步:转发客服消息

第三步完成了自动回复,但是大部分的消息还是希望可以发送到人工客服那边去。

所以我们需要在响应包中返回 MsgType 为 transfer_customer_service 的消息,微信服务器收到响应后会把当次发送的消息转发至客服系统。

小程序客服消息开发的坑_第3张图片

这边有两个坑

一个是需要注意FromUserName 这个参数,这边需要填写的是接收消息时候的ToUserName参数,返回参数里的ToUserName参数要填写的时候接收消息时候的OpenID,CreateTime 就用接收消息时候的timestamp就可以。

第二个是虽然它上行的消息是加密的,但是返回的时候是不需要加密的。

以上就是在开发微信小程序客服消息遇到的一些坑,希望可以节约新入坑的开发者一些时间。

你可能感兴趣的:(小程序客服消息开发的坑)