コード例 #1
0
ファイル: AutoReplyBo.cs プロジェクト: KqSMea8/HS.Admin
        /// <summary>
        /// 回写订阅结果
        /// </summary>
        /// <param name="request">回写参数</param>
        /// <returns></returns>
        /// <remarks>2013-10-15 陶辉 创建</remarks>
        public override void WriteBackMessage(RequestXml request)
        {
            var config = new MkWeixinConfig();

            if (config.FollowType == (int)MarketingStatus.微信消息类型.文本)
            {
                Hyt.Util.Log.LogManager.Instance.WriteLog("订阅回复开始");

                #region 初始化数据

                var resxml = string.Format(@"<xml>
                        <ToUserName><![CDATA[{0}]]></ToUserName>
                        <FromUserName><![CDATA[{1}]]></FromUserName>
                        <CreateTime>{2}</CreateTime>
                        <MsgType><![CDATA[text]]></MsgType>
                        <Content><![CDATA[{3}]]></Content>
                        <FuncFlag>1</FuncFlag>
                        </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), config.FollowText);

                #endregion
                Hyt.Util.Log.LogManager.Instance.WriteLog("订阅:" + resxml);
                System.Web.HttpContext.Current.Response.Write(resxml);
                System.Web.HttpContext.Current.Response.End();
            }
        }
コード例 #2
0
ファイル: PingServer.cs プロジェクト: aoki1210/kigg
        private void SendPing()
        {
            const string RequestXml = "<?xml version=\"1.0\"?>" +
                                      "<methodCall>" +
                                      "<methodName>weblogUpdates.ping</methodName>" +
                                      "<params>" +
                                      "<param>" +
                                      "<value>{0}</value>" +
                                      "</param>" +
                                      "<param>" +
                                      "<value>{0}</value>" +
                                      "</param>" +
                                      "</params>" +
                                      "</methodCall>";

            if (ShouldPing())
            {
                _httpForm.PostAsync(
                    new HttpFormPostRawRequest
                {
                    Url         = _url,
                    ContentType = "text/xml",
                    Data        = RequestXml.FormatWith(_settings.SiteTitle, _settings.RootUrl)
                },
                    r => _lastPingedAt = SystemTime.Now(),
                    e => { }
                    );
            }
        }
コード例 #3
0
ファイル: ExcelBase.cs プロジェクト: freddylarag/Pollux
 protected void ProcessXml()
 {
     for (int i = 0; i < CountFiles; i++)
     {
         string[] xmlRequest = new string[_xml.Length];
         _xml.CopyTo(xmlRequest, 0);
         foreach (var row in Fields)
         {
             for (int fila = 0; fila < _xml.Length; fila++)
             {
                 try
                 {
                     string line = _xml[fila];
                     if (line.IndexOf(string.Format("{0}{1}{2}", Xml.PrefixField, row.Key, Xml.SuffixField)) >= 0)
                     {
                         if (row.Value[i].Value.Trim().Equals(KeyEmpty, StringComparison.InvariantCultureIgnoreCase))
                         {
                             xmlRequest[fila] = line.Replace(string.Format("{0}{1}{2}", Xml.PrefixField, row.Key, Xml.SuffixField), "");
                         }
                         else if (row.Value[i].Value.Trim().Equals(KeyNull, StringComparison.InvariantCultureIgnoreCase))
                         {
                             xmlRequest[fila] = "<!--" + line.Replace(string.Format("{0}{1}{2}", Xml.PrefixField, row.Key, Xml.SuffixField), "").Trim() + "-->";
                         }
                         else
                         {
                             xmlRequest[fila] = line.Replace(string.Format("{0}{1}{2}", Xml.PrefixField, row.Key, Xml.SuffixField), row.Value[i].Value);
                         }
                         break;
                     }
                     //else if (_xml[fila].IndexOf(Xml.PrefixComment) >= 0)
                     //{
                     //    int posStart = line.IndexOf(Xml.PrefixComment);
                     //    if(posStart>=0){
                     //        int length = line.IndexOf(Xml.SuffixComment)+3-posStart;
                     //        if (length > 0)
                     //        {
                     //            line =line.Replace(line.Substring(posStart, length),"");
                     //            if (string.IsNullOrWhiteSpace(line))
                     //            {
                     //                xmlRequest[fila] = "";
                     //            }
                     //        }
                     //    }
                     //}
                 }
                 catch (Exception ex)
                 {
                     Console.WriteLine("Error: {0}", ex.Message);
                 }
             }
         }
         CleanTagEmpty(ref xmlRequest);
         RequestXml.Add(new Summary
         {
             Request = new FileXml(CleanSpace(xmlRequest))
         });
     }
 }
