public ActionResult UploadImage()
        {
            var message = "上传成功!";
            var isError = false;

            foreach (var fileKey in Request.Files.AllKeys)
            {
                var file = Request.Files[fileKey];
                try
                {
                    if (file != null)
                    {
                        var fileName = Path.GetFileName(file.FileName);
                        var path     = Path.Combine(Server.MapPath("~/MediaFiles"), fileName);
                        file.SaveAs(path);
                        var result = MediaApi.UploadForeverMedia(AccessToken, path);
                        if (!string.IsNullOrWhiteSpace(result.errmsg))
                        {
                            isError = true;
                            message = result.errmsg;
                        }
                    }
                }
                catch (Exception ex)
                {
                    isError = true;
                    message = ex.Message;
                }
            }
            return(Json(new { Message = message, IsError = isError }));
        }
Example #2
0
        public UploadForeverMediaResult UploadForeverMedia(string path)
        {
            UploadForeverMediaResult uploadForeverMediaResult = null;
            string appId = WxOperatorProvider.Provider.GetCurrent().AppId;

            uploadForeverMediaResult = MediaApi.UploadForeverMedia(appId, path);
            return(uploadForeverMediaResult);
        }
Example #3
0
        public void UploadForeverMediaTest()
        {
            var accessToken = AccessTokenContainer.GetToken(_appId);

            var file   = @"E:\1.jpg";
            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);
            mediaId = result.media_id;
        }
 private static void UploadImgToWeixin(string accessToken, MediaList_OthersResult imgResult, string saveName, string filePath)
 {
     foreach (var item in imgResult.item)
     {
         if (item.name == saveName)
         {
             MediaApi.DeleteForeverMedia(accessToken, item.media_id);
         }
     }
     MediaApi.UploadForeverMedia(accessToken, filePath);
 }
        private string UploadForeverMediaTest()
        {
            var accessToken = AccessTokenContainer.GetToken(_appId);

            var file = @"..\..\AdvancedAPIs\Media\test.jpg";

            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);
            mediaId = result.media_id;
            return(mediaId);
        }
Example #6
0
        private string UploadForeverMediaTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file = GetParentRootRelativePath() + @"AdvancedAPIs\Media\test.jpg";

            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);
            mediaId = result.media_id;
            return(mediaId);
        }
Example #7
0
 private void SendImg(string accessToken, MediaList_OthersResult imgResult)
 {
     for (int i = 0; i < 6; i++)
     {
         string imgName = string.Format("send{0}.jpg", i);
         if (imgResult.item.Find(p => p.name == imgName) == null)
         {
             var filePath = Server.MapPath("~/image/" + imgName);
             var mediaId  = MediaApi.UploadForeverMedia(accessToken, filePath).media_id;
         }
     }
 }
Example #8
0
        private string UploadForeverMedia(int wid, string mediaPath)
        {
            string err;
            var    token = WeiXinCRMComm.getAccessToken(wid, out err);

            if (!string.IsNullOrEmpty(err))
            {
                return(string.Empty);
            }
            var result = MediaApi.UploadForeverMedia(token, Server.MapPath(mediaPath));

            return(result.media_id);
        }
Example #9
0
        public static UploadForeverMediaResult UploadForeverMedia(string accessTokenOrAppId, string src)
        {
            if (src.StartsWith("http"))
            {
                return(ApiHandlerWapper.TryCommonApi(delegate(string accessToken)
                {
                    string url = $"{"https"}://api.weixin.qq.com/cgi-bin/material/add_material?access_token={accessToken.AsUrlData()}";
                    var fileBytes = HttpHelper.HttpDownload(src);
                    return Post.GetResult <UploadForeverMediaResult>(HttpHelper.HttpUpload(url, fileBytes, Path.GetFileName(src), "media"));
                }, accessTokenOrAppId));
            }

            return(MediaApi.UploadForeverMedia(accessTokenOrAppId, App.GetLocalResource(src)));
        }
