公众号开发(六)----发送消息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/w_t_y_y/article/details/86692907

前面的博客已经可以接受消息了,现在实现互动,给用户发送各种消息。

一、普通消息:如现在把普通用户发送的消息原样返回发送给用户。只需要把touser和fromuser反过来就可以了。

1、文本消息:MsgType值为text:

if("text".equals(type)){
			String toUserName = reqMsg.getToUserName();
			reqMsg.setFromUserName(toUserName);
			reqMsg.setMsgType("text");
			reqMsg.setToUserName(fromUserName);
		}

此时完整的handleMessage处理消息代码为:

/**
	 * 处理微信消息
	 * @param request request
	 * @param reqMsg 请求消息
	 * @param respMsg 回复消息
	 * @param remoteIp remoteIp
	 */
	private void handleMessage(HttpServletRequest request, WechatMsg reqMsg,  String remoteIp){
		String type = reqMsg.getMsgType();
		String fromUserName = reqMsg.getFromUserName();
		String event = reqMsg.getEvent();
		String eventKey = reqMsg.getEventKey();
		//event事件开始
		if(type.equals("event")){
			//关注事件
			if("subscribe".equals(event)){
				WechatUser dbWechatUser = wechatUserService.getByOpenId(fromUserName);
				if(dbWechatUser == null){
					//还没有关注过
					System.out.println("还没有关注过");
					WechatUser wechatUser = new WechatUser();
					wechatUser.setCreateTime(new Date());
					wechatUser.setIsDelete(false);
					wechatUser.setUpdateTime(new Date());
					wechatUser.setUserOpenId(fromUserName);
					
					wechatUserService.insert(wechatUser);
				}
			}
			
			//取消关注事件
			if("unsubscribe".equals(event)){
				WechatUser dbWechatUser = wechatUserService.getByOpenId(fromUserName);
				wechatUserService.delete(dbWechatUser);
			}
			
			//扫描带参数二维码关注事件(scene_id)
			if("subscribe".equals(event) && eventKey.startsWith("qrscene_")){
				//去掉前缀
				Long key = Long.valueOf(eventKey.replace("qrscene_", ""));
				if(sceneId == key || sceneId.equals(key)){
					System.out.println("扫描带参数二维码关注");
					QrCodeUser dbQrCodeUser = qrCodeUserService.getByOpenId(fromUserName);
					if(dbQrCodeUser == null){
						//还没有记录过
						QrCodeUser qrCodeUser = new QrCodeUser();
						qrCodeUser.setCreateTime(new Date());
						qrCodeUser.setIsDelete(false);
						qrCodeUser.setOpenId(fromUserName);
						qrCodeUser.setSceneId(String.valueOf(sceneId));
						qrCodeUser.setUpdateTime(new Date());
						qrCodeUserService.insert(qrCodeUser);
					}
				}
			}
			
			//扫描带参数二维码浏览(已关注)事件(scene_id)
			if("SCAN".equals(event)){
				Long key = Long.valueOf(eventKey);
				if(sceneId == key || sceneId.equals(key)){
					System.out.println(fromUserName+"扫描带参数二维码已经关注");
				}
			}
			
			
			/*//扫描带参数二维码关注事件(scene_str)
			if("subscribe".equals(event) && eventKey.startsWith("qrscene_")){
				//去掉前缀
				String key = eventKey.replace("qrscene_", "");
				if(scendStr.equals(key)){
					System.out.println("扫描带参数二维码关注(scene_str)");
					QrCodeUser dbQrCodeUser = qrCodeUserService.getByOpenId(fromUserName);
					if(dbQrCodeUser == null){
						//还没有记录过
						QrCodeUser qrCodeUser = new QrCodeUser();
						qrCodeUser.setCreateTime(new Date());
						qrCodeUser.setIsDelete(false);
						qrCodeUser.setOpenId(fromUserName);
						qrCodeUser.setSceneId(String.valueOf(sceneId));
						qrCodeUser.setUpdateTime(new Date());
						qrCodeUserService.insert(qrCodeUser);
					}
				}
			}
			
			//扫描带参数二维码浏览(已关注)事件(scene_str)
			if("SCAN".equals(event)){
				if(scendStr.equals(eventKey)){
					System.out.println(fromUserName+"扫描带参数二维码已经关注(scene_str)");
				}
			}*/
		}
		//event事件结束
		
		//text事件开始
		if("text".equals(type)){
			String toUserName = reqMsg.getToUserName();
			reqMsg.setFromUserName(toUserName);
			reqMsg.setMsgType("text");
			reqMsg.setToUserName(fromUserName);
		}
	}

   

测试,发送文本消息正常回复,发送图片,会出现异常。下面实现图片回复功能。 

2、图片消息:

猜你喜欢

转载自blog.csdn.net/w_t_y_y/article/details/86692907