Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        /// <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);
        }
Exemplo n.º 4
0
 public IMessageHandler MessageRole(HandleMessage msg)
 {
     try
     {
         return(new MsgTypeMessageRole().MessageRole(msg));
     }
     catch
     {
         return(new DefaultMessageHandler(msg));
     }
 }
Exemplo n.º 5
0
 public IMessageHandler MessageRole(HandleMessage msg)
 {
     try
     {
         return new MsgTypeMessageRole().MessageRole(msg);
     }
     catch
     {
         return new DefaultMessageHandler(msg);
     }
 }
Exemplo n.º 6
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="msghander"></param>
 public TextMessageHandler(string msg, HandleMessage msghander)
 {
     this.Message = msg;
     this.msghander = msghander;
 }
Exemplo n.º 7
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="message"></param>
 public VoiceMessageHandler(HandleMessage message)
 {
     this.msghander = message;
 }
Exemplo n.º 8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="msg"></param>
 /// <param name="msghander"></param>
 public TextMessageHandler(string msg, HandleMessage msghander)
 {
     this.Message   = msg;
     this.msghander = msghander;
 }
Exemplo n.º 9
0
        /// <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;
 }
Exemplo n.º 11
0
 /// <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;
 }
Exemplo n.º 13
0
        /// <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));
        }
Exemplo n.º 14
0
        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;
 }
Exemplo n.º 16
0
 /// <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)
 {
 }
Exemplo n.º 19
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="message"></param>
 public DefaultMessageHandler(HandleMessage message)
 {
     this.msghander = message;
 }
Exemplo n.º 20
0
        /// <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;
        }
Exemplo n.º 21
0
 /// <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;
 }
Exemplo n.º 24
0
 /// <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;
 }