コード例 #4
0
        /// <summary>
        /// 接收微信信息
        /// </summary>
        public static RequestXml RequestMsg()
        {
            //接收信息流
            Stream requestStream = System.Web.HttpContext.Current.Request.InputStream;

            byte[] requestByte = new byte[requestStream.Length];
            requestStream.Read(requestByte, 0, (int)requestStream.Length);
            //转换成字符串
            string requestStr = Encoding.UTF8.GetString(requestByte);
            //将XML文件封装到实体类requestXml中
            RequestXml requestXml = new RequestXml();

            if (!string.IsNullOrEmpty(requestStr))
            {
                //封装请求类到xml文件中
                XmlDocument requestDocXml = new XmlDocument();
                requestDocXml.LoadXml(requestStr);
                XmlElement rootElement = requestDocXml.DocumentElement;

                requestXml.ToUserName   = rootElement.SelectSingleNode("ToUserName").InnerText;   //开发者微信号
                requestXml.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText; //发送方微信号
                requestXml.CreateTime   = rootElement.SelectSingleNode("CreateTime").InnerText;   //消息发送信息
                requestXml.MsgType      = rootElement.SelectSingleNode("MsgType").InnerText;
                //requestXml.MsgId = rootElement.SelectSingleNode("MsgId").InnerText;

                //获取接收信息的类型
                switch (requestXml.MsgType)
                {
                //接收普通信息
                case "text":    //文本信息
                    requestXml.Content = rootElement.SelectSingleNode("Content").InnerText;
                    break;

                case "image":    //图片信息
                    requestXml.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
                    break;

                case "location":    //地理位置信息
                    requestXml.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
                    requestXml.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
                    break;

                //接收事件推送
                //大概包括有:关注/取消关注事件、扫描带参数二维码事件、上报地理位置事件、自定义菜单事件、点击菜单拉取消息时的事件推送、点击菜单跳转链接时的事件推送
                case "event":
                    requestXml.Event    = rootElement.SelectSingleNode("Event").InnerText;
                    requestXml.EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
                    break;
                }
            }

            return(requestXml);
        }
コード例 #5
0
ファイル: AutoReplyBo.cs プロジェクト: KqSMea8/HS.Admin
        /// <summary>
        /// 回写防伪验证结果
        /// </summary>
        /// <param name="request">回写参数</param>
        /// <returns></returns>
        /// <remarks>2013-10-15 陶辉 创建</remarks>
        public override void WriteBackMessage(RequestXml request)
        {
            var result = WeChatBo.Instance.CheckProduct(request.Content.Split(new string[] { ":", ":" },
                                                                              StringSplitOptions.RemoveEmptyEntries)[1]);
            var message = result.Status ? NoHtml(result.Data.Msg) : result.Message;

            #region 数据初始化

            var resxml = string.Format(@"<xml>
                        <ToUserName><![CDATA[{0}]]></ToUserName>
                        <FromUserName><![CDATA[{1}]]></FromUserName>
                        <CreateTime>{2}</CreateTime>
                        <MsgType><![CDATA[text]]></MsgType>
                        <Content><![CDATA[{3}]]></Content>
                        <FuncFlag>1</FuncFlag>
                        </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), message);

            #endregion
            try
            {
                Hyt.Util.Log.LogManager.Instance.WriteLog("防伪验证:" + resxml);
                System.Web.HttpContext.Current.Response.Write(resxml);
                System.Web.HttpContext.Current.Response.End();

                var answer = new MkWeixinQuestion()
                {
                    Messages      = message,
                    MessagesTime  = DateTime.Now,
                    ReplyerSysNo  = 0,
                    Status        = (int)MarketingStatus.微信咨询消息状态.已读,
                    Type          = (int)MarketingStatus.微信咨询类型.回复,
                    WeixinId      = request.FromUserName,
                    CustomerSysNo = 0
                };
                //answer写入表
                IMkWeixinQuestionDao.Instance.Create(answer);
            }
            catch (Exception)
            {
                //TODO:
            }
        }
コード例 #6
0
        /// <summary>
        /// 回复消息(微信信息返回)
        /// </summary>
        /// <param name="weixinXML"></param>
        private static string ResponseMsg(RequestXml requestXml)
        {
            string resXml = "";

            try
            {
                switch (requestXml.MsgType)
                {
                //当收到文本信息的时候回复信息
                case "text":
                    resXml = "<xml><ToUserName><![CDATA[" + requestXml.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + requestXml.ToUserName + "]]></FromUserName><CreateTime>" + DateTime.Now.ToString("yyyyMMdd") + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + "文本" + "]]></Content><FuncFlag>0</FuncFlag></xml>";
                    break;

                //当接收推送事件时回复的信息
                case "event":
                    switch (requestXml.Event.ToLower())
                    {
                    //关注的时候回复信息
                    case "subscribe":
                        resXml = "<xml><ToUserName><![CDATA[" + requestXml.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + requestXml.ToUserName + "]]></FromUserName><CreateTime>" + DateTime.Now.ToString("yyyyMMdd") + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + "第一次关注" + "]]></Content><FuncFlag>0</FuncFlag></xml>";;
                        break;

                    //自定义菜单的时候回复信息
                    case "click":
                        resXml = "<xml><ToUserName><![CDATA[" + requestXml.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + requestXml.ToUserName + "]]></FromUserName><CreateTime>" + DateTime.Now.ToString("yyyyMMdd") + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + "单击事件" + "]]></Content><FuncFlag>0</FuncFlag></xml>";;
                        break;

                    case "view":
                        break;
                    }
                    break;
                }

                return(resXml);
            }
            catch
            {
                return("");
            }
        }
