/// <summary> /// 以已有消息创建一个 SubscribeMessage 的新实例。 /// </summary> /// <param name="message">已有消息。</param> public SubscribeMessage(RequestMessageBase message) { RequestMessageBase.CopyProperties(message, this); }
/// <summary> /// 以已有消息创建一个 VoiceMessage 的新实例。 /// </summary> /// <param name="message">已有消息。</param> public VoiceMessage(RequestMessageBase message) { RequestMessageBase.CopyProperties(message, this); }
/// <summary> /// 创建微信菜单 /// </summary> private string UpdateWeiXinMenu() { RequestMessageBase rm = new RequestMessageBase(); var count = _buttonRepository.FindAll() .Where(o => o.UserId == WebSecurity.GetUserId(User.Identity.Name)) .ToList() .Count; //主菜单为2~3个 否则报错 if (count > 3 || count < 2) { return "主菜单按钮个数必须是两个或者三个"; } ///获取用户数据 var user = _userProfileRepository.FindAll().Single(s => s.UserId == WebSecurity.CurrentUserId); ///创建微信菜单实例 EasyWeixin.Entities.Menu.ButtonGroup buttonGroup = new EasyWeixin.Entities.Menu.ButtonGroup(); ///提取数据库中菜单数据的前三行数据 var ButtonList = _buttonRepository.FindAll(Specification<Button>.Eval(o => o.UserId == WebSecurity.CurrentUserId)) .Take(3); //WeixinController wc = new WeixinController(); ///将数据库中数据添加到微信菜单实例中 foreach (var item in ButtonList) { if (item.SubButtons != null && item.SubButtons.ToList().Count > 0) { EasyWeixin.Entities.Menu.SubButton SubButton = new EasyWeixin.Entities.Menu.SubButton(); SubButton.name = item.name; //SubButton.key = "click"; foreach (var Subitem in item.SubButtons.Take(5)) { if (Subitem.ResponseMessages.ToList().Count > 0 && Subitem.ResponseMessages.ToList()[0].ButtonType == 5) { EasyWeixin.Entities.Menu.SingleViewButton SingleButton = new EasyWeixin.Entities.Menu.SingleViewButton(); SingleButton.name = Subitem.name; SingleButton.url = Subitem.ResponseMessages.ToList()[0].Link; SingleButton.type = "view"; SubButton.sub_button.Add(SingleButton); } else { EasyWeixin.Entities.Menu.SingleClickButton SingleButton = new EasyWeixin.Entities.Menu.SingleClickButton(); SingleButton.name = Subitem.name; SingleButton.key = "SubButton_click_" + Subitem.SubButtonID.ToString(); SingleButton.type = "click"; //2014/6/4 tianxiu //if (Subitem.name=="授权") //{ // string MyAppid = user.AppId; // string RedirectUri = "http://" + Request.Url.Host +"/SelfDefiningMenu/AuthRedirectUri"; // string URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + MyAppid + "&redirect_uri=" + RedirectUri + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"; // string Str = "<a href='" + URL + "'>授权页面</a>"; // string res = sendTextMessage(rm, Str); // Response.Write(res); //} SubButton.sub_button.Add(SingleButton); } } buttonGroup.button.Add(SubButton); } else { if (item.ResponseMessages.ToList().Count > 0 && item.ResponseMessages.ToList()[0].ButtonType == 5) { EasyWeixin.Entities.Menu.SingleViewButton SingleButton = new EasyWeixin.Entities.Menu.SingleViewButton(); SingleButton.name = item.name; SingleButton.url = item.ResponseMessages.ToList()[0].Link; SingleButton.type = "view"; buttonGroup.button.Add(SingleButton); } else { EasyWeixin.Entities.Menu.SingleClickButton SingleButton = new EasyWeixin.Entities.Menu.SingleClickButton(); SingleButton.name = item.name; SingleButton.key = "Button_click_" + item.ButtonID.ToString(); SingleButton.type = "click"; buttonGroup.button.Add(SingleButton); } } } var token = AccessTokenContainer.TryGetToken(user.AppId, user.AppSecret); string str = Newtonsoft.Json.JsonConvert.SerializeObject(buttonGroup); // CommonApi.GetMenuFromJson(token); WxJsonResult wx = CommonApi.CreateMenu(token, buttonGroup); return "更新成功"; }
/// <summary> /// 以已有消息创建一个 MenuButtonMessage 的新实例。 /// </summary> /// <param name="message">已有消息。</param> public MenuButtonMessage(RequestMessageBase message) { RequestMessageBase.CopyProperties(message, this); }
//public JsonResult GetCustomerMsg(string opentid, string resultmsg) //{ // var msg = ""; // ///获取用户数据 // var user = UserProfileRepository.Find(Specification<EasyWeixin.Model.UserProfile>.Eval(o => o.UserId == WebSecurity.CurrentUserId)); // AccessTokenResult Result = CommonApi.GetToken(user.AppId, user.AppSecret); // string token = Result.access_token; // string jsonR="{"; // jsonR+="'touser':'******'"; // jsonR+="'msgtype':'text'"; // jsonR+="'text':"; // jsonR+="{"; // jsonR+= "'content':'"+resultmsg+"'"; // jsonR+="}}"; // WxJsonResult wx = CommonApi.SendCustomerMsg(token,jsonR); // if (wx.errcode == 0) // { // msg = "发送客服消息成功!"; // } // else // { // msg = "发送客服消息失败!"; // } // return Json(new { success = msg }, JsonRequestBehavior.AllowGet); //} /// <summary> /// 发送文字消息 /// </summary> /// <param name="wx">获取的收发者信息</param> /// <param name="content">内容</param> /// <returns></returns> private string sendTextMessage(RequestMessageBase rm, string content) { string res = string.Format(@"<xml> <ToUserName><![CDATA[{0}]]></ToUserName> <FromUserName><![CDATA[{1}]]></FromUserName> <CreateTime>{2}</CreateTime> <MsgType><![CDATA[{3}]]></MsgType> <Content><![CDATA[{4}]]></Content> </xml>", rm.FromUserName, rm.ToUserName, DateTime.Now, rm.MsgType, content); return res; }
private static Type GetRequestHandlerTypeFor(RequestMessageBase request) { // get a type reference to IRequestHandler<ThisSpecificRequestType> return typeof(IMessageHandler<>).MakeGenericType(request.GetType()); }
public static ResponseMessageBase Handle(RequestMessageBase message) { Type handlerType = GetRequestHandlerTypeFor(message); var handler = (IMessageHandler)Container.Resolve(handlerType); return handler.Handle(message); }
/// <summary> /// 以已有消息创建一个 UploadLocationMessage 的新实例。 /// </summary> /// <param name="message">已有消息。</param> public UploadLocationMessage(RequestMessageBase message) { RequestMessageBase.CopyProperties(message, this); }
/// <summary> /// 以已有消息创建一个 QRScanMessage 的新实例。 /// </summary> /// <param name="message">已有消息。</param> public QRScanMessage(RequestMessageBase message) { RequestMessageBase.CopyProperties(message, this); }