微信开发关注自动回复_微信开发者中心处配置与微信后台自动回复冲突吗 - CSDN
  • 微信公众号开发--关注自动回复(Java记录篇)

    万次阅读 热门讨论 2018-10-21 16:27:37
    扫描下方二维码可关注 你我杂志刊 关注或者 微信搜索公众号 你我杂志刊 开发者通过signature对请求进行校验,若确认此次校验来自微信服务器,请原样返回echostr参数内容,则接入成功,否则接入失败! 打开IDE

    转载自 http://blog.csdn.net/lyq8479/article/details/8944988
    访问我的个人博客 秋码个人博客
    文中所用到的jar dom4j XStream的jar包
    扫描下方二维码可关注 你我杂志刊 关注或者 微信搜索公众号 你我杂志刊
    这里写图片描述
    开发者通过signature对请求进行校验,若确认此次校验来自微信服务器,请原样返回echostr参数内容,则接入成功,否则接入失败!
    打开IDE,创建一个Java Web工程,并新建一个能够处理请求的Servlet,命名任意。

    package com.zhenqi.servlet;
    
    import com.zhenqi.util.CheckUtil;
    import com.zhenqi.util.MessageUtil;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    /**
     * Created by wuming on 2017/9/15.
     */
    public class HandleWeiXinMessageServlet extends HttpServlet {
    
        public static final Logger logger = LoggerFactory.getLogger(HandleWeiXinMessageServlet.class);
        /**
         * VersionUID
         */
        private static final long serialVersionUID = 1L;
       
    
        /*
         * URL验证
         * (non-Javadoc)
         * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
         */
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
    
            String signature = req.getParameter("signature");
            String timestamp = req.getParameter("timestamp");
            String nonce = req.getParameter("nonce");
            String echostr = req.getParameter("echostr");
            logger.info("echostr" + echostr);
            PrintWriter out = resp.getWriter();
            if(CheckUtil.checkSignature(signature, timestamp, nonce)){
            	out.write(echostr);
            } 
        }
    

    以上servlet doGet方法请求用到了校验signature的方法,以下是CheckUtil.java完整代码。
    其中要注意Token要与微信相对应。
    这里写图片描述

    package com.zhenqi.util;
    
    import java.security.MessageDigest;
    import java.util.Arrays;
    
    public class CheckUtil {
    	//与接口配置信息中的Token要一致 
    	private static final String token="weixinStudy";
    	
    	public static boolean checkSignature(String signature,String timestrap,
    			String nonce){
    		
    		String[] arr=new String[]{token,timestrap,nonce};
    		// 将token、timestamp、nonce三个参数进行字典序排序 
    		Arrays.sort(arr);
    		
    		StringBuffer buf=new StringBuffer();
    		for(int i=0;i<arr.length;i++){
    			buf.append(arr[i]);
    		}
    		
    		String temp=getSha1(buf.toString());
    		return temp.equals(signature);
    	}
    	
    	public static String getSha1(String str){
    		if(null==str || str.length()==0){
    			return null;
    		}
    		char hexDigits[]={'0','1','2','3','4','5','6','7','8','9',
    				'a','b','c','d','e','f'};
    		try{
    			MessageDigest mdTemp=MessageDigest.getInstance("SHA1");
    			mdTemp.update(str.getBytes("UTF-8"));
    			
    			byte[] md=mdTemp.digest();
    			int j=md.length;
    			char[] buf=new char[j*2];
    			int k=0;
    			for(int i=0;i<j;i++){
    				byte byTemp=md[i];
    				buf[k++]=hexDigits[byTemp >>> 4 & 0xf];
    				buf[k++]=hexDigits[byTemp & 0xf];
    			}
    			return new String(buf);
    		}catch(Exception e){
    			return null;
    		}
    	}
    
    }
    

    而后再回到servlet请求类里,编写doPost方法。用户关注就是触发一个事件。

    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws ServletException, IOException {
    
        	req.setCharacterEncoding("UTF-8");
            resp.setCharacterEncoding("UTF-8");
            PrintWriter out = 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");    
                //判断请求是否事件类型 event
               if(MessageUtil.MESSAGE_EVENT.equals(msgType)){
                    String eventType = map.get("Event");
                    //若是关注事件  subscribe
                    if(MessageUtil.EVENT_SUB.equals(eventType)){
                        String mycontent = MessageUtil.menuText();
                        message = MessageUtil.initText(toUserName, fromUserName, mycontent);
    
                    }
                } 
                out.print(message);
            } catch (Exception e) {
            	e.printStackTrace();
                out.close();
            }   
           
        }
    

    MessageUtl.java类如下:

    public class MessageUtil {
    	public static final String MESSAGE_TEXT = "text";
        public static final String MESSAGE_IMAGE = "image";
        public static final String MESSAGE_VOICE = "voice";
        public static final String MESSAGE_VIDEO = "video";
        public static final String MESSAGE_LINK = "link";
        public static final String MESSAGE_LOCATION = "location";
        public static final String MESSAGE_EVENT = "event";
    
        public static final String EVENT_SUB = "subscribe";
        public static final String EVENT_UNSUB = "unsubscribe";
        public static final String EVENT_CLICK = "CLICK";
        public static final String EVENT_VIEW = "VIEW";
    
        /**
         * xml转为map
         * @param request
         * @return
         * @throws DocumentException
         * @throws IOException
         */
        public static Map<String, String> xmlToMap(HttpServletRequest request ) throws DocumentException, IOException
        {
            Map<String,String> map = new HashMap<String, String>();
    
            SAXReader reader = new SAXReader();
    
            InputStream ins = request.getInputStream();
            Document doc = reader.read(ins);
    
            Element root = doc.getRootElement();
            List<Element> list = root.elements();
            for (Element e : list) {
                map.put(e.getName(), e.getText());
            }
            ins.close();
            return map;
        }
    
        public static String textMessageToXml(TextMessage textMessage){
            XStream xstream = new XStream();
            xstream.alias("xml", textMessage.getClass());
            return xstream.toXML(textMessage);
    
        }
        public static String initText(String toUserName, String fromUserName, String content){
            TextMessage text = new TextMessage();
            text.setFromUserName(toUserName);
            text.setToUserName(fromUserName);
            text.setMsgType(MESSAGE_TEXT);
            text.setCreateTime(new Date().getTime());
            text.setContent(content);
            return textMessageToXml(text);
        }
    
        public static String menuText(){
            StringBuffer sb = new StringBuffer();
            sb.append("      你关注,\n");
            sb.append("     或者不关注,\n");
            sb.append("      【你我杂志刊】都在这里!\n");
            sb.append("     不离,\n");
            sb.append("      不弃!\n\n");
            sb.append("该公众号已实现以下功能:\n");
            sb.append("回复“天气”、“翻译” 将有该功能的介绍与使用,\n");
            sb.append("如您在使用该公众有任何宝贵意见,欢迎反馈!\n\n");
            sb.append("反馈邮箱:zhenqicai@sohu.com");
            return sb.toString();       
        }
    }
    

    最终效果如下图
    这里写图片描述
    扫描下方二维码可关注 你我杂志刊 关注或者 微信搜索公众号 你我杂志刊
    这里写图片描述

    展开全文
  • 微信公众号开发关注自动回复(Java记录篇) 最终效果如下:
    展开全文
  • 造成原因: 微信公众平台默认绑定了一个自动回复插件“图灵机器人”,取消这个即可


    造成原因:

    微信公众平台默认绑定了一个自动回复插件“图灵机器人”,取消这个即可




    展开全文
  • 个人微信号想要实现自动回复; c# 怎么实现个人微信号自动回复呢?? 是否有案例参考,谢谢~
  • 测试微信自动回复

    2020-07-30 23:32:12
    测试微信自动回复..Ec版本,,你们能成功吗
  • 微信公众号新关注自动回复8条图文外连完整PHP源码,可以用此源码直行涨粉其它号
  • 微信公众平台关注回复

    热门讨论 2020-07-29 14:19:27
    微信公众平台开发模式关注自动回复实例PHP
  • 扫码关注,自动回复文字,合成海报,关键字回复,图文回复等,适用于新手哦
  • springboot开发微信公众号之消息回复

    热门讨论 2020-07-30 23:33:23
    服务器端采用springBoot开发微信公众号功能,实现与用户的交互,返回用户输入的内容
  • 表情的消息类型实质是文本消息。每个表情都有与之对应的表情代码。 转载于:https://www.cnblogs.com/hongjiang/p/7603030.html

    表情的消息类型实质是文本消息。每个表情都有与之对应的表情代码。

     

    转载于:https://www.cnblogs.com/hongjiang/p/7603030.html

    展开全文
  • 那么微信公众号添加关注后怎么自动回复图文信息?下面小编就为大家介绍一下,一起来看看吧! 方法/步骤 1、登录到微信公众号的后台后,在左侧找到自动回复的按钮,并点击进入。如果只是想在公众号被关注后...
  • 小易Smalle博文:微信公众平台开发【发送消息】被动回复消息http://blog.csdn.net/oldinaction/article/details/47839989示例源代码
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 一、 进入关键词自动回复添加规则 二、 修改规则名为任意字符,如“图文”(必填) 三、 添加关键词,输入代码 “Hello2BizUser”,点击确定 四、 点击图文符号,并勾选所需推送图文 五、 点击保存(可能会出现...
  • 在文字前面加一个空白的标签 <xml> ... ... <Content><a></a>文字内容</Content> </xml>
  • 微信公众平台回复消息如何换行

    千次阅读 2019-06-13 05:36:03
    为什么80%的码农都做不了架构师?>>> ...
  • 各位大神,我想做到当有人关注微信公众号时推送消息,消息中包含关键字,点击关键字就回复文本消息或者图文消息,请各位大佬指条明路。
  • 小易Smalle博文:微信公众平台开发(2)回复超链接http://blog.csdn.net/oldinaction/article/details/47775023所用源码
  • 微信公众号被关注自动回复的局限:如何使用微星极光-大鬼图文助手回复文字+图片2条消息 每个粉丝关注公众号后,马上收到的消息,就是【被关注回复】 微信公众平台默认只能回复1条消息。 图片: ...
  • Hello2BizUser的方法失效了之后,如何设置微信公众号关注自动回复图文消息和自定义链接? 导言 Hello2BizUser的方法失效了之后,如何设置微信公众号关注自动回复图文消息和自定义链接?通过网站:open.vip666....
1 2 3 4 5 ... 20
收藏数 18,208
精华内容 7,283
关键字:

微信开发关注自动回复