微信公众号开发<关键字匹配回复随机内容>

xiaoxiao2021-02-28  82

最后我实现的功能是用户回复公众号电影名称,公众号自动回复网盘链接,回复“美女”“搞笑”等关键词自动回复随机一张类别图片 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;

最终实现效果如图所示:

转载请注明原文地址: https://www.6miu.com/read-32499.html

最新回复(0)