コード例 #1
0
        public void GetSessionStateTest()
        {
            //  var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result = CustomServiceApi.GetSessionState(_appId, _appSecret, _testOpenId);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #2
0
        public void CloseSessionTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.CloseSession(accessToken, _testOpenId, "zcc@SenparcRobot");

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #3
0
        public void GetSessionListTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.GetSessionList(accessToken, _testOpenId);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #4
0
        public void GetWaitCaseTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.GetWaitCase(accessToken);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #5
0
        public void DeleteCustomTest()
        {
            //  var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result = CustomServiceApi.DeleteCustom(_appId, _appSecret, "zcc@InnocellenceRobot");

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #6
0
        public void CloseSessionTest()
        {
            // var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result = CustomServiceApi.CloseSession(_appId, _appSecret, _testOpenId, "zcc@InnocellenceRobot");

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #7
0
        public ActionResult Remove(RemoveCustomViewModel model)
        {
            var message = new MessageInfo
            {
                Message     = "操作成功!",
                MessageType = MessageTypes.Success
            };

            if (!ModelState.IsValid)
            {
                message.Message     = "客服账号输入有误!";
                message.MessageType = MessageTypes.Danger;
                return(Json(message));
            }
            try
            {
                //TODO:切换SDK
                var result = CustomServiceApi.DeleteCustom(
                    WeChatConfigManager.Current.GetAccessToken(),
                    model.Account);

                if (result.errcode != ReturnCode.请求成功)
                {
                    message.Message     = result.errmsg;
                    message.MessageType = MessageTypes.Danger;
                }
            }
            catch (ErrorJsonResultException ex)
            {
                message.Message     = ex.Message;
                message.MessageType = MessageTypes.Danger;
            }
            return(Json(message));
        }
コード例 #8
0
        public void GetCustomOnlineInfoTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.GetCustomOnlineInfo(accessToken);

            Assert.IsTrue(result.kf_online_list.Count > 0);
        }
コード例 #9
0
        public void AddCustomTest()
        {
            var accessToken = AccessTokenContainer.GetToken(_appId);
            var result      = CustomServiceApi.AddCustom(accessToken, "zcc@SenparcRobot", "zcc", _custonPassWord);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #10
0
ファイル: CustomServiceTest.cs プロジェクト: radtek/crm
        public void UpdateCustomTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.UpdateCustom(accessToken, "zcc@ChainCloudsRobot", "zcc", _custonPassWord);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #11
0
        public async Task <WxJsonResult> DeleteCustom(int mpId, string kfAccount)
        {
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpId
            });

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

            WxJsonResult result = null;

            try
            {
                result = await CustomServiceApi.DeleteCustomAsync(access_token, kfAccount);
            }
            catch
            {
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    result = await CustomServiceApi.DeleteCustomAsync(access_token, kfAccount);
                }
                catch (Exception e)
                {
                    throw new UserFriendlyException(e.Message);
                }
            }
            return(result);
        }
コード例 #12
0
        public async Task <WxJsonResult> UploadCustomHeadimg(int mpId, string kfAccount, string filePath)
        {
            var tempProfilePicturePath = Path.Combine(_appFolders.TempFileDownloadFolder, filePath);
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpId
            });

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

            WxJsonResult result = null;

            try
            {
                result = await CustomServiceApi.UploadCustomHeadimgAsync(access_token, kfAccount, tempProfilePicturePath);
            }
            catch
            {
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    result = await CustomServiceApi.UploadCustomHeadimgAsync(access_token, kfAccount, tempProfilePicturePath);
                }
                catch (Exception e)
                {
                    throw new UserFriendlyException(e.Message);
                }
            }
            return(result);
        }
コード例 #13
0
        public async Task <WxJsonResult> UpdateCustom(int mpId, string kfAccount, string nickName, string passWord)
        {
            Logger.Info("加密前");
            string _password = !string.IsNullOrWhiteSpace(passWord) ?GetMD5(passWord):"";

            Logger.Info($"加密后密码为{_password}");
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpId
            });

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

            WxJsonResult result = null;

            try
            {
                result = await CustomServiceApi.UpdateCustomAsync(access_token, kfAccount, nickName, _password);
            }
            catch (Exception ex)
            {
                Logger.Info($"第一次错误:{ex.Message}");
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    result = await CustomServiceApi.UpdateCustomAsync(access_token, kfAccount, nickName, _password);
                }
                catch (Exception e)
                {
                    Logger.Info($"第二次错误:{e.Message}");
                    throw new UserFriendlyException(e.Message);
                }
            }
            return(result);
        }
コード例 #14
0
        public void DeleteCustomTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.DeleteCustom(accessToken, "zcc@SenparcRobot");

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #15
0
        public void GetCustomBasicInfoTest()
        {
            //  var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result = CustomServiceApi.GetCustomBasicInfo(_appId, _appSecret);

            Assert.IsTrue(result.kf_list.Count > 0);
        }
コード例 #16
0
        public void GetRecordTest()
        {
            var openId      = "o3IHxjkke04__4n1kFeXpfMjjRBc";
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.GetRecord(accessToken, DateTime.Today, DateTime.Now, 10, 1);

            Assert.IsTrue(result.recordlist.Count > 0);
        }