Example #10
0
        public void AfterDeleteImgTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file = @"..\..\AdvancedAPIs\Media\test.jpg";

            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);

            CustomApi.SendImage(accessToken, "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg", result.media_id);

            MediaApi.DeleteForeverMedia(accessToken, result.media_id);
        }
        public async Task <string> UploadMedia(string fileFullPath, string mediaID)
        {
            if (string.IsNullOrWhiteSpace(fileFullPath))
            {
                return(mediaID);
            }
            var tempProfilePicturePath = Path.Combine(_appFolders.TempFileDownloadFolder, fileFullPath);
            var mpid = await _userMpAppService.GetDefaultMpId();

            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpid
            });

            var access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret);


            Senparc.Weixin.MP.AdvancedAPIs.Media.UploadForeverMediaResult responseModel = null;


            var result = "";

            try
            {
                responseModel = MediaApi.UploadForeverMedia(access_token, tempProfilePicturePath);

                //result = MediaApi.UploadForeverMedia(access_token, tempProfilePicturePath).media_id;
                result = responseModel.media_id;
            }
            catch
            {
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    responseModel = MediaApi.UploadForeverMedia(access_token, tempProfilePicturePath);
                }
                catch (Exception e)
                {
                    throw new UserFriendlyException(e.Message);
                }


                //result = MediaApi.UploadForeverMedia(access_token, tempProfilePicturePath).media_id;
                result = responseModel.media_id;
            }
            return(result);
        }
Example #12
0
        public UploadForeverMediaResult UploadForeverImage(string keyValue, string webRootPath)
        {
            var               id                       = Convert.ToInt64(keyValue);
            string            appId                    = WxOperatorProvider.Provider.GetCurrent().AppId;
            WxImage           wxImage                  = wxImageRepository.Get(id);
            AccessTokenResult accessTokenResult        = AccessTokenContainer.GetAccessTokenResult(appId);
            string            fullFilePaht             = webRootPath + wxImage.FilePath;
            var               uploadForeverMediaResult = MediaApi.UploadForeverMedia(accessTokenResult.access_token, fullFilePaht, 10000);

            if (uploadForeverMediaResult.ErrorCodeValue == 0)
            {
                wxImage.MediaId  = uploadForeverMediaResult.media_id;
                wxImage.MediaUrl = uploadForeverMediaResult.url;
                wxImageRepository.Update(wxImage);
            }
            return(uploadForeverMediaResult);
        }
Example #13
0
        public IHttpActionResult UploadPhotos(Guid typeId)
        {
            var ids = HttpContext.Current.Request.Form["mediaIds"].Trim(',').Split(',');

            foreach (var mediaId in ids)
            {
                var fileName = DateTime.Now.ToString("yyyy-MM-dd");
                //文件保存的名字
                var fileSaveName = Guid.NewGuid().ToString("N") + ".png";
                //租户Id
                var dirName = TenantId.ToString();
                var path    = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                path = Path.Combine(path, fileSaveName);
                //从临时素材获取
                using (var stream = File.Create(path))
                {
                    //TODO:切换SDK
                    MediaApi.Get(WeChatConfigManager.Current.GetAccessToken(), mediaId, stream);
                }
                //上传到永久素材
                var result = MediaApi.UploadForeverMedia(AccessToken, path);
                if (!string.IsNullOrWhiteSpace(result.errmsg))
                {
                    return(BadRequest(result.errmsg));
                }
                //写入数据
                var pic = new Site_Image
                {
                    IsFrontCover = !db.Site_Images.Any(p => p.ResourcesTypeId == typeId),
                    MediaId      = result.media_id,
                    Name         = fileName,
                    //站内地址
                    SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                    Url             = result.url,
                    ResourcesTypeId = typeId
                };
                SetModel(pic, default(Guid));
                db.Site_Images.Add(pic);
                db.SaveChanges();
            }
            return(Ok());
        }
Example #14
0
        public void AfterDeleteNewsTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file   = @"E:\1.jpg";
            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);

            var new1 = new NewsModel()
            {
                author             = "test",
                content            = "test",
                content_source_url = "http://qy.weiweihi.com/Content/Images/app/qyhelper.png",
                digest             = "test",
                show_cover_pic     = "1",
                thumb_media_id     = result.media_id,
                title = "test"
            };

            var new2 = new NewsModel()
            {
                author             = "test",
                content            = "test111",
                content_source_url = "http://qy.weiweihi.com/Content/Images/app/qyhelper.png",
                digest             = "test",
                show_cover_pic     = "1",
                thumb_media_id     = result.media_id,
                title = "test"
            };

            var result1 = MediaApi.UploadNews(accessToken, 10000, new1, new2);

            Assert.IsNotNull(result1.media_id);

            var clientMsgId = SystemTime.Now.Ticks.ToString();

            GroupMessageApi.SendGroupMessageByOpenId(accessToken, GroupMessageType.mpnews, result1.media_id, clientMsgId, 10000, "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg", "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg");
            //var result2 = MediaApi.UpdateForeverNews(accessToken, result1.media_id, 0, 10000, new2);

            MediaApi.DeleteForeverMedia(accessToken, result1.media_id);
            //Assert.AreEqual(result2.errcode, ReturnCode.请求成功);
        }
