public wxMessage GetCommMessage(XmlDocument xmldoc) { wxMessage ret = new wxMessage(); XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName"); XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName"); XmlNode CreateTime = xmldoc.SelectSingleNode("/xml/CreateTime"); XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType"); ret.ToUserName = ToUserName.InnerText; ret.FromUserName = FromUserName.InnerText; ret.CreateTime = CreateTime.InnerText; ret.MsgType = MsgType.InnerText.ToLower(); return(ret); }
public string MakeTxMsg(wxMessage wxMsg, bool bACK) { string ret = ""; string ToUserName; string FromUserName; if (bACK) { ToUserName = wxMsg.FromUserName; FromUserName = wxMsg.ToUserName; } else { ToUserName = wxMsg.ToUserName; FromUserName = wxMsg.FromUserName; } switch (wxMsg.MsgType) { case "text": ret = string.Format(ReplyType.Message_Text, ToUserName, FromUserName, DateTime.Now.Ticks, wxMsg.Content); break; case "news": string Articles = ""; for (int i = 0; i < wxMsg.ArticleCount; i++) { Articles += string.Format(ReplyType.Message_News_Item, wxMsg.NewsItemList[i].Title, wxMsg.NewsItemList[i].Description, wxMsg.NewsItemList[i].PicUrl, wxMsg.NewsItemList[i].Url); } ret = string.Format(ReplyType.Message_News_Main, ToUserName, FromUserName, DateTime.Now.Ticks, wxMsg.ArticleCount.ToString(), Articles); break; } return(ret); }
public string MakeTxMsg(wxMessage wxMsg) { return(MakeTxMsg(wxMsg, true)); }
public wxMessage GetMessage(string postStr) { if (_queue.Count >= 50) { _queue = _queue.Where(q => { return(q.CreateTime.AddSeconds(20) > DateTime.Now); }).ToList(); //保留20秒内未响应的消息 } wxMessage ret = null; // new wxMessage(); XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(new System.IO.MemoryStream(encoding.GetBytes(postStr))); ret = GetCommMessage(xmldoc); if (ret.MsgType == "event")//事件类型消息推荐使用FromUserName + CreateTime 排重 { if (_queue.FirstOrDefault(m => { return((m.MsgFlag == ret.CreateTime) && (m.FromUser == ret.FromUserName)); }) == null) { _queue.Add(new BaseMsg { CreateTime = DateTime.Now, FromUser = ret.FromUserName, MsgFlag = ret.CreateTime }); } else { return(null); } } else { if (_queue.FirstOrDefault(m => { return(m.MsgFlag == ret.MsgId); }) == null) { _queue.Add(new BaseMsg { CreateTime = DateTime.Now, FromUser = ret.FromUserName, MsgFlag = ret.MsgId }); } else { return(null); } } switch (ret.MsgType) { case "event": //responseContent = EventHandle(xmldoc);//事件处理 ret.Event = xmldoc.SelectSingleNode("/xml/Event").InnerText.ToLower(); ret.EventKey = xmldoc.SelectSingleNode("/xml/EventKey").InnerText; break; case "text": //responseContent = TextHandle(xmldoc);//接受文本消息处理 ret.Content = xmldoc.SelectSingleNode("/xml/Content").InnerText; ret.MsgId = xmldoc.SelectSingleNode("/xml/MsgId").InnerText; break; default: break; } return(ret); }