コード例 #7
0
ファイル: AutoReplyBo.cs プロジェクト: KqSMea8/HS.Admin
        /// <summary>
        /// 回写异常结果
        /// </summary>
        /// <param name="request">回写参数</param>
        /// <returns></returns>
        /// <remarks>2013-10-15 陶辉 创建</remarks>
        public override void WriteBackMessage(RequestXml request)
        {
            var message = "抱歉,您输入的格式有误!";

            #region 初始化数据

            var resxml = string.Format(@"<xml>
                        <ToUserName><![CDATA[{0}]]></ToUserName>
                        <FromUserName><![CDATA[{1}]]></FromUserName>
                        <CreateTime>{2}</CreateTime>
                        <MsgType><![CDATA[text]]></MsgType>
                        <Content><![CDATA[{3}]]></Content>
                        <FuncFlag>1</FuncFlag>
                        </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), message);

            #endregion

            try
            {
                System.Web.HttpContext.Current.Response.Write(resxml);
                System.Web.HttpContext.Current.Response.End();

                var answer = new MkWeixinQuestion()
                {
                    Messages      = message,
                    MessagesTime  = DateTime.Now,
                    ReplyerSysNo  = 0,
                    Status        = (int)MarketingStatus.微信咨询消息状态.已读,
                    Type          = (int)MarketingStatus.微信咨询类型.回复,
                    WeixinId      = request.FromUserName,
                    CustomerSysNo = 0
                };
                //answer写入表
                IMkWeixinQuestionDao.Instance.Create(answer);
            }
            catch (Exception)
            {
                //TODO:
            }
        }
コード例 #8
0
ファイル: AutoReplyBo.cs プロジェクト: KqSMea8/HS.Admin
        /// <summary>
        /// 接收信息处理方法
        /// </summary>
        /// <param name="postStr">接收信息</param>
        /// <returns>void</returns>
        /// <remarks>2013-10-31 陶辉 创建</remarks>
        public void Handle(string postStr)
        {
            //封装请求类
            var doc = new XmlDocument();

            doc.LoadXml(postStr);
            var rootElement = doc.DocumentElement;

            var xml = new RequestXml()
            {
                ToUserName   = rootElement.SelectSingleNode("ToUserName").InnerText,
                FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
                CreateTime   = rootElement.SelectSingleNode("CreateTime").InnerText,
                MsgType      = rootElement.SelectSingleNode("MsgType").InnerText
            };

            if (xml.MsgType == "text")
            {
                xml.Content = rootElement.SelectSingleNode("Content").InnerText;
            }
            else if (xml.MsgType == "event")
            {
                var selectSingleNode = rootElement.SelectSingleNode("Event");
                if (selectSingleNode != null)
                {
                    xml.SubscribeEvent = selectSingleNode.InnerText;
                }
            }

            #region 收集微信消息

            //switch (xml.MsgType)
            //{
            //    case "text":
            //        xml.Content = rootElement.SelectSingleNode("Content").InnerText;
            //        break;
            //    case "location":
            //        xml.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
            //        xml.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
            //        xml.Scale = rootElement.SelectSingleNode("Scale").InnerText;
            //        xml.Label = rootElement.SelectSingleNode("Label").InnerText;
            //        break;
            //    case "image":
            //        xml.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
            //        break;
            //    case "event":
            //        xml.SubscribeEvent = rootElement.SelectSingleNode("Event").InnerText;
            //        break;
            //}

            #endregion

            //回复类型
            Reply reply = null;
            if (xml.MsgType == "event")
            {
                Hyt.Util.Log.LogManager.Instance.WriteLog("事件");
                reply = new SubscribeReply();
            }
            else
            {
                if (xml.Content.IndexOf("防伪验证") >= 0)
                {
                    reply = new CheckAuthenticityReply();
                }
                else
                {
                    //自动回复
                    reply = new AutoReply();
                }
            }
            try
            {
                if (!string.IsNullOrEmpty(xml.Content))
                {
                    var question = new MkWeixinQuestion()
                    {
                        Messages      = xml.Content,
                        MessagesTime  = DateTime.Now,
                        ReplyerSysNo  = 0,
                        Status        = (int)MarketingStatus.微信咨询消息状态.未读,
                        Type          = (int)MarketingStatus.微信咨询类型.咨询,
                        WeixinId      = xml.FromUserName,
                        CustomerSysNo = 0
                    };
                    //question写入表
                    IMkWeixinQuestionDao.Instance.Create(question);
                }
            }
            catch (Exception)
            {
                //TODO:
            }

            reply.WriteBackMessage(xml);
        }
