コード例 #1
0
ファイル: WxMessage.cs プロジェクト: xingx001/WxApi
        public string Response(string msg)
        {
            WxMessageRecXmlModel requestModec  = InitMessageModel(msg);
            WxMessageResXmlModel responseModel = ResponseModel(requestModec);

            return(GetResponse(responseModel));
        }
コード例 #2
0
ファイル: WxMessage.cs プロジェクト: xingx001/WxApi
        public bool ResponseModel(WxMessageRecXmlModel ReciveModel, ref string sEncryptMsg)
        {
            WxMessageResXmlModel replyMsg = ResponseModel(ReciveModel);
            string timeStamp = "";
            string nonce     = "";

            WxDecode.EncryptMsg(GetResponse(replyMsg), timeStamp, nonce, ref sEncryptMsg);
            return(true);
        }
コード例 #3
0
ファイル: WxMessage.cs プロジェクト: xingx001/WxApi
        public bool Response(string msg, string sTimeStamp, string sNonce, string sMsgSignature, ref string responseMsg)
        {
            int errorCode = WxDecode.DecryptMsg(sMsgSignature, sTimeStamp, sNonce, msg, ref responseMsg);

            if (errorCode != 0)
            {
                string error = ErrorMessage.TranslateErrorCode(errorCode);
                return(false);
            }
            else
            {
                WxMessageRecXmlModel requestModec = InitMessageModel(responseMsg);
                return(ResponseModel(requestModec, ref responseMsg));
            }
        }
コード例 #4
0
ファイル: WxMessage.cs プロジェクト: xingx001/WxApi
        public WxMessageResXmlModel ResponseModel(WxMessageRecXmlModel ReciveModel)
        {
            WxMessageResXmlModel responseModel = new WxMessageResXmlModel();

            switch (ReciveModel.MsgType)
            {
            case "text":

                if (CatchKeyWord.IsKeyWord(ReciveModel.Content))
                {
                    responseModel.ToUserName   = ReciveModel.FromUserName;
                    responseModel.FromUserName = ReciveModel.ToUserName;
                    responseModel.CreateTime   = TimeHelper.GetTimeStamp(DateTime.Now);
                    responseModel.MsgType      = "text";
                    //处理关键字消息,暂时做文本消息处理
                    responseModel.Content = "收到关键字消息,内容:" + ReciveModel.Content;
                }
                else
                {
                    string user = ReciveModel.FromUserName.Replace("_", "");
                    TuringResponseModel TuringModel = TuringRebotRequest.AskTuring(user, ReciveModel.Content);
                    responseModel = TuringResponseModel(TuringModel, ReciveModel);
                }
                break;

            case "image":    //图片
                responseModel.ToUserName   = ReciveModel.FromUserName;
                responseModel.FromUserName = ReciveModel.ToUserName;
                responseModel.CreateTime   = TimeHelper.GetTimeStamp(DateTime.Now);
                responseModel.MsgType      = "text";
                responseModel.Content      = "发的是什么鬼!!";//,内容:" + ReciveModel.Content;
                break;

            default:
                responseModel.ToUserName   = ReciveModel.FromUserName;
                responseModel.FromUserName = ReciveModel.ToUserName;
                responseModel.CreateTime   = TimeHelper.GetTimeStamp(DateTime.Now);
                responseModel.MsgType      = "text";
                responseModel.Content      = "虽然你说了那么多,我就当没听见吧。";
                break;
            }


            return(responseModel);
        }
コード例 #5
0
ファイル: WxMessage.cs プロジェクト: xingx001/WxApi
        public WxMessageRecXmlModel InitMessageModel(string Msg)
        {
            WxMessageRecXmlModel model = new WxMessageRecXmlModel();

            if (string.IsNullOrEmpty(Msg))
            {
                return(model);
            }

            //封装请求类
            XmlDocument requestDocXml = new XmlDocument();

            requestDocXml.LoadXml(Msg);
            XmlElement rootElement = requestDocXml.DocumentElement;

            model.ToUserName   = rootElement.SelectSingleNode("ToUserName").InnerText;
            model.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
            model.CreateTime   = rootElement.SelectSingleNode("CreateTime").InnerText;
            model.MsgType      = rootElement.SelectSingleNode("MsgType").InnerText;
            switch (model.MsgType)
            {
            case "text":    //文本
                model.Content = rootElement.SelectSingleNode("Content").InnerText;
                break;

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

            case "event":                       //事件
                model.Event = rootElement.SelectSingleNode("Event").InnerText;
                if (model.Event == "subscribe") //关注类型
                {
                    model.EventKey = rootElement.SelectSingleNode("EventKey").InnerText;
                }
                break;

            default:
                model.Content = rootElement.SelectSingleNode("Content").InnerText;
                break;
            }

            return(model);
        }
コード例 #6
0
ファイル: WxMessage.cs プロジェクト: xingx001/WxApi
        public WxMessageResXmlModel TuringResponseModel(TuringResponseModel TuringResponseModel, WxMessageRecXmlModel ReciveModel)
        {
            WxMessageResXmlModel WxMessageResXmlModel = new WxMessageResXmlModel();

            WxMessageResXmlModel.ToUserName   = ReciveModel.FromUserName;
            WxMessageResXmlModel.FromUserName = ReciveModel.ToUserName;
            WxMessageResXmlModel.CreateTime   = TimeHelper.GetTimeStamp(DateTime.Now);

            switch (TuringResponseModel.code)
            {
            case 100000:    //文本类
                WxMessageResXmlModel.MsgType = "text";
                WxMessageResXmlModel.Content = TuringResponseModel.text;
                break;

            case 200000:    //链接类
                WxMessageResXmlModel.MsgType = "text";
                WxMessageResXmlModel.Content = TuringResponseModel.text + System.Environment.NewLine + TuringResponseModel.url;
                break;

            case 302000:    //新闻类
                WxMessageResXmlModel.MsgType = "text";
                WxMessageResXmlModel.Content = TuringResponseModel.text;
                break;

            case 308000:    //菜谱类
                WxMessageResXmlModel.MsgType = "text";
                WxMessageResXmlModel.Content = TuringResponseModel.text;
                break;

            default:
                WxMessageResXmlModel.MsgType = "text";
                WxMessageResXmlModel.Content = TuringResponseModel.text;
                break;
            }
            return(WxMessageResXmlModel);
        }