100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 微信公众号开发关键字匹配回复随机内容

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

时间:2019-09-15 17:52:11

相关推荐

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

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

1.公众号配置好开发地址

/*** 接入微信** @param request request* @param response response* @throws IOException IOException*/@RequestMapping(value = "/wechatconnect")@ResponseBodypublic 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;

最终实现效果如图所示:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。