先来看看效果图,图片大小受限,只展示聊天部分,更多效果请看视频
文章目录1、准备1-1、映射外网工具1-2、一个测试微信号1-3、MySql数据库2、启动项目3、视频说明4-1、文本说明4-2、异步处理4-3、主要业务
一.准备
1-1、映射外网工具
在微信公众号和我们的代码面前交流,需要提供我们可以通过外网访问的接口。
ngrok下载、安装、使用
1-2、一个测试微信号只要有自己的公众号,也可以直接拿公众号进行验证。 如果没有的话,可以自己申请测试号码吗?
测试号码除了页面简陋以外,其他功能也大致相似。 我也是这次使用的测试号码。
报名处
1-3、MySql数据库的消息和会话列表需要持久化,必须使用关系数据库
在Linux上安装MySql
在Windows上安装MySql
二、启动项目在github上下载源代码,配置以上三个需求即可。
注:此项目为xdxIm里面的wxkf1.0
https://github.com/xdxTao/xdxIm
三.视频讲义https://www.bilibili.com/video/b v1 aa 411 n7hu /
四、文字说明之前写过一篇描述微信客服的文章,这里只讲以前文章里没有写的内容。
微信公众号接入自己的呼叫系统,定制呼叫系统
4-1、xml解析微信调用我们的接口数据传输格式为xml,例如
xml ToUserName! [ CDATA [ touser ]/tousernamefromusername! [ CDATA [ fromuser ]/fromusernamecreatetime 1348831860/createtime msgtype! [CDATA[text]]/MsgType Content! [ CDATA [ this isa test ]/content msgid 1234567890123456/msgid/XML ]
因此,我们将分析信息。 在这里,我写了分析xml数据的简单方法
/**通过反射,将xml数据封装到对应的实体中。 * @param xmlString xml字符串* @param t返回类型*/publictwxformat (string XML string,ttt ) if ) XMLstring (//典型的XML分析需要这两行[CDATA[ ',' ' ]; XMLstring=XMLstring.replace (() ),); XML string=XML string.substring (5,xmlString.length ) (-6 ); MapString,Object map=new HashMapString,Object (; char [ ] chars=XML string.tochararray (; stringbuildercurfiled=new stringbuilder (; stringbuildercurcontent=new stringbuilder (; 输入标志=0; for(intI=0; i chars.length; I ) if(chars[I]==''flag!=1) { continue; (if ) chars[I]!=' '标志!=1) curfiled.append(chars[I]; 连续; }elseif(flag!=1) { flag=1; 连续; (if ) flag==1chars[I]!=' ' ) {curcontent.append(chars[I]; 连续; (if ) flag==1chars[I]==' ' ) map.put (cur filed.tostring (,curContent.toString ) ); i =curFiled.length () 2; curfiled.delete(0,curFiled.length ); curcontent.delete(0,curContent.length ); flag=0; } } try { Class? aClass=t.getClass (; string key : map.keyset () methodmethod=aclass.getmethod )、String.class (); method.invoke(t,map.get ) key ); }catch(exceptione ) { } return t; }
4-2、异步处理微信呼叫我们的接口超时时间为5s,重复调用三次。 如果三次失败,将向用户显示。该公众号提供的服务出现故障,请稍后再试
这是绝对不能允许的。 因为有时我们的业务太复杂,或者无论如何都会超时,所以这里采用异步方式处理我们的业务。
4-3、主要业务逻辑我们最后要做的效果是,收到某条消息时,如果客服与此人建立了连接,就推送消息,否则让其阅读未读消息1。
4-4、其他业务逻辑4-4-1、建立WebSocket webSocket连接、关闭连接、推送消息
4-4-2、WxHandler接收微信消息的接口
4-4-3、msg控制器获取信息并发送
4-4-4、获取会话列表、创建会话、删除会话
4-4-5、用户控制器客户服务注册、注销