/// <summary>
        /// 转成取消订阅信息
        /// </summary>
        /// <param name="rootMsg"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestUnSubscribeEventMsg ToUnSubscribeEventMsg(this RequestRootMsg rootMsg, JObject jObject)
        {
            RequestUnSubscribeEventMsg unSubscribeEventMsg = new RequestUnSubscribeEventMsg
            {
                CreateTime   = rootMsg.CreateTime,
                FromUserName = rootMsg.FromUserName,
                ToUserName   = rootMsg.ToUserName
            };

            return(unSubscribeEventMsg);
        }
        /// <summary>
        /// 根据JObject得到请求消息基类基本信息
        /// </summary>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestRootMsg ParseRequestRootMsg(JObject jObject)
        {
            RequestRootMsg rootMsg = new RequestRootMsg
            {
                ToUserName   = (string)jObject["ToUserName"][CDATA_KEY],
                FromUserName = (string)jObject["FromUserName"][CDATA_KEY],
                CreateTime   = (long)jObject["CreateTime"]
            };
            string msgType = (string)jObject["MsgType"][CDATA_KEY];

            rootMsg.MsgType = (RequestMsgType)Enum.Parse(typeof(RequestMsgType), msgType, true);
            return(rootMsg);
        }
        /// <summary>
        /// JObject转换成文本信息
        /// </summary>
        /// <param name="rootMsg"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestTextMsg ToTextMsg(this RequestRootMsg rootMsg, JObject jObject)
        {
            RequestTextMsg textMsg = new RequestTextMsg
            {
                CreateTime   = rootMsg.CreateTime,
                FromUserName = rootMsg.FromUserName,
                ToUserName   = rootMsg.ToUserName,
                Content      = (string)jObject["Content"][CDATA_KEY],
                MsgId        = (long)jObject["MsgId"]
            };

            return(textMsg);
        }
        /// <summary>
        /// 转换成小视频信息
        /// </summary>
        /// <param name="rootMsg"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestShortVideoMsg ToShortVideoMsg(this RequestRootMsg rootMsg, JObject jObject)
        {
            RequestShortVideoMsg shortVideoMsg = new RequestShortVideoMsg()
            {
                CreateTime   = rootMsg.CreateTime,
                FromUserName = rootMsg.FromUserName,
                ToUserName   = rootMsg.ToUserName,
                MediaId      = (string)jObject["MediaId"][CDATA_KEY],
                ThumbMediaId = (string)jObject["ThumbMediaId"][CDATA_KEY],
                MsgId        = (long)jObject["MsgId"]
            };

            return(shortVideoMsg);
        }
        /// <summary>
        /// 转换成图片信息
        /// </summary>
        /// <param name="rootMsg"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestImageMsg ToImageMsg(this RequestRootMsg rootMsg, JObject jObject)
        {
            RequestImageMsg imageMsg = new RequestImageMsg()
            {
                CreateTime   = rootMsg.CreateTime,
                FromUserName = rootMsg.FromUserName,
                ToUserName   = rootMsg.ToUserName,
                PicUrl       = (string)jObject["PicUrl"][CDATA_KEY],
                MediaId      = (string)jObject["MediaId"][CDATA_KEY],
                MsgId        = (long)jObject["MsgId"]
            };

            return(imageMsg);
        }
        /// <summary>
        /// 转换成链接信息
        /// </summary>
        /// <param name="rootMsg"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestLinkMsg ToLinkMsg(this RequestRootMsg rootMsg, JObject jObject)
        {
            RequestLinkMsg linkMsg = new RequestLinkMsg()
            {
                CreateTime   = rootMsg.CreateTime,
                FromUserName = rootMsg.FromUserName,
                ToUserName   = rootMsg.ToUserName,
                Title        = (string)jObject["Title"][CDATA_KEY],
                Description  = (string)jObject["Description"][CDATA_KEY],
                Url          = (string)jObject["Url"][CDATA_KEY],
                MsgId        = (long)jObject["MsgId"]
            };

            return(linkMsg);
        }
        /// <summary>
        /// 转换成语音消息
        /// </summary>
        /// <param name="rootMsg"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestVoiceMsg ToVoiceMsg(this RequestRootMsg rootMsg, JObject jObject)
        {
            RequestVoiceMsg voiceMsg = new RequestVoiceMsg()
            {
                CreateTime   = rootMsg.CreateTime,
                FromUserName = rootMsg.FromUserName,
                ToUserName   = rootMsg.ToUserName,
                MediaId      = (string)jObject["MediaId"][CDATA_KEY],
                Format       = (string)jObject["Format"][CDATA_KEY],
                Recognition  = (string)jObject["Recognition"][CDATA_KEY],
                MsgId        = (long)jObject["MsgId"]
            };

            return(voiceMsg);
        }
        /// <summary>
        /// 转换成地理位置信息
        /// </summary>
        /// <param name="rootMsg"></param>
        /// <param name="jObject"></param>
        /// <returns></returns>
        public static RequestLocationMsg ToLocationMsg(this RequestRootMsg rootMsg, JObject jObject)
        {
            RequestLocationMsg locationMsg = new RequestLocationMsg()
            {
                CreateTime   = rootMsg.CreateTime,
                FromUserName = rootMsg.FromUserName,
                ToUserName   = rootMsg.ToUserName,
                Location_X   = (double)jObject["Location_X"],
                Location_Y   = (double)jObject["Location_Y"],
                Scale        = (int)jObject["Scale"],
                Label        = (string)jObject["Label"][CDATA_KEY],
                MsgId        = (long)jObject["MsgId"]
            };

            return(locationMsg);
        }
