在小程序里集成客服按钮,应该是个刚需。微信也提供了一个网页版的客服系统供大家免费使用,但是谁会没事坐在电脑跟前呢?万一有个啥事儿没在电脑跟前,客户恰好咨询了,没响应,客户体验就差了。所以,为小程序提供一套智能回复的客服系统是很有必要的。
智能客服系统能够实时响应客户的咨询并且能够根据关键词来回复事先准备好的答案。如果客户咨询内容不包含关键词,则调用图灵机器人的接口来回复。先来看一下效果:
这个系统在小程序端的开发工作非常简单,用客服按钮组件即可将客服按钮添加到小程序内的任意页面,样式可以根据自己的喜好调整。比如上图的第一帧,我用的是一个屏幕右下角的悬浮按钮引导客户点击咨询。
客户进入客服会话的时候,会产生一个动作user_enter_tempsession
,后端程序对此做出反应,调用微信的客服接口API,
https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=$access_token
发送一段文字,引导客户根据提示输入关键字,调用对应的回复内容。
在这里,我们需要提前取得 $access_token
这个变量(有效期7200s),由于$access_token
一天内获取次数是2000次,所以我们还需要将$access_token
做一下缓存,将它保存在服务器上,有效期内,我们可以一直调用同一个$access_token
的值。
客户发送指定关键词之后,后端根据预设的程序,分别回复文字、图文链接、小程序卡片和图片四种形式的内容。其中后两种需要用到media_id
这个图片参数,因为微信在后两种客服消息中拒绝引用外部图片,我们需要将图片内容通过
https://api.weixin.qq.com/cgi-bin/media/upload?access_token=$access_token&type=$type
这个接口上传到微信服务器,获得临时素材(有效期3天),并取得素材的media_id
,然后再在主程序中调用这个参数即可保证小程序卡片中的封面图片和图片回复的内容一直有效。
如果服务器上php版本大于5.5的话,需要注意的是临时素材上传的格式需要用到new CURLFile()
这个函数,而不是微信开发文档里说的@+图片绝对地址
的方式。比如我就是用的php7,不按照这个方法上传图片获取临时素材的话,微信服务器一直会报41005错误。
有些服务器,应该说有很多服务器是设置了register_globals
禁止的,所以,在获取客户发过来的消息时,如果用微信开发文档里写的
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
是不会有反应的,这一点我也是调试了很久才发现,应该改成
$postStr = file_get_contents("php://input");
关于php获取前端POST方式传递的数据的方法,可以参考 https://blog.zhengzi.me/541.html
好了,我遇到的坑就这两个,话说,微信的开发文档也该更新一下了。
最后是设置非关键字回复调用图灵接口,这需要我们提前注册好图灵机器人,拿到TURINGKEY的值才可以使用。
根据客户发过来的消息内容,我们还可以进行筛分,如果客户发来的是文字信息,我们可以根据上面的设置方法,分别回复对应的内容。如果客户发送过来的不是文字而是图片或者语音信息呢?我们可以加一个判断,要么告诉客户我们不支持这类格式的信息,要么将信息转发到微信的网页版客服系统,用"MsgType"=>"transfer_customer_service",
就可以很轻松地实现这个目的。这样客服人员啥时候有时间开电脑了(微信要求客服主动发送信息应在客户留言之后的48小时之内),再将客户接入进来,做异步回复就可以了。
好了,具体实现方法就写在这里了。如果你需要在你的小程序里也接入这样一套客服系统,欢迎扫描下方二维码添加我微信为好友与我联系。