Example #15
0
        //[TestMethod]
        private string UploadAndUpdateNewsTest(string accessToken)
        {
            var file   = @"E:\1.jpg";
            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);

            var new1 = new NewsModel()
            {
                author             = "test",
                content            = "test",
                content_source_url = "http://qy.weiweihi.com/Content/Images/app/qyhelper.png",
                digest             = "test",
                show_cover_pic     = "1",
                thumb_media_id     = result.media_id,
                title = "test"
            };

            var new2 = new NewsModel()
            {
                author             = "test",
                content            = "test111",
                content_source_url = "http://qy.weiweihi.com/Content/Images/app/qyhelper.png",
                digest             = "test",
                show_cover_pic     = "1",
                thumb_media_id     = result.media_id,
                title = "test"
            };

            var result1 = MediaApi.UploadNews(accessToken, 10000, new1, new2);

            Assert.IsNotNull(result1.media_id);

            //var result2 = MediaApi.UpdateForeverNews(accessToken, result1.media_id, 0, 10000, new2);

            //Assert.AreEqual(result2.errcode, ReturnCode.请求成功);

            return(result1.media_id);
        }
Example #16
0
        /// <summary>
        /// 保存配置信息
        /// </summary>
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            //ChkAdminLevel("site_config", MXEnums.ActionEnum.Edit.ToString()); //检查权限
            string ruleName = "";

            try
            {
                //保存之前,删除以前的数据
                int requestType = int.Parse(lblreqestType.Text);//请求的类别

                if (requestType == 6)
                {
                    ruleName = "关注时的触发内容";
                }
                else if (requestType == 0)
                {
                    ruleName = "默认回复内容";
                }
                else if (requestType == 7)
                {
                    ruleName = "取消关注时的触发内容";
                }
                Model.manager       manager = GetAdminInfo();
                Model.wx_userweixin weixin  = GetWeiXinCode();
                //添加前删除原来的数据
                rBll.DeleteRule(int.Parse(hidId.Value));
                Model.wx_requestRule rule = new Model.wx_requestRule();
                rule.uId        = manager.id;
                rule.wId        = weixin.id;
                rule.ruleName   = ruleName;
                rule.reqestType = requestType;
                rule.isDefault  = false;
                rule.createDate = DateTime.Now;

                Model.wx_requestRuleContent rc = new Model.wx_requestRuleContent();
                if (rblResponseType.SelectedItem.Value == "0")
                {  //纯文本
                    //规则
                    if (this.txtContent.Text.Trim().Length == 0)
                    {
                        JscriptMsg("内容不能为空", "back", "Error");
                        return;
                    }

                    rule.responseType = 1;//回复的类型:文本1,图文2,语音3,视频4,第三方接口5
                    int rId = rBll.Add(rule);
                    //内容
                    rc.rId        = rId;
                    rc.uId        = manager.id;
                    rc.rContent   = txtContent.Text.Trim();
                    rc.createDate = DateTime.Now;
                    rcBll.Add(rc);
                }
                else if (rblResponseType.SelectedItem.Value == "1")
                {                          //图文
                    rule.responseType = 2; //回复的类型:文本1,图文2,语音3,视频4,第三方接口5
                    int rId = rBll.Add(rule);
                }
                else if (rblResponseType.SelectedItem.Value == "2")
                {  //语音
                    if (this.txtMusicTitle.Text.Trim().Length == 0)
                    {
                        JscriptMsg("音乐不能为空", "back", "Error");
                        return;
                    }
                    if (this.txtMusicFile.Text.Trim().Length == 0)
                    {
                        JscriptMsg("音乐链接不能为空", "back", "Error");
                        return;
                    }

                    //规则
                    rule.responseType = 3;//回复的类型:文本1,图文2,语音3,视频4,第三方接口5
                    int rId = rBll.Add(rule);

                    //Modify by Yidane
                    //语音先上传微信服务器,获取到media_id,保存到数据库
                    if (File.Exists(Server.MapPath(txtMusicFile.Text)))
                    {
                        try
                        {
                            var err   = string.Empty;
                            var token = WeiXinCRMComm.getAccessToken(weixin.id, out err);
                            if (string.IsNullOrEmpty(err))
                            {
                                var result = MediaApi.UploadForeverMedia(token, Server.MapPath(txtMusicFile.Text));
                                rc.extStr = result.media_id;
                            }
                        }
                        catch (Exception)
                        {
                        }
                    }

                    //内容
                    rc.rId        = rId;
                    rc.uId        = manager.id;
                    rc.createDate = DateTime.Now;
                    rc.mediaUrl   = txtMusicFile.Text;
                    rc.rContent   = txtMusicTitle.Text;
                    rc.remark     = txtMusicRemark.Text;
                    rcBll.Add(rc);

                    if (string.IsNullOrEmpty(rc.extStr))
                    {
                        JscriptMsg("编辑" + ruleName + "有问题!", "subscribe.aspx?act=" + MyCommFun.QueryString("act"), "Error");
                    }
                }
                AddAdminLog(MXEnums.ActionEnum.Edit.ToString(), "编辑" + ruleName); //记录日志
                JscriptMsg("编辑" + ruleName + "成功!", "subscribe.aspx?act=" + MyCommFun.QueryString("act"), "Success");
            }
            catch
            {
                JscriptMsg("编辑" + ruleName + "有问题!", "subscribe.aspx?act=" + MyCommFun.QueryString("act"), "Error");
            }
        }
        public void PushNews(string accessToken, string webPath, string tempStr)
        {
            OpenIdResultJson json = UserApi.Get(accessToken, "");
            var imgResult         = MediaApi.GetOthersMediaList(accessToken, UploadMediaFileType.image, 0, 10000);
            var DircetPath        = Environment.CurrentDirectory + "/image/";

            if (!Directory.Exists(DircetPath))
            {
                Directory.CreateDirectory(DircetPath);
            }

            for (int i = 0; i < 6; i++)
            {
                string imgName = string.Format("send{0}.jpg", i);
                if (imgResult.item.Find(p => p.name == imgName) == null)
                {
                    var imgPath  = webPath + "/image/" + imgName;
                    var filePath = DircetPath + "/image/" + imgName;
                    CommonUtility.HttpUtility.DownloadFile(imgPath, filePath);
                    var mediaId = MediaApi.UploadForeverMedia(accessToken, filePath).media_id;
                }
            }
            imgResult = MediaApi.GetOthersMediaList(accessToken, UploadMediaFileType.image, 0, 10000);


            string sendCountTxtUrl = webPath + "/" + "sendcount.txt";
            var    sendCountTxt    = CommonUtility.HttpUtility.Get(sendCountTxtUrl);
            var    sendCount       = int.Parse(sendCountTxt);

            NewsModel[] newsList = new NewsModel[sendCount];

            var dataSevice = new DataAccessSerive();
            var jobList    = dataSevice.GetTopJobInfoList();

            if (jobList.Count > 0)
            {
                List <Article> articles = new List <Article>();
                int            i        = 0;
                string         imgName;
                foreach (var job in jobList)
                {
                    if (i == sendCount)
                    {
                        break;
                    }
                    string domain  = ConfigurationManager.AppSettings.Get("domain");
                    string website = ConfigurationManager.AppSettings.Get("website");
                    imgName = "send" + i.ToString() + ".jpg";
                    string imgUrl    = string.Format("{0}/image/{1}", domain, imgName);
                    var    jobDetail = dataSevice.GetJobDetail(job.JobId);
                    var    news      = new NewsModel()
                    {
                        author  = "",
                        content = tempStr.Replace("[ComName]", job.ComName)
                                  .Replace("[ComBrief]", jobDetail.ComBrief)
                                  .Replace("[DetailPalce]", jobDetail.DetailPalce)
                                  .Replace("[LinkMan]", jobDetail.LinkMan)
                                  .Replace("[Phone]", jobDetail.Phone)
                                  .Replace("[JobName]", jobDetail.JobName)
                                  .Replace("[JobType]", jobDetail.JobType)
                                  .Replace("[LowMoney]", jobDetail.LowMoney)
                                  .Replace("[HrNum]", jobDetail.HrNum)
                                  .Replace("[Edu]", jobDetail.Edu)
                                  .Replace("[RegisterDate]", jobDetail.RegisterDate)
                                  .Replace("[EffectDate]", jobDetail.EffectDate)
                                  .Replace("[Other]", jobDetail.Other)
                                  .Replace("[Sex]", jobDetail.Sex)
                        ,
                        //content_source_url = domain + "/html/detail.html?id=" + job.JobId,
                        content_source_url = website,
                        digest             = job.ComName + "诚聘" + job.JobName,
                        show_cover_pic     = "0",
                        thumb_media_id     = imgResult.item.Find(p => p.name == imgName).media_id,
                        title = job.ComName + "诚聘" + job.JobName
                    };
                    newsList[i] = news;
                    i++;
                }
                UploadForeverMediaResult mediaResult = MediaApi.UploadNews(accessToken, 100000, newsList);
                try
                {
                    if (isDebug != "1")
                    {
                        GroupMessageApi.SendGroupMessageByGroupId(accessToken, "-1", mediaResult.media_id, GroupMessageType.mpnews, true);
                    }
                    Console.WriteLine("素材提交推送  推送成功");
                    logger.Info(DateTime.Now.ToString() + " 素材提交推送  推送成功");
                }
                catch (Exception ex)
                {
                    Console.WriteLine("素材提交推送  推送失败 " + ex.Message);
                    var MailService = new MailSendFunc();
                    MailService.SendMail("*****@*****.**", ex.Message, "素材提交推送异常", mailCfg);
                    logger.ErrorException(DateTime.Now.ToString() + "素材提交推送失败 " + ex.Message, ex);
                }
            }
        }
