Beispiel #1
0
        public virtual async Task <string> UploadAndGetMediaID(int mpid, string fileUrl, MpMessageType type)
        {
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpid
            });

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

            UploadForeverMediaResult responseModel = null;
            var fileName = fileUrl.Substring(fileUrl.LastIndexOf("/") + 1);

            try
            {
                responseModel = JsonConvert.DeserializeObject <UploadForeverMediaResult>(await HttpHelper.HttpPost($"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={access_token}&type={type.ToString()}", fileUrl, fileName));
            }
            catch (Exception ex)
            {
                Logger.Error($"上传图片到微信出错:{ex.Message}");
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    responseModel = JsonConvert.DeserializeObject <UploadForeverMediaResult>(await HttpHelper.HttpPost($"https://api.weixin.qq.com/cgi-bin/material/add_material?access_token={access_token}&type={type.ToString()}", fileUrl, fileName));
                }
                catch (Exception e)
                {
                    Logger.Error($"上传图片到微信出错:{e.Message}");
                    throw new UserFriendlyException(e.Message);
                }
            }
            return(responseModel != null ? responseModel.media_id : "");
        }
        /// <summary>
        /// 上传微信临时素材
        /// </summary>
        /// <param name="mpid"></param>
        /// <param name="path"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private async Task <string> UploadMedia(int mpid, string path, MpMessageType type)
        {
            var account = await _mpAccountAppService.Get(new EntityDto <int>() { Id = mpid });

            if (account != null)
            {
                var retString = "";
                try
                {
                    var url = string.Format("https://api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret), type.ToString());
                    retString = await HttpHelper.HttpPost(url, path, timeOut : Config.TIME_OUT);
                }
                catch (Exception ex)
                {
                    Logger.Error(string.Format("上传MpID为{0},地址{1}的临时素材报错 {2}", mpid, path, type.ToString()), ex);
                    var url = string.Format("https://api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true), type.ToString());
                    retString = await HttpHelper.HttpPost(url, path, timeOut : Config.TIME_OUT);
                }
                var returndata = JsonConvert.DeserializeObject <UploadTemporaryMediaResult>(retString);
                if (returndata.errcode == ReturnCode.请求成功)
                {
                    return(returndata.media_id);
                }
                else
                {
                    Logger.Error(string.Format("上传MpID为{0},地址{1}的临时素材报错:{2}", mpid, path, JsonConvert.SerializeObject(returndata)));
                }
            }
            return(string.Empty);
        }
        // GET: /<controller>/
        public async Task <IActionResult> Index()
        {
            var viewModel = new MpFanViewModel();

            //viewModel.Groups = await _mpGroupAppService.GetList();
            viewModel.MpID = await _userMpAppService.GetDefaultMpId();

            viewModel.Token = (await _mpAccountService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = viewModel.MpID
            })).TaskAccessToken;
            return(View(viewModel));
        }
        // GET: /<controller>/
        public async Task <IActionResult> Index()
        {
            var viewModel = new MpMediaArticleViewModel();

            viewModel.MpID = await _userMpAppService.GetDefaultMpId();

            var account = await _mpAccountAppService.Get(new EntityDto <int> {
                Id = viewModel.MpID
            });

            viewModel.MpName = account.Name;
            return(View(viewModel));
        }
Beispiel #5
0
        public async Task <PartialViewResult> CreateOrEditModal(int id)
        {
            if (id != 0)
            {
                var output = await _CustomerServiceOnlineAppService.Get(new EntityDto <int>(id));

                var viewModel = new CreateOrEditCustomerServiceOnlineViewModel(output);

                return(PartialView("_CreateOrEditModal", viewModel));
            }
            else
            {
                var mpid = await _userMpAppService.GetDefaultMpId();

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

                return(PartialView("_CreateOrEditModal", new CreateOrEditCustomerServiceOnlineViewModel()
                {
                    MpID = mpid, PublicNumberAccount = account.WxAccount, AutoJoin = false, ConnectState = (int)ConnectState.UnConnect, OnlineState = (int)OnlineState.Quit, KfType = KFType.YL.ToString(), CustomerServiceManager = false
                }));
            }
        }
Beispiel #6
0
        public async Task <PartialViewResult> CreateOrEditModal(int id)
        {
            if (id != 0)
            {
                var output = await _mpAccountAppService.Get(new EntityDto <int>(id));

                var viewModel = new CreateOrEditMpAccountViewModel(output);

                return(PartialView("_CreateOrEditModal", viewModel));
            }
            else
            {
                return(PartialView("_CreateOrEditModal", new CreateOrEditMpAccountViewModel()));
            }
        }
        public async Task <IActionResult> Get(PostModel postModel, string echostr)
        {
            int mpId    = Convert.ToInt32(Request.Query["MpID"]);
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int>()
            {
                Id = mpId
            });

            if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, account.Token))
            {
                return(Content(echostr)); //返回随机字符串则表示验证通过
            }
            else
            {
                return(Content("failed:" + postModel.Signature + "," + Senparc.Weixin.MP.CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, account.Token) + "。" +
                               "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。"));
            }
        }
Beispiel #8
0
        private async Task <string> SendCustomerText(int mpid, string openid, int problemid, int fanid, string text, string templete = null)
        {
            var account = await _mpAccountAppService.Get(new EntityDto <int>() { Id = mpid });

            if (account != null)
            {
                var textinfo = GetCustomerText(text, templete, fanid, problemid, openid);
                //根据配置信息,调用客服接口,发送问题创建后的默认回复
                try
                {
                    await CustomApi.SendTextAsync(await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret), openid, textinfo);

                    return(textinfo);
                }
                catch (Exception ex)
                {
                    Logger.Error(string.Format("发送MpID为{0},openid为{1}的客服消息{2}报错", mpid, openid, textinfo), ex);
                    await CustomApi.SendTextAsync(await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true), openid, textinfo);

                    return(textinfo);
                }
            }
            return(string.Empty);
        }
        public async Task <string> UploadVideo(string fileFullPath, string mediaID, string title, string describe)
        {
            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);

            var result = "";

            try
            {
                var postResult      = Pb.Wechat.WxMedias.UploadVideo.GetUploadVideoResult(access_token, tempProfilePicturePath, title, describe);
                var postResultModel = JsonConvert.DeserializeObject <PostResult>(postResult);
                result = postResultModel.media_id;
                //result = MediaApi.UploadForeverVideo(access_token, tempProfilePicturePath, title, describe).media_id;
            }
            catch
            {
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    var postResult      = Pb.Wechat.WxMedias.UploadVideo.GetUploadVideoResult(access_token, tempProfilePicturePath, title, describe);
                    var postResultModel = JsonConvert.DeserializeObject <PostResult>(postResult);
                    result = postResultModel.media_id;
                }
                catch (Exception e)
                {
                    throw new UserFriendlyException(e.Message);
                }
            }

            return(result);
        }