微信自动回复机器人原理很简单,获取用户发送到后台的数据,然后调用机器人的api进行回复即可。我使用的茉莉机器人,官网地址如下:
http://www.itpk.cn/
茉莉机器人的api:http://www.itpk.cn/robot.php
接口比较简单,看看就会,我直接上源代码
下面代码同样基于之前的微博,需要的可以去看一下:
http://blog.csdn.net/zxxz5201314/article/details/76917107
首先对用户发送的文本进行处理,特殊字段分别处理,同样Post请求:
@SuppressWarnings("rawtypes")
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
PrintWriter writer = resp.getWriter();
try {
Map<String, String> map = MessageUtil.xmlToMap(req);
String toUserName = map.get("ToUserName");
String fromUserName = map.get("FromUserName");
String msgType = map.get("MsgType");
String content = map.get("Content");
System.out.println(toUserName+fromUserName+msgType+content);
String text = null;
if ("text".equals(msgType)) {
switch (content) {
case "笑话":
Map maps1 = (Map)JSON.parse(ITPK.itpk("笑话"));
StringBuffer sb1 = new StringBuffer();
sb1.append("标题:"+maps1.get("title")+"\n");
sb1.append("内容:"+maps1.get("content"));
text = MessageUtil.replyByKeyWord(toUserName, fromUserName, MessageUtil.Message_Text, sb1.toString());
break;
case "观音灵签":
Map maps2 = (Map)JSON.parse(ITPK.itpk("观音灵签"));
StringBuffer sb2 = new StringBuffer();
sb2.append("您抽取的是第"+maps2.get("number2")+"签\n");
sb2.append("签位:"+maps2.get("haohua")+"\n");
sb2.append("签语:"+maps2.get("qianyu")+"\n");
sb2.append("诗意:"+maps2.get("shiyi")+"\n");
sb2.append("解签:"+maps2.get("jieqian"));
text = MessageUtil.replyByKeyWord(t