Esempio n. 1
0
 /// <summary>
 /// 以已有消息创建一个 SubscribeMessage 的新实例。
 /// </summary>
 /// <param name="message">已有消息。</param>
 public SubscribeMessage(RequestMessageBase message)
 {
     RequestMessageBase.CopyProperties(message, this);
 }
Esempio n. 2
0
 /// <summary>
 /// 以已有消息创建一个 VoiceMessage 的新实例。
 /// </summary>
 /// <param name="message">已有消息。</param>
 public VoiceMessage(RequestMessageBase message)
 {
     RequestMessageBase.CopyProperties(message, this);
 }
Esempio n. 3
0
        /// <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);
 }
Esempio n. 5
0
 //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;
 }
Esempio n. 6
0
 private static Type GetRequestHandlerTypeFor(RequestMessageBase request)
 {
     // get a type reference to IRequestHandler<ThisSpecificRequestType>
     return typeof(IMessageHandler<>).MakeGenericType(request.GetType());
 }
Esempio n. 7
0
 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);
 }
Esempio n. 9
0
 /// <summary>
 /// 以已有消息创建一个 QRScanMessage 的新实例。
 /// </summary>
 /// <param name="message">已有消息。</param>
 public QRScanMessage(RequestMessageBase message)
 {
     RequestMessageBase.CopyProperties(message, this);
 }