java调用个人微信接口收发消息
java调用个人微信接口收发消息
/**
	 * 接受微信好友发来聊天消息
	 * @author wechatno:tangjinjinwx
	 * @param ctx
	 * @param vo
	 */
	@Async
	public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo) {
		try {
			FriendTalkNoticeMessage req = vo.getContent().unpack(FriendTalkNoticeMessage.class);
			log.debug(JsonFormat.printer().print(req));
			
			log.debug(LocalDateTime.now()+" 微信好友发来聊天消息  对应的线程名: "+Thread.currentThread().getName());
			  
            //拦截消息
			asyncTaskService.msgAopTask(ctx,req,vo.getAccessToken(), vo.getId());
			//消息转发到pc端
			asyncTaskService.msgSend2pc(req.getWeChatId(), EnumMsgType.FriendTalkNotice, req);
			 
        	// 告诉客户端消息已收到
        	MessageUtil.sendMsg(ctx, EnumMsgType.MsgReceivedAck, vo.getAccessToken(), vo.getId(), null);
        	
        	WxAccountInfo account = weChatAccountService.findWeChatAccountInfoByWeChatId(req.getWeChatId());
			//消息记录数据库
			if (null != account){
				asyncTaskService.saveMessage(account, req);
		    }
			 
		} catch (Exception e) {
			e.printStackTrace();
			MessageUtil.sendErrMsg(ctx, EnumErrorCode.InvalidParam,vo.getId(), e.getMessage());
		}
	}
//调用参考http://www.wlkankan.cn/cate40/229.html
/**
	 * 服务端、客服客户端发给设备的指令类消息
	 * 给好友,群聊发送消息接口
	 * @author wechatno:tangjinjinwx
	 * @param ctx
	 * @param vo
	 */
	@Async
	public void handleMsg(ChannelHandlerContext ctx, TransportMessage vo, String contentJsonStr) {
		try {
			log.debug(contentJsonStr);
			TalkToFriendTaskMessage.Builder bd = TalkToFriendTaskMessage.newBuilder();
			JsonFormat.parser().merge(contentJsonStr, bd);
			TalkToFriendTaskMessage req = bd.build();
			// 消息记录数据库
			asyncTaskService.savePcMessage(req);
			// 将消息转发送给手机客户端
			asyncTaskService.msgSend2Phone(ctx, req.getWeChatId(), EnumMsgType.TalkToFriendTask, vo, req);
		} catch (Exception e) {
			e.printStackTrace();
			MessageUtil.sendJsonErrMsg(ctx, EnumErrorCode.InvalidParam, Constant.ERROR_MSG_DECODFAIL);
		}
	}
