/// <summary> /// 弹出微信相册发图器 /// </summary> /// <returns></returns> public virtual IResponseMessageBase OneEvent_PicWeixinRequest(RequestMessageEvent_PicWeixin requestMessage) { return(DefaultResponseMessage(requestMessage)); }
/// <summary> /// 获取XDocument转换后的IRequestMessageBase实例。 /// 如果MsgType不存在,抛出UnknownRequestMsgTypeException异常 /// </summary> /// <returns></returns> public static IRequestMessageBase GetRequestEntity(XDocument doc) { RequestMessageBase requestMessage = null; RequestMsgType msgType; try { msgType = MsgTypeHelper.GetRequestMsgType(doc); switch (msgType) { case RequestMsgType.Text: requestMessage = new RequestMessageText(); break; case RequestMsgType.Location: requestMessage = new RequestMessageLocation(); break; case RequestMsgType.Image: requestMessage = new RequestMessageImage(); break; case RequestMsgType.Voice: requestMessage = new RequestMessageVoice(); break; case RequestMsgType.Video: requestMessage = new RequestMessageVideo(); break; case RequestMsgType.Event: //判断Event类型 switch (doc.Root.Element("Event").Value.ToUpper()) { case "CLICK": //菜单点击 requestMessage = new RequestMessageEvent_Click(); break; case "VIEW": //URL跳转 requestMessage = new RequestMessageEvent_View(); break; case "SUBSCRIBE": //订阅(关注) requestMessage = new RequestMessageEvent_Subscribe(); break; case "UNSUBSCRIBE": //取消订阅(关注) requestMessage = new RequestMessageEvent_UnSubscribe(); break; case "SCANCODEPUSH": //扫码推事件(scancode_push) requestMessage = new RequestMessageEvent_ScancodePush(); break; case "SCANCODEWAITMSG": //扫码推事件且弹出“消息接收中”提示框(scancode_waitmsg) requestMessage = new RequestMessageEvent_ScancodeWaitmsg(); break; case "PICSYSPHOTO": //弹出系统拍照发图(pic_sysphoto) requestMessage = new RequestMessageEvent_PicSysphoto(); break; case "PICPHOTOORALBUM": //弹出拍照或者相册发图(pic_photo_or_album) requestMessage = new RequestMessageEvent_PicPhotoOrAlbum(); break; case "PICWEIXIN": //弹出微信相册发图器(pic_weixin) requestMessage = new RequestMessageEvent_PicWeixin(); break; case "LOCATIONSELECT": //弹出地理位置选择器(location_select) requestMessage = new RequestMessageEvent_LocationSelect(); break; default: //其他意外类型(也可以选择抛出异常) requestMessage = new RequestMessageEventBase(); break; } break; default: throw new UnknownRequestMsgTypeException(string.Format("MsgType:{0} 在RequestMessageFactory中没有对应的处理程序!", msgType), new ArgumentOutOfRangeException()); //为了能够对类型变动最大程度容错(如微信目前还可以对公众账号suscribe等未知类型,但API没有开放),建议在使用的时候catch这个异常 } EntityHelper.FillEntityWithXml(requestMessage, doc); } catch (ArgumentException ex) { throw new WeixinException(string.Format("RequestMessage转换出错!可能是MsgType不存在!,XML:{0}", doc.ToString()), ex); } return(requestMessage); }