Example #18
0
        /// <summary>
        ///     上传站点资源
        /// </summary>
        /// <param name="resoureType"></param>
        /// <param name="file"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static Site_FileBase Upload(Site_ResourceType resoureType, string fileName, byte[] fileStream,
                                           AppDbContext db, out AjaxResponse ajaxMessage)
        {
            ajaxMessage = new AjaxResponse {
                Success = true
            };
            var fileSaveName = Guid.NewGuid().ToString("N") + Path.GetExtension(fileName);
            var tenantId     = WeiChatApplicationContext.Current.TenantId;

            var dirName = tenantId.ToString();
            var path    = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName);

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            path = Path.Combine(path, fileSaveName);
            File.WriteAllBytes(path, fileStream);
            UploadForeverMediaResult result = null;

            result = resoureType.ResourceType == SiteResourceTypes.Video
                ? MediaApi.UploadForeverVideo(WeChatConfigManager.Current.GetAccessToken(), path, fileName, "test")
                : MediaApi.UploadForeverMedia(WeChatConfigManager.Current.GetAccessToken(), path);
            if (!string.IsNullOrWhiteSpace(result.errmsg))
            {
                ajaxMessage.Success = false;
                ajaxMessage.Message = result.errmsg;
            }
            else
            {
                switch (resoureType.ResourceType)
                {
                case SiteResourceTypes.Gallery:
                {
                    var pic = new Site_Image
                    {
                        IsFrontCover    = false,
                        MediaId         = result.media_id,
                        Name            = fileName,
                        SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                        Url             = result.url,
                        ResourcesTypeId = resoureType.Id,
                        CreateBy        = HttpContext.Current.User.Identity.GetUserId(),
                        CreateTime      = DateTime.Now,
                        TenantId        = tenantId
                    };
                    db.Site_Images.Add(pic);
                    db.SaveChanges();
                    return(pic);
                }
                break;

                case SiteResourceTypes.Voice:
                {
                    var voice = new Site_Voice
                    {
                        MediaId         = result.media_id,
                        Name            = fileName,
                        SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                        Url             = result.url,
                        ResourcesTypeId = resoureType.Id,
                        CreateBy        = HttpContext.Current.User.Identity.GetUserId(),
                        CreateTime      = DateTime.Now,
                        TenantId        = tenantId
                    };
                    db.Site_Voices.Add(voice);
                    db.SaveChanges();
                    return(voice);
                }
                break;

                case SiteResourceTypes.Video:
                {
                    var video = new Site_Video
                    {
                        MediaId         = result.media_id,
                        Name            = fileName,
                        SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                        Url             = result.url,
                        ResourcesTypeId = resoureType.Id,
                        CreateBy        = HttpContext.Current.User.Identity.GetUserId(),
                        CreateTime      = DateTime.Now,
                        TenantId        = tenantId
                    };
                    db.Site_Videos.Add(video);
                    db.SaveChanges();
                    return(video);
                }
                break;

                default:
                    ajaxMessage.Success = false;
                    ajaxMessage.Message = "不支持上传此类型";
                    break;
                }
            }
            return(null);
        }
        /// <summary>
        /// 点击事件
        /// </summary>
        /// <param name="requestMessage">请求消息</param>
        /// <returns></returns>
        public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage)
        {
            IResponseMessageBase reponseMessage = null;

            //菜单点击,需要跟创建菜单时的Key匹配

            switch (requestMessage.EventKey)
            {
            case "OneClick":
            {
                //这个过程实际已经在OnTextOrEventRequest中命中“OneClick”关键字,并完成回复,这里不会执行到。
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Content = "您点击了底部按钮。\r\n为了测试微信软件换行bug的应对措施,这里做了一个——\r\n换行";
            }
            break;

            case "SubClickRoot_Text":
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Content = "您点击了子菜单按钮。";
            }
            break;

            case "SubClickRoot_News":
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageNews>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Articles.Add(new Article()
                    {
                        Title       = "您点击了子菜单图文按钮",
                        Description = "您点击了子菜单图文按钮,这是一条图文信息。这个区域是Description内容\r\n可以使用\\r\\n进行换行。",
                        PicUrl      = "https://sdk.weixin.senparc.com/Images/qrcode.jpg",
                        Url         = "https://sdk.weixin.senparc.com"
                    });

                //随机添加一条图文,或只输出一条图文信息
                if (SystemTime.Now.Second % 2 == 0)
                {
                    strongResponseMessage.Articles.Add(new Article()
                        {
                            Title       = "这是随机产生的第二条图文信息,用于测试多条图文的样式",
                            Description = "这是随机产生的第二条图文信息,用于测试多条图文的样式",
                            PicUrl      = "https://sdk.weixin.senparc.com/Images/qrcode.jpg",
                            Url         = "https://sdk.weixin.senparc.com"
                        });
                }
            }
            break;

            case "SubClickRoot_Music":
            {
                //上传缩略图

#if NET45
                var filePath = "~/Images/Logo.thumb.jpg";
#else
                var filePath = "~/wwwroot/Images/Logo.thumb.jpg";
#endif

                var uploadResult = MediaApi.UploadTemporaryMedia(appId, UploadMediaFileType.thumb,
                                                                 ServerUtility.ContentRootMapPath(filePath));
                //PS:缩略图官方没有特别提示文件大小限制,实际测试哪怕114K也会返回文件过大的错误,因此尽量控制在小一点(当前图片39K)

                //设置音乐信息
                var strongResponseMessage = CreateResponseMessage <ResponseMessageMusic>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Music.Title        = "天籁之音";
                strongResponseMessage.Music.Description  = "真的是天籁之音";
                strongResponseMessage.Music.MusicUrl     = "https://sdk.weixin.senparc.com/Content/music1.mp3";
                strongResponseMessage.Music.HQMusicUrl   = "https://sdk.weixin.senparc.com/Content/music1.mp3";
                strongResponseMessage.Music.ThumbMediaId = uploadResult.thumb_media_id;
            }
            break;

            case "SubClickRoot_Image":
            {
                //上传图片
                var filePath = "~/Images/Logo.jpg";

                var uploadResult = MediaApi.UploadTemporaryMedia(appId, UploadMediaFileType.image,
                                                                 ServerUtility.ContentRootMapPath(filePath));
                //设置图片信息
                var strongResponseMessage = CreateResponseMessage <ResponseMessageImage>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Image.MediaId = uploadResult.media_id;
            }
            break;

            case "SendMenu":    //菜单消息
            {
                //注意:
                //1、此接口可以在任意地方调用(包括后台线程),此处演示为通过
                //2、一下"s:"前缀只是 Senparc.Weixin 的内部约定,可以使用 OnTextRequest事件中的 requestHandler.SelectMenuKeyword() 方法自动匹配到后缀(如101)

                var menuContentList = new List <SendMenuContent>()
                {
                    new SendMenuContent("101", "满意"),
                    new SendMenuContent("102", "一般"),
                    new SendMenuContent("103", "不满意")
                };
                //使用异步接口
                CustomApi.SendMenuAsync(appId, OpenId, "请对 Senparc.Weixin SDK 给出您的评价", menuContentList, "感谢您的参与!");

                reponseMessage = new ResponseMessageNoResponse();        //不返回任何消息
            }
            break;

            case "SubClickRoot_Agent":    //代理消息
            {
                //获取返回的XML
                var dt1 = SystemTime.Now;
                reponseMessage = MessageAgent.RequestResponseMessage(this, agentUrl, agentToken, RequestDocument.ToString());
                //上面的方法也可以使用扩展方法:this.RequestResponseMessage(this,agentUrl, agentToken, RequestDocument.ToString());

                var dt2 = SystemTime.Now;

                if (reponseMessage is ResponseMessageNews)
                {
                    (reponseMessage as ResponseMessageNews)
                    .Articles[0]
                    .Description += string.Format("\r\n\r\n代理过程总耗时:{0}毫秒", (dt2 - dt1).Milliseconds);
                }
            }
            break;

            case "Member":    //托管代理会员信息
            {
                //原始方法为:MessageAgent.RequestXml(this,agentUrl, agentToken, RequestDocument.ToString());//获取返回的XML
                reponseMessage = this.RequestResponseMessage(agentUrl, agentToken, RequestDocument.ToString());
            }
            break;

            case "OAuth":    //OAuth授权测试
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageNews>();

                strongResponseMessage.Articles.Add(new Article()
                    {
                        Title       = "OAuth2.0测试",
                        Description = "选择下面两种不同的方式进行测试,区别在于授权成功后,最后停留的页面。",
                        //Url = "https://sdk.weixin.senparc.com/oauth2",
                        //PicUrl = "https://sdk.weixin.senparc.com/Images/qrcode.jpg"
                    });

                strongResponseMessage.Articles.Add(new Article()
                    {
                        Title       = "OAuth2.0测试(不带returnUrl),测试环境可使用",
                        Description = "OAuth2.0测试(不带returnUrl)",
                        Url         = "https://sdk.weixin.senparc.com/oauth2",
                        PicUrl      = "https://sdk.weixin.senparc.com/Images/qrcode.jpg"
                    });

                var returnUrl = "/OAuth2/TestReturnUrl";
                strongResponseMessage.Articles.Add(new Article()
                    {
                        Title       = "OAuth2.0测试(带returnUrl),生产环境强烈推荐使用",
                        Description = "OAuth2.0测试(带returnUrl)",
                        Url         = "https://sdk.weixin.senparc.com/oauth2?returnUrl=" + returnUrl.UrlEncode(),
                        PicUrl      = "https://sdk.weixin.senparc.com/Images/qrcode.jpg"
                    });

                reponseMessage = strongResponseMessage;
            }
            break;

            case "Description":
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                strongResponseMessage.Content = GetWelcomeInfo();
                reponseMessage = strongResponseMessage;
            }
            break;

            case "SubClickRoot_PicPhotoOrAlbum":
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Content = "您点击了【微信拍照】按钮。系统将会弹出拍照或者相册发图。";
            }
            break;

            case "SubClickRoot_ScancodePush":
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Content = "您点击了【微信扫码】按钮。";
            }
            break;

            case "ConditionalMenu_Male":
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Content = "您点击了个性化菜单按钮,您的微信性别设置为:男。";
            }
            break;

            case "ConditionalMenu_Femle":
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                reponseMessage = strongResponseMessage;
                strongResponseMessage.Content = "您点击了个性化菜单按钮,您的微信性别设置为:女。";
            }
            break;

            case "GetNewMediaId":    //获取新的MediaId
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                try
                {
                    var result = MediaApi.UploadForeverMedia(appId, ServerUtility.ContentRootMapPath("~/Images/logo.jpg"));
                    strongResponseMessage.Content = result.media_id;
                }
                catch (Exception e)
                {
                    strongResponseMessage.Content = "发生错误:" + e.Message;
                    WeixinTrace.SendCustomLog("调用UploadForeverMedia()接口发生异常", e.Message);
                }
            }
            break;

            default:
            {
                var strongResponseMessage = CreateResponseMessage <ResponseMessageText>();
                strongResponseMessage.Content = "您点击了按钮,EventKey:" + requestMessage.EventKey;
                reponseMessage = strongResponseMessage;
            }
            break;
            }

            return(reponseMessage);
        }