/// <summary> /// 菜单点击处理事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void cm_ProcessingEventClick(object sender, CallbackManager.ProcessingEventClickEventArgs e) { //接收到的信息对象 ReceiveMessage.EventClick rec = e.MessageData; //应用id。多应用公用同一个server时,可以根据此参数判断是哪个应用,从而进行相应处理 string appID = rec.AppID; //按钮key值 string key = rec.EventKey; //todo... //... //如果需要返回信息,则实例化相应类型的ReplyMessage对象,赋值给e.replyMessage //如果无需返回信息,则不用处理e.replyMessage或给其复制null ReceiveMessage.EventLocation location = UserProvider.GetUserLocation(rec.FromUserName); if (location != null) { e.ReplyMessage = new ReplyMessage.Text(rec.FromUserName, rec.ToUserName, "x:" + location.Latitude + ",Y:" + location.Longitude + ",Pre" + location.Precision); } else { e.ReplyMessage = new ReplyMessage.Text(rec.FromUserName, rec.ToUserName, "null"); } }
/// <summary> /// 根据xml获取消息类型实体 /// </summary> /// <param name="xml">接收到消息解密后的xml</param> /// <param name="receiveMessageEnum">消息类型枚举</param> /// <returns>消息类型</returns> public static ReceiveMessage.Base Parse(XmlDocument xml, ref ReceiveMessageEnum receiveMessageEnum) { XmlNode root = xml.FirstChild; string msgType = root["MsgType"].InnerText.ToLower(); string Event = string.Empty; if (root["Event"] != null) { Event = root["Event"].InnerText.ToLower(); } receiveMessageEnum = Enums.QY.getEnum(msgType, Event);//ReceiveMessage_backup.getEnum(msgType, Event); ReceiveMessage.Base rec = null; switch (receiveMessageEnum) { case ReceiveMessageEnum.Unknow: break; case ReceiveMessageEnum.Text: rec = new ReceiveMessage.Text(); break; case ReceiveMessageEnum.Image: rec = new ReceiveMessage.Image(); break; case ReceiveMessageEnum.Voice: rec = new ReceiveMessage.Voice(); break; case ReceiveMessageEnum.Video: rec = new ReceiveMessage.Video(); break; case ReceiveMessageEnum.ShortVideo: rec = new ReceiveMessage.ShortVideo(); break; case ReceiveMessageEnum.Location: rec = new ReceiveMessage.Location(); break; case ReceiveMessageEnum.Event_Location: rec = new ReceiveMessage.EventLocation(); break; case ReceiveMessageEnum.Event_Click: rec = new ReceiveMessage.EventClick(); break; case ReceiveMessageEnum.Event_View: break; case ReceiveMessageEnum.Event_Scancode_Push: break; case ReceiveMessageEnum.Event_Scancode_Waitmsg: break; case ReceiveMessageEnum.Event_Pic_Sysphoto: break; case ReceiveMessageEnum.Event_Pic_Photo_Or_Album: break; case ReceiveMessageEnum.Event_Pic_Weixin: break; case ReceiveMessageEnum.Event_Location_Select: break; case ReceiveMessageEnum.Event_Enter_Agent: rec = new ReceiveMessage.EventEnterAgent(); break; case ReceiveMessageEnum.Event_Subscribe: rec = new ReceiveMessage.EventSubscribe(); break; case ReceiveMessageEnum.Event_Batch_Job_Result: rec = new ReceiveMessage.EventBatchJobResult(); break; default: break; } rec.FillReceiveMessageFromXml(xml); return(rec); }
/// <summary> /// 实例化ProcessingEventLocationEventArgs /// </summary> /// <param name="massageData">消息内容</param> public ProcessingEventLocationEventArgs(ReceiveMessage.EventLocation massageData) { this.MessageData = massageData; }