Exemplo n.º 9
0
 /// <summary>
 /// 执行之后操作
 /// </summary>
 /// <param name="requestRootMsg"></param>
 protected virtual void OnActionExecuted(RequestRootMsg requestRootMsg)
 {
 }
Exemplo n.º 10
0
        /// <summary>
        /// 根据XML转换成相应的实体
        /// </summary>
        /// <param name="xml"></param>
        /// <returns></returns>
        public static RequestRootMsg ConvertEntity(string xml)
        {
            //将xml字符串解析成JObject对象
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(xml);
            string         json    = JsonConvert.SerializeObject(doc);
            JObject        jo      = (JObject)JObject.Parse(json)["xml"];
            RequestRootMsg rootMsg = ParseRequestRootMsg(jo);

            switch (rootMsg.MsgType)
            {
            case RequestMsgType.Text:
                rootMsg = rootMsg.ToTextMsg(jo);
                break;

            case RequestMsgType.Location:
                rootMsg = rootMsg.ToLocationMsg(jo);
                break;

            case RequestMsgType.Image:
                rootMsg = rootMsg.ToImageMsg(jo);
                break;

            case RequestMsgType.Voice:
                rootMsg = rootMsg.ToVideoMsg(jo);
                break;

            case RequestMsgType.Video:
                rootMsg = rootMsg.ToVideoMsg(jo);
                break;

            case RequestMsgType.Link:
                rootMsg = rootMsg.ToLinkMsg(jo);
                break;

            case RequestMsgType.ShortVideo:
                rootMsg = rootMsg.ToShortVideoMsg(jo);
                break;

            case RequestMsgType.Event:
            {
                RequestEventType eventType = GetRequestEventType(jo);
                switch (eventType)
                {
                case RequestEventType.Subscribe:
                    rootMsg = rootMsg.ToSubscribeEventMsg(jo);
                    break;

                case RequestEventType.UnSubscribe:
                    rootMsg = rootMsg.ToUnSubscribeEventMsg(jo);
                    break;

                default:
                    throw new ArgumentNullException("消息/事件类型未匹配到!");
                }
            }
            break;

            default:
                throw new ArgumentNullException("消息/事件类型未匹配到!");
            }

            return(rootMsg);
        }
 protected override void OnActionExecuted(RequestRootMsg requestRootMsg)
 {
 }
Exemplo n.º 12
0
 /// <summary>
 /// 构造器
 /// </summary>
 /// <param name="xml">微信端传入的XML字符串</param>
 /// <param name="authSignature">签名认证实体信息</param>
 public HandlerMsgCenter(string xml, AuthSignature authSignature)
 {
     //转换成实体类型
     CurrentRootMsg = RequestMsgFactory.ConvertEntity(xml);
 }
Exemplo n.º 13
0
 /// <summary>
 /// 执行之后操作
 /// </summary>
 /// <param name="requestRootMsg"></param>
 public virtual void OnActionExecuted(RequestRootMsg requestRootMsg)
 {
 }