コード例 #9
0
ファイル: AutoReplyBo.cs プロジェクト: KqSMea8/HS.Admin
        /// <summary>
        /// 回写自动回复结果
        /// </summary>
        /// <param name="request">回写参数</param>
        /// <returns></returns>
        /// <remarks>2013-10-15 陶辉 创建</remarks>
        public override void WriteBackMessage(RequestXml request)
        {
            var list = WeChatBo.Instance.GetAutoReplys(request.Content);

            #region 构造数据

            //var item1 = new MkWeixinKeywordsReply()
            //{
            //    ReplyType = (int)MarketingStatus.微信关键词回复类型.文本,
            //    Content = "请稍等,待会给您回复。"
            //};
            //var item2 = new MkWeixinKeywordsReply()
            //{
            //    ReplyType = (int)MarketingStatus.微信关键词回复类型.图文,
            //    Title = "商城新品上市了,赶快下手吧",
            //    Content = @"<div style='text-align:center'><img alt="" data-pinit='registered' src='http://image.huiyuanti.com/ckimages/20130422162706.jpg' /><p>新品上市了</p></div>",
            //    Image = "http://image.huiyuanti.com/ckimages/20130422162714.jpg",
            //    Hyperlink = "http://www.huiyuanti.com/Home/Announcement/19"
            //};
            ////list.Add(item1);
            //list.Add(item2);


            #endregion

            #region 初始化数据

            var xmls = list.Select((q, i) => new
            {
                str = q.ReplyType == (int)MarketingStatus.微信关键词回复类型.文本 ?

                      #region 文本回复内容

                      string.Format(@"<xml>
                                <ToUserName><![CDATA[{0}]]></ToUserName>
                                <FromUserName><![CDATA[{1}]]></FromUserName>
                                <CreateTime>{2}</CreateTime>
                                <MsgType><![CDATA[text]]></MsgType>
                                <Content><![CDATA[{3}]]></Content>
                                <FuncFlag>1</FuncFlag>
                                </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), q.Content)

                      #endregion
 :
                      #region 图文回复内容

                      string.Format(@"<xml>
                                 <ToUserName><![CDATA[{0}]]></ToUserName>
                                 <FromUserName><![CDATA[{1}]]></FromUserName>
                                 <CreateTime>{2}</CreateTime>
                                 <MsgType><![CDATA[news]]></MsgType>
                                 <ArticleCount>1</ArticleCount>
                                 <Articles>
                                 <item>
                                 <Title><![CDATA[{3}]]></Title> 
                                 <Description><![CDATA[{4}]]></Description>
                                 <PicUrl><![CDATA[{5}]]></PicUrl>
                                 <Url><![CDATA[{6}]]></Url>
                                 </item>
                                 </Articles>
                                 </xml>", request.FromUserName, request.ToUserName, DateTime.Now.ToShortDateString(), q.Title, q.Content, q.Image, q.Hyperlink)

                      #endregion
                ,
                content = q.Content
            }).ToList();

            #endregion

            try
            {
                foreach (var xml in xmls)
                {
                    System.Web.HttpContext.Current.Response.Write(xml.str);

                    var answer = new MkWeixinQuestion()
                    {
                        Messages      = xml.content,
                        MessagesTime  = DateTime.Now,
                        ReplyerSysNo  = 1,
                        Status        = (int)MarketingStatus.微信咨询消息状态.已读,
                        Type          = (int)MarketingStatus.微信咨询类型.回复,
                        WeixinId      = request.FromUserName,
                        CustomerSysNo = 0
                    };
                    //answer写入表
                    IMkWeixinQuestionDao.Instance.Create(answer);

                    break;
                }

                System.Web.HttpContext.Current.Response.End();
            }
            catch (Exception)
            {
                //TODO:
            }
        }
コード例 #10
0
ファイル: AutoReplyBo.cs プロジェクト: KqSMea8/HS.Admin
 /// <summary>
 /// 消息自动回复抽象方法
 /// </summary>
 /// <param name="request">回复参数</param>
 /// <remarks>2013-10-15 陶辉 创建</remarks>
 public virtual void WriteBackMessage(RequestXml request)
 {
 }