/// <summary> /// 消息分发、处理 /// </summary> /// <param name="strContent">消息内容</param> /// <returns></returns> public string Dispatcher(string strContent) { string strResponse = string.Empty; if (string.IsNullOrEmpty(strContent)) { return(strResponse); } //解析微信请求的消息内容,并找出MsgType Stream stream = ConvertDataType.String2Stream(strContent, Encoding.UTF8); XmlHelper <Stream> xo = new XmlHelper <Stream>(stream); string sMsgType = xo.GetXElementContent("xml.MsgType"); //根据消息内容的类型,使用不同的类进行处理 switch (sMsgType.ToLower()) { case "text": strResponse = new MsgText(xo.GetObj <MessageTextEntity>("xml")).MsgResponse(); break; case "event": strResponse = new MsgEvent(strContent).MsgResponse(); break; default: break; } return(strResponse); }
/// <summary> /// 接口,返回数据 /// </summary> /// <returns></returns> public string MsgResponse() { string sRespData = string.Empty; if (string.IsNullOrEmpty(this._sContent)) { return(sRespData); } XmlHelper <Stream> xo = new XmlHelper <Stream>(ConvertDataType.String2Stream(this._sContent, Encoding.UTF8)); string sEvent = xo.GetXElementContent("xml.Event"); switch (sEvent.ToLower()) { //订阅事件 case "subscribe": sRespData = new Subscribe(xo.GetObj <MessageSubscribeEvent>("xml")).MsgResponse(); break; //取消订阅事件 case "unsubscribe": sRespData = new Unsubscribe(xo.GetObj <MessageSubscribeEvent>("xml")).MsgResponse(); break; //上报地理位置事件 case "location": sRespData = new Location(xo.GetObj <MessageLocationEvent>("xml")).MsgResponse(); break; //点击菜单拉取消息的事件推送 case "click": sRespData = new ClickEvent(xo.GetObj <MessageMenuPushEvent>("xml")).MsgResponse(); break; //点击菜单跳转链接的事件推送 case "view": sRespData = new ViewEvent(xo.GetObj <MessageMenuPushEvent>("xml")).MsgResponse(); break; //扫码推事件的事件推送 case "scancode_push": sRespData = new ScancodePush(xo.GetObj <MessageScancodePushEvent>("xml")).MsgResponse(); break; //扫码推事件且弹出“消息接收中”提示框的事件推送 case "scancode_waitmsg": sRespData = new ScancodeWaitmsg(xo.GetObj <MessageScancodePushEvent>("xml")).MsgResponse(); break; //弹出系统拍照发图的事件推送 case "pic_sysphoto": sRespData = new PicSysPhoto(xo.GetObj <MessagePicSysPhotoEvent>("xml")).MsgResponse(); break; //弹出拍照或者相册发图的事件推送 case "pic_photo_or_album": sRespData = new PicPhotoOrAlbum(xo.GetObj <MessagePicSysPhotoEvent>("xml")).MsgResponse(); break; //弹出微信相册发图器的事件推送 case "pic_weixin": sRespData = new PicWeiXin(xo.GetObj <MessagePicSysPhotoEvent>("xml")).MsgResponse(); break; //弹出地理位置选择器的事件推送 case "location_select": sRespData = new LocationSelect(xo.GetObj <MessageLocationSelectEvent>("xml")).MsgResponse(); break; //成员进入应用的事件推送 case "enter_agent": sRespData = new EnterAgent(xo.GetObj <MessageMenuPushEvent>("xml")).MsgResponse(); break; //异步任务完成事件推送 case "batch_job_result": sRespData = new BatchJobResult(xo.GetObj <MessageBatchJobResultEvent>("xml")).MsgResponse(); break; default: break; } return(sRespData); }