微信公众号开发<关键字匹配回复随机内容>
来源:互联网 发布:淘宝神笔模板 编辑:程序博客网 时间:2024/05/22 09:43
最后我实现的功能是用户回复公众号电影名称,公众号自动回复网盘链接,回复“美女”“搞笑”等关键词自动回复随机一张类别图片
1.公众号配置好开发地址
/** * 接入微信 * * @param request request * @param response response * @throws IOException IOException */ @RequestMapping(value = "/wechatconnect") @ResponseBody public void wechatconnect(HttpServletRequest request, HttpServletResponse response) throws IOException { // 将请求、响应的编码均设置为UTF-8(防止中文乱码) request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); boolean isGet = request.getMethod().toLowerCase().equals("get"); PrintWriter out = response.getWriter(); try { if (isGet) { String signature = request.getParameter("signature");// 微信加密签名 String timestamp = request.getParameter("timestamp");// 时间戳 String nonce = request.getParameter("nonce");// 随机数 String echostr = request.getParameter("echostr");//随机字符串 // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败 if (SignUtil.checkSignature(signature, timestamp, nonce)) { logger.info("Connect the weixin server is successful."); response.getWriter().write(echostr); } else { logger.error("Failed to verify the signature!"); } } else { String respMessage = "异常消息!"; try { respMessage = weixinPost(request); out.write(respMessage); logger.info("The request completed successfully"); logger.info("to weixin server " + respMessage); } catch (Exception e) { e.printStackTrace(); logger.error("Failed to convert the message from weixin!"); } } } catch (Exception e) { logger.error("Connect the weixin server is error."); } finally { out.close(); } }
然后做关键词匹配的功能,用户给公众号发送的消息都会通过腾讯request请求到你配置的开发者地址上,然后就是实现自己的逻辑,包括自动回复相关内容;
public String weixinPost(HttpServletRequest request) { String respMessage = null; try { // xml请求解析 Map<String, String> requestMap = MessageUtil.xmlToMap(request); // 发送方帐号(open_id) String fromUserName = requestMap.get("FromUserName"); // 公众帐号 String toUserName = requestMap.get("ToUserName"); // 消息类型 String msgType = requestMap.get("MsgType"); // 消息内容 String content = requestMap.get("Content"); logger.info("---------------FromUserName is:" + fromUserName + ", ToUserName is:" + toUserName + ", MsgType is:" + msgType + content); // 文本消息 if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) { //这里根据关键字执行相应的逻辑,只有你想不到的,没有做不到的 PicturePool pp = wechatResourceService.selectPictureWechat(content); MoviePool mp = wechatResourceService.selectMovieWechat(content); if (pp != null) { //自动回复图片 ImgMessage imgMessage = new ImgMessage(); WechatPicture wechatPicture = wechatResourceService.getPicture(pp.getId()); Image image = new Image(); image.setMediaId(wechatPicture.getMedia_id()); imgMessage.setImage(image); imgMessage.setToUserName(fromUserName); imgMessage.setFromUserName(toUserName); imgMessage.setCreateTime(new Date().getTime()); imgMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_IMAGE); respMessage = MessageUtil.imgMessageToXml(imgMessage); } else if (mp != null) { //自动回复 TextMessage text = new TextMessage(); text.setContent(mp.getAddress()); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setCreateTime(new Date().getTime()); text.setMsgType(msgType); respMessage = MessageUtil.textMessageToXml(text); } else { TextMessage text = new TextMessage(); text.setContent("亲,关键词匹配不上呢,请检查一下是否有同音字吧~\n" + "回复“美女”“男神”“海报”“搞笑”等命令,可以获得相对应的精美图片。\n" + "回复“电影”或者您想看的电影名称,即可得到在线观看的网址或云盘资源的链接。\n"); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setCreateTime(new Date().getTime()); text.setMsgType(msgType); respMessage = MessageUtil.textMessageToXml(text); } } else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {// 事件推送 String eventType = requestMap.get("Event");// 事件类型 if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {// 订阅 TextMessage text = new TextMessage(); text.setContent("客官,您来啦~\n" + "\n" + "回复“美女”“男神”“海报”“搞笑”等命令,可以获得相对应的精美图片。\n" + "回复“电影”或者您想看的电影名称,即可得到在线观看的网址或云盘资源的链接。\n" + "小编今日推荐:\n" + "菊豆\n" + "色戒\n" + "春光乍泄\n" + "苹果\n" + "生于妓院\n" + "(直接回复电影名称即可)"); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setCreateTime(new Date().getTime()); text.setMsgType(msgType); respMessage = MessageUtil.textMessageToXml(text); } else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {// 自定义菜单点击事件 String eventKey = requestMap.get("EventKey");// 事件KEY值,与创建自定义菜单时指定的KEY值对应 logger.info("eventKey is:" + eventKey); if (eventKey.equals("zhaodianying")) { TextMessage text = new TextMessage(); text.setContent("回复“电影” 或 直接回复电影名称,小编就会很快回复您观看网址噢。\n" + "回复“美女”“男神”“海报”“搞笑”等命令,可以获得相对应类型的精美图片。\n" + "您还可以添加客服微信:girlnevercryy进入“逗芽电影福利红包群”,各种福利,任性红包满天飞~~~"); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setCreateTime(new Date().getTime()); text.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT); respMessage = MessageUtil.textMessageToXml(text); } if (eventKey.equals("qiuziyuan")) { TextMessage text = new TextMessage(); text.setContent("如果亲没有找到自己中意的电影资源,请添加客服微信:jfwx-hrd 把想要的电影资源名称留言给小编,小编就会立刻马不停蹄的免费去帮您找噢~\n"); text.setToUserName(fromUserName); text.setFromUserName(toUserName); text.setCreateTime(new Date().getTime()); text.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT); respMessage = MessageUtil.textMessageToXml(text); } } } } catch (Exception e) { logger.error("error......"); e.printStackTrace(); } return respMessage;
最终实现效果如图所示:
阅读全文
0 0
- 微信公众号开发<关键字匹配回复随机内容>
- 微信公众号回复内容
- 微信公众号开发自动回复
- 微信公众号验证token+关注回复+关键字回复+单图文回复
- C#开发微信公众号之消息自动回复
- 6.图文回复(微信公众号开发实战)
- 微信公众号开发2自动回复
- 微信公众号开发6图片回复
- 微信公众号开发-接收与回复消息
- 微信公众号开发如何回复正确的超链接?
- 微信公众号开发之文本消息自动回复
- 微信公众号开发——关键词自动回复
- Java微信公众平台开发(九)——关键字回复以及客服接口实现(该公众号暂时无法提供服务解决方案)
- 【微信公众号开发】自我学习第四章:消息回复之翻译回复
- 微信开发二之关键字回复
- 微信公众平台开发:进阶篇(微信机器人:自动匹配WordPress文章回复图文信息)
- PHP微信开发模式,搜索已发送图文,匹配关键字回复
- 微信公众号自定义回复
- jquery 获取select的value和text
- 淘便宜隐私政策
- javascript对url进行encode有如下两种方法
- 【学习笔记】正则表达式(一)
- ios-navigation的颜色和透明度影响view的坐标
- 微信公众号开发<关键字匹配回复随机内容>
- New Begin
- android assets和raw的区别
- hdu-2157-How many ways?? (矩阵)(dp优化加速)
- AOJ-problem-894
- 欢迎使用CSDN-markdown编辑器
- 对prime算法的深入理解
- 第三弹——apache服务器
- HDU 2609How many