/// <summary> /// 文本消息处理器 /// </summary> /// <param name="msg"></param> /// <returns></returns> public IMessageHandler MessageRole(HandleMessage msg) { Dictionary<string, object> bugobj = new Dictionary<string, object>(); try { if (msg == null) { throw new ArgumentException("message is null"); } return new TextMessageHandler(string.Empty, msg); } catch (Exception ex) { TxtLogHelper.WriteLog_Day(new TxtLogInfoObject() { LogType = EnumLogType.Error, LogMessage = string.Format("错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace), }); } finally { TxtLogHelper.WriteDebugLog(bugobj); } return new DefaultMessageHandler(msg); }
public IMessageHandler MessageRole(HandleMessage message) { Dictionary <string, object> bugobj = new Dictionary <string, object>(); try { if (message == null) { throw new ArgumentException("message is null"); } return(new VoiceMessageHandler(message)); } catch (Exception ex) { TxtLogHelper.WriteLog_Day(new TxtLogInfoObject() { LogType = EnumLogType.Error, LogMessage = string.Format("错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace), }); } finally { TxtLogHelper.WriteDebugLog(bugobj); } return(new DefaultMessageHandler(message)); }
/// <summary> /// 事件消息处理 /// </summary> /// <param name="msg"></param> /// <returns></returns> public IMessageHandler MessageRole(HandleMessage msg) { Dictionary<string, object> bugobj = new Dictionary<string, object>(); try { if (msg == null) { throw new ArgumentException("msg is null"); } var eventType = (Event)Enum.Parse(typeof(Event), msg.Element.Element("Event").Value, true); IMessageHandler imessageHandler = null; switch (eventType) { case Event.Subscribe: imessageHandler = new SubScribeEventMessageHandler(msg); break; case Event.Unsubscribe: imessageHandler = new UnSubScribeEventMessageHandler(msg); break; case Event.Scan: imessageHandler = new ScanEventMessageHandler(msg); break; case Event.Location: break; case Event.Click: imessageHandler = new ClickEventMessageHandler(msg); break; case Event.MASSSENDJOBFINISH: break; case Event.View: imessageHandler = new ViewEventMessageHandler(msg); break; case Event.Merchant_Order: break; case Event.TEMPLATESENDJOBFINISH: break; default: imessageHandler = new DefaultMessageHandler(msg); break; } return imessageHandler; } catch (Exception ex) { TxtLogHelper.WriteLog_Day(new TxtLogInfoObject() { LogType = EnumLogType.Error, LogMessage = string.Format("错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace), }); } finally { TxtLogHelper.WriteDebugLog(bugobj); } return new DefaultMessageHandler(msg); }
public IMessageHandler MessageRole(HandleMessage msg) { try { return(new MsgTypeMessageRole().MessageRole(msg)); } catch { return(new DefaultMessageHandler(msg)); } }
public IMessageHandler MessageRole(HandleMessage msg) { try { return new MsgTypeMessageRole().MessageRole(msg); } catch { return new DefaultMessageHandler(msg); } }
/// <summary> /// /// </summary> /// <param name="msg"></param> /// <param name="msghander"></param> public TextMessageHandler(string msg, HandleMessage msghander) { this.Message = msg; this.msghander = msghander; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message"></param> public VoiceMessageHandler(HandleMessage message) { this.msghander = message; }
/// <summary> /// /// </summary> /// <param name="msg"></param> /// <param name="msghander"></param> public TextMessageHandler(string msg, HandleMessage msghander) { this.Message = msg; this.msghander = msghander; }
/// <summary> /// 消息分类处理 /// </summary> /// <param name="msg">消息处理器</param> /// <returns></returns> public IMessageHandler MessageRole(HandleMessage msg) { Dictionary <string, object> bugobj = new Dictionary <string, object>(); bugobj.Add("消息分类处理", "消息分类处理"); try { bugobj.Add("消息请求", msg.RequestMessage); if (msg.RequestMessage == null) { return(null); } bugobj.Add("消息去重", "消息去重"); #region 消息去重 if (messageQueue == null) { messageQueue = new List <BaseMessage>(); } else if (messageQueue.Count >= 50) { //保留10秒内未响应的消息 messageQueue = messageQueue.Where(q => { return(q.CreateTime.AddSeconds(10) > DateTime.Now); }).ToList(); bugobj.Add("保留10秒内未响应的消息", messageQueue); } bugobj.Add("MsgType", msg.RequestMessage.MsgType); bugobj.Add("MsgId", msg.RequestMessage.MsgId.ToString()); bugobj.Add("FromUserName", msg.RequestMessage.FromUserName); // 判断当前请求是否已经在队列里面。如果在里面就不做处理,如果当前请求不再队列里面则加入队列并进行接下来的处理 string msgFlag = msg.RequestMessage.CreateTime.ToString(); bugobj.Add("当前消息唯一标识", msgFlag); if (messageQueue.Find(m => m.MsgFlag == msgFlag && m.FromUser == msg.RequestMessage.FromUserName) == null) { messageQueue.Add(new BaseMessage { CreateTime = DateTime.Now, FromUser = msg.RequestMessage.FromUserName, MsgFlag = msgFlag }); bugobj.Add("添加当前消息到消息队列中", messageQueue.Last()); } else { bugobj.Add("当前消息已经处理过", msgFlag); return(null); } #endregion switch (msg.RequestMessage.MsgType) { case MsgType.Text: return(new TextMessageRole().MessageRole(msg)); case MsgType.Event: return(new EventMessageRole().MessageRole(msg)); case MsgType.Voice: return(new VoiceMessageRole().MessageRole(msg)); default: return(new DefaultMessageHandler(msg)); } } catch (Exception ex) { TxtLogHelper.WriteLog_Day(new TxtLogInfoObject() { LogType = EnumLogType.Error, LogMessage = string.Format("错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace), }); throw; } finally { TxtLogHelper.WriteDebugLog(bugobj); } return(null); }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public ViewEventMessageHandler(HandleMessage message) { this.messageHandler = message; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message"></param> public VoiceMessageHandler(HandleMessage message) { this.msghander = message; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public ClickEventMessageHandler(HandleMessage message) { this.message = message; }
/// <summary> /// 事件消息处理 /// </summary> /// <param name="msg"></param> /// <returns></returns> public IMessageHandler MessageRole(HandleMessage msg) { Dictionary <string, object> bugobj = new Dictionary <string, object>(); try { if (msg == null) { throw new ArgumentException("msg is null"); } var eventType = (Event)Enum.Parse(typeof(Event), msg.Element.Element("Event").Value, true); IMessageHandler imessageHandler = null; switch (eventType) { case Event.Subscribe: imessageHandler = new SubScribeEventMessageHandler(msg); break; case Event.Unsubscribe: imessageHandler = new UnSubScribeEventMessageHandler(msg); break; case Event.Scan: imessageHandler = new ScanEventMessageHandler(msg); break; case Event.Location: break; case Event.Click: imessageHandler = new ClickEventMessageHandler(msg); break; case Event.MASSSENDJOBFINISH: break; case Event.View: imessageHandler = new ViewEventMessageHandler(msg); break; case Event.Merchant_Order: break; case Event.TEMPLATESENDJOBFINISH: break; default: imessageHandler = new DefaultMessageHandler(msg); break; } return(imessageHandler); } catch (Exception ex) { TxtLogHelper.WriteLog_Day(new TxtLogInfoObject() { LogType = EnumLogType.Error, LogMessage = string.Format("错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace), }); } finally { TxtLogHelper.WriteDebugLog(bugobj); } return(new DefaultMessageHandler(msg)); }
protected void Page_Load(object sender, EventArgs e) { Dictionary<string, object> bugobj = new Dictionary<string, object>(); try { bugobj.Add("HttpMethod", Request.HttpMethod.ToString()); //微信服务器一直把用户发过来的消息,post过来 if (Request.HttpMethod.ToUpper() == "POST") { XDocument doc = null; if (Request.InputStream != null) { var reader = XmlReader.Create(Request.InputStream); doc = XDocument.Load(reader); } if (doc != null) { var xml = doc.Element("xml"); // 解析xml消息 var msg = new HandleMessage(xml); if (msg != null) { bugobj.Add("消息主体", msg.Element.ToString()); TxtLogHelper.WriteDebugLog(bugobj); var responseMessage = new WebMessageRole().MessageRole(msg).HandlerRequestMessage(); if (responseMessage != null) { Response.Write(responseMessage.Serializable()); bugobj.Add("响应", responseMessage.Serializable()); } } else { Response.Write("post数据为空"); } } else { Response.Write("post数据为空"); } } else if (Request.HttpMethod.ToUpper() == "GET") //微信服务器在首次验证时,需要进行一些验证,但。。。。 { bugobj.Add("signature", Request["signature"]); bugobj.Add("timestamp", Request["timestamp"]); bugobj.Add("nonce", Request["nonce"]); bugobj.Add("微信验证", Request["echostr"]); string echostr = string.Empty; if (Request["echostr"] != null) { echostr = Request["echostr"].ToString(); } //我仅需返回给他echostr中的值,就为验证成功,可能微信觉得这些安全策略是为了保障我的服务器,要不要随你吧 Response.Write(echostr); return; } } catch (Exception ex) { TxtLogHelper.WriteLog_Day(new TxtLogInfoObject() { LogType = EnumLogType.Error, LogMessage = string.Format("错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace), LogObject = ex, }); Response.Write("post数据为空"); } finally { TxtLogHelper.WriteDebugLog(bugobj); } }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public ScanEventMessageHandler(HandleMessage message) { this.message = message; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public SubScribeEventMessageHandler(HandleMessage message) { this.message = message; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public ScanEventMessageHandler(HandleMessage message) { this.message = message; }
/// <summary> /// 构造函数 /// </summary> public UnSubScribeEventMessageHandler(HandleMessage msghander) : base(unsubScribeMsg, msghander) { }
/// <summary> /// 构造函数 /// </summary> /// <param name="message"></param> public DefaultMessageHandler(HandleMessage message) { this.msghander = message; }
/// <summary> /// 消息分类处理 /// </summary> /// <param name="msg">消息处理器</param> /// <returns></returns> public IMessageHandler MessageRole(HandleMessage msg) { Dictionary<string, object> bugobj = new Dictionary<string, object>(); bugobj.Add("消息分类处理", "消息分类处理"); try { bugobj.Add("消息请求", msg.RequestMessage); if (msg.RequestMessage == null) { return null; } bugobj.Add("消息去重", "消息去重"); #region 消息去重 if (messageQueue == null) { messageQueue = new List<BaseMessage>(); } else if (messageQueue.Count >= 50) { //保留10秒内未响应的消息 messageQueue = messageQueue.Where(q => { return q.CreateTime.AddSeconds(10) > DateTime.Now; }).ToList(); bugobj.Add("保留10秒内未响应的消息", messageQueue); } bugobj.Add("MsgType", msg.RequestMessage.MsgType); bugobj.Add("MsgId", msg.RequestMessage.MsgId.ToString()); bugobj.Add("FromUserName", msg.RequestMessage.FromUserName); // 判断当前请求是否已经在队列里面。如果在里面就不做处理,如果当前请求不再队列里面则加入队列并进行接下来的处理 string msgFlag = msg.RequestMessage.CreateTime.ToString(); bugobj.Add("当前消息唯一标识", msgFlag); if (messageQueue.Find(m => m.MsgFlag == msgFlag && m.FromUser == msg.RequestMessage.FromUserName) == null) { messageQueue.Add(new BaseMessage { CreateTime = DateTime.Now, FromUser = msg.RequestMessage.FromUserName, MsgFlag = msgFlag }); bugobj.Add("添加当前消息到消息队列中", messageQueue.Last()); } else { bugobj.Add("当前消息已经处理过", msgFlag); return null; } #endregion switch (msg.RequestMessage.MsgType) { case MsgType.Text: return new TextMessageRole().MessageRole(msg); case MsgType.Event: return new EventMessageRole().MessageRole(msg); case MsgType.Voice: return new VoiceMessageRole().MessageRole(msg); default: return new DefaultMessageHandler(msg); } } catch (Exception ex) { TxtLogHelper.WriteLog_Day(new TxtLogInfoObject() { LogType = EnumLogType.Error, LogMessage = string.Format("错误信息{0};堆栈信息{1}", ex.Message, ex.StackTrace), }); throw; } finally { TxtLogHelper.WriteDebugLog(bugobj); } return null; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message"></param> public DefaultMessageHandler(HandleMessage message) { this.msghander = message; }
/// <summary> /// 构造函数 /// </summary> public UnSubScribeEventMessageHandler(HandleMessage msghander) : base(unsubScribeMsg, msghander) { }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public SubScribeEventMessageHandler(HandleMessage message) { this.message = message; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public ClickEventMessageHandler(HandleMessage message) { this.message = message; }
/// <summary> /// 构造函数 /// </summary> /// <param name="message">处理消息器</param> public ViewEventMessageHandler(HandleMessage message) { this.messageHandler = message; }