コード例 #17
0
        public void UploadCustomHeadimgCustom()
        {
            string file = "C:\\Users\\czhang\\Desktop\\logo.png";

            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = CustomServiceApi.UploadCustomHeadimg(accessToken, "zcc@SenparcRobot", file);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
コード例 #18
0
        // GET: Custom
        public ActionResult Index(int pageIndex = 1, int pageSize = 20)
        {
            var data     = CustomServiceApi.GetCustomBasicInfo(AccessToken);
            var dataList = data.kf_list
                           .Select(p =>
                                   new CustomViewModel
            {
                Id         = p.kf_id,
                NickName   = p.kf_nick,
                Account    = p.kf_account,
                HeadImgUrl = p.kf_headimgurl
            });
            var pagedList = new PagedList <CustomViewModel>(dataList, pageIndex, pageSize, dataList.Count());

            return(View(pagedList));
        }
コード例 #19
0
 public ActionResult Edit(string id, AddCustomViewModel model)
 {
     if (!ModelState.IsValid)
     {
         return(View(model));
     }
     try
     {
         var result = CustomServiceApi.UpdateCustom(
             AccessToken,
             id,
             model.NickName,
             model.Password);
         if (result.errcode != ReturnCode.请求成功)
         {
             ViewBag.Messages = new List <MessageInfo>
             {
                 new MessageInfo
                 {
                     Message     = result.errmsg,
                     MessageType = MessageTypes.Danger
                 }
             };
             return(View(model));
         }
         var kf = db.WeiChat_KFCInfos.First(p => p.Account == id);
         kf.NickName = model.NickName;
         db.SaveChanges();
     }
     catch (ErrorJsonResultException ex)
     {
         if (ex.JsonResult.errcode == ReturnCode.客服帐号已存在kf_account_exsited)
         {
             ViewBag.Messages = new List <MessageInfo>
             {
                 new MessageInfo
                 {
                     Message     = "客服账号已存在!",
                     MessageType = MessageTypes.Danger
                 }
             };
             return(View(model));
         }
     }
     return(RedirectToAction("Index"));
 }
コード例 #20
0
        public async Task <bool> IsAsking(int mpid, string openid)
        {
            var account = await _mpAccountAppService.GetCache(mpid);

            if (account != null)
            {
                GetSessionStateResultJson result = null;
                try
                {
                    result = await CustomServiceApi.GetSessionStateAsync(await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret), openid);
                }
                catch
                {
                    result = await CustomServiceApi.GetSessionStateAsync(await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true), openid);
                }
                if (result.errcode == ReturnCode.请求成功)
                {
                    if (!string.IsNullOrEmpty(result.kf_account))
                    {
                        return(true);
                    }

                    GetWaitCaseResultJson waitresult = null;
                    try
                    {
                        waitresult = await CustomServiceApi.GetWaitCaseAsync(await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret));
                    }
                    catch
                    {
                        waitresult = await CustomServiceApi.GetWaitCaseAsync(await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true));
                    }
                    if (waitresult.errcode == ReturnCode.请求成功)
                    {
                        if (waitresult.waitcaselist.Count(c => c.openid == openid) > 0)
                        {
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
コード例 #21
0
        public async Task <WxJsonResult> AddCustom(int mpId, string kfAccount, string nickName, string passWord, string inviteWx)
        {
            try
            {
                string _password = !string.IsNullOrWhiteSpace(passWord)?GetMD5(passWord):"";
                var    account   = _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                    Id = mpId
                }).Result;
                var          access_token = _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret).Result;
                WxJsonResult result       = null;
                try
                {
                    result = await CustomServiceApi.AddCustomAsync(access_token, kfAccount, nickName, _password);

                    Logger.Error(result.errmsg);
                }
                catch
                {
                    access_token = _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true).Result;
                    try
                    {
                        result = await CustomServiceApi.AddCustomAsync(access_token, kfAccount, nickName, _password);

                        Logger.Error(result.errmsg);
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e.Message);
                        throw new UserFriendlyException(e.Message);
                    }
                }
                await CustomServiceApi.InviteWorkerAsync(access_token, kfAccount, inviteWx);

                return(result);
            }
            catch (Exception eh)
            {
                throw new UserFriendlyException(eh.Message);
            }
        }
コード例 #22
0
 public ActionResult Add(AddCustomViewModel model)
 {
     if (!ModelState.IsValid)
     {
         return(View(model));
     }
     try
     {
         var result = CustomServiceApi.AddCustom(
             WeChatConfigManager.Current.GetAccessToken(),
             string.Format("{0}@{1}", model.Account, WeChatConfigManager.Current.GetConfig().WeiXinAccount),
             model.NickName,
             model.Password);
         if (result.errcode != ReturnCode.请求成功)
         {
             ViewBag.Messages = new List <MessageInfo>
             {
                 new MessageInfo
                 {
                     Message     = result.errmsg,
                     MessageType = MessageTypes.Danger
                 }
             };
             return(View(model));
         }
         var kf = new WeiChat_KFCInfo
         {
             Account    = string.Format("{0}@{1}", model.Account, WeChatConfigManager.Current.GetConfig().WeiXinAccount),
             HeadImgUrl = "",
             NickName   = model.NickName
         };
         db.WeiChat_KFCInfos.Add(kf);
         db.SaveChanges();
     }
     catch (ErrorJsonResultException ex)
     {
         if (ex.JsonResult.errcode == ReturnCode.客服帐号已存在kf_account_exsited)
         {
             ViewBag.Messages = new List <MessageInfo>
             {
                 new MessageInfo
                 {
                     Message     = "客服账号已存在!",
                     MessageType = MessageTypes.Danger
                 }
             };
             return(View(model));
         }
         if (ex.JsonResult.errcode == ReturnCode.客服帐号个数超过限制)
         {
             ViewBag.Messages = new List <MessageInfo>
             {
                 new MessageInfo
                 {
                     Message     = "客服帐号个数超过限制!",
                     MessageType = MessageTypes.Danger
                 }
             };
             return(View(model));
         }
     }
     return(RedirectToAction("Index"));
 }