Exemplo n.º 1
0
        /// <summary>
        /// 执行获取微信接口调用凭证
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public T Execute <T>(WeChatModel Model)
        {
            sRequestUrl = string.Format(sRequestUrl, Model.sAppId, Model.sAppSecret);
            string result  = WeChatHttpHelper.HttpGet(sRequestUrl);
            T      Respone = JsonHelper.Deserialize <T>(result);

            return(Respone);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 执行创建自定义菜单的请求
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public T Execute <T>(WeChatModel Model)
        {
            CreateAutoMenuModel model = Model as CreateAutoMenuModel;

            sRequestUrl = string.Format(sRequestUrl, model.sAccessToken);
            string result  = WeChatHttpHelper.HttpPost(sRequestUrl, model.sBody);
            T      Respone = JsonHelper.Deserialize <T>(result);

            return(Respone);
        }
        /// <summary>
        /// 执行获取微信用户信息的请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <returns></returns>
        public T Execute <T>(WeChatModel Model)
        {
            GetWeChatUserInfoModel model = Model as GetWeChatUserInfoModel;

            sRequestUrl = string.Format(sRequestUrl, model.sAccessToken, model.sOpenId);
            string result  = WeChatHttpHelper.HttpGet(sRequestUrl);
            T      respone = JsonHelper.Deserialize <T>(result);

            return(respone);
        }
        /// <summary>
        /// 执行获取调用JS接口的凭证的请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <returns></returns>
        public T Execute <T>(WeChatModel Model)
        {
            GetJsApiAccessTokenModel model = Model as GetJsApiAccessTokenModel;

            sRequestUrl = string.Format(sRequestUrl, model.sAccessToken);
            string result  = WeChatHttpHelper.HttpGet(sRequestUrl);
            T      Respone = JsonHelper.Deserialize <T>(result);

            return(Respone);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 执行获取微信用户OpenId的请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <returns></returns>
        public T Execute <T>(WeChatModel Model)
        {
            GetOpenIdByPageAuthorizeModel model = Model as GetOpenIdByPageAuthorizeModel;

            sRequestUrl = string.Format(sRequestUrl, model.sAppId, model.sAppSecret, model.sCode);
            string result  = WeChatHttpHelper.HttpGet(sRequestUrl);
            T      respone = JsonHelper.Deserialize <T>(result);

            return(respone);
        }
Exemplo n.º 6
0
        public static string SelectClassTableImg(UserRequest userrequest)
        {
            string path = root + BufferSubdirectory.ClassTable + "/" + userrequest.FromUserName;

            if (System.IO.File.Exists(path))
            {
                ClassTableDrawer drawer = new ClassTableDrawer();
                Stream           stream = drawer.DrawClassTableInStream(userrequest.FromUserName);
                WeChatHttpHelper.GetToken();
                return(userrequest.Get_Img(WeChatHttpHelper.GetMediaID(stream)));
            }
            else
            {
                return(userrequest.Get_Reply(isnotexist(userrequest.FromUserName)));
            }
        }
        /// <summary>
        /// 执行通过网页授权获取微信用户信息的请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <returns></returns>
        public T Execute <T>(WeChatModel Model)
        {
            GetWeChatUserInfoByPageAuthorizeModel model = Model as GetWeChatUserInfoByPageAuthorizeModel;
            //第一步 获取openid和access_token
            IWeChatRequest request            = new GetOpenIdByPageAuthorizeRequest();
            GetOpenIdByPageAuthorizeModel obj = new GetOpenIdByPageAuthorizeModel()
            {
                sAppId = model.sAppId, sAppSecret = model.sAppSecret, sCode = model.sCode
            };
            GetOpenIdByPageAuthorizeRespone res = request.Execute <GetOpenIdByPageAuthorizeRespone>(obj);

            //第二步 拉取用户信息
            sRequestUrl = string.Format(sRequestUrl, res.access_token, res.openid);
            string result  = WeChatHttpHelper.HttpGet(sRequestUrl);
            T      respone = JsonHelper.Deserialize <T>(result);

            return(respone);
        }
        /// <summary>
        /// 执行发送模板消息的请求
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        /// <returns></returns>
        public T Execute <T>(WeChatModel Model)
        {
            SendTemplateInfoModel model = Model as SendTemplateInfoModel;

            sRequestUrl = string.Format(sRequestUrl, model.sAccessToken);
            var Data = new
            {
                touser      = model.sOpenId,
                template_id = model.sTemplateId,
                url         = model.sUrl,
                data        = model.sBody
            };
            string DataString = JsonHelper.ToJsonString(Data);
            string result     = WeChatHttpHelper.HttpPost(sRequestUrl, DataString);
            T      Respone    = JsonHelper.Deserialize <T>(result);

            return(Respone);
        }
Exemplo n.º 9
0
        }//信息来源是腾讯才会返回true

        private void task_voicemanager()
        {
            try
            {
                string path = @"C:\Users\Administrator\Desktop\ElearnOralResult\" + WechatRequest.FromUserName;
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                WeChatHttpHelper.GetToken();
                var bytelist = WeChatHttpHelper.DownloadMedia(WechatRequest.MediaId);
                using (FileStream fs = new FileStream(path + @"\0.amr", FileMode.Create, FileAccess.Write))
                {
                    foreach (var abyte in bytelist)
                    {
                        fs.WriteByte(abyte);
                    }
                    fs.Flush();
                }
                ISEServerAgent.ConvertVideo(path + @"\0.amr");
                using (FileStream fs = new FileStream(path + @"\0.wav", FileMode.Open, FileAccess.Read))
                    using (ISEServerAgent agent = new ISEServerAgent())
                    {
                        agent.Login(System.Web.Configuration.WebConfigurationManager.AppSettings["iflytekKey"]);
                        if (agent.errorCode != (int)ErrorCode.MSP_SUCCESS)
                        {
                            WechatRequest.Save_log("\r\n" + agent.errorCode);
                            return;
                        }
                        agent.TextPut("[content]\r\nIt was two weeks before the Spring Festival.\r\n");
                        agent.AudioWrite(fs);
                        agent.GetAndSaveRemark(path + "\\result.txt");
                    }
            }
            catch (Exception e)
            {
                WechatRequest.Save_log(e.ToString());
            }
        }
Exemplo n.º 10
0
        // GET: WeChat
        public string Index() //回复全都是xml格式的string
        {
            if (IsFromTencent("961016") && Request.HttpMethod == "GET")
            {
                return(Request["echostr"]);
            }
            if (IsFromTencent("961016") && Request.HttpMethod == "POST")
            {
                WechatRequest = new WechatRequest(Request.InputStream);
                #region wechatpost
                if (WechatRequest.IsClick())
                {
                    #region ButtonEvent
                    switch (WechatRequest.EventKey)
                    {
                    case "elearning_wordlearn":
                        return(WechatRequest.Get_Reply(WechatRequest.elearning_wordlearn));

                    case "elearning_textlearn":
                        return(WechatRequest.Get_Reply(WechatRequest.elearning_textlearn));

                    case "elearning_nextword":
                        string nextword = DataBaseController.GetNextWord(WechatRequest.FromUserName);
                        if (nextword != null)
                        {
                            return(WechatRequest.Get_Reply(nextword));
                        }
                        else
                        {
                            return(WechatRequest.Get_Reply("当前未设立测试范围或已经学习完全部内容"));
                        }

                    case "elearning_oraltrain":
                        return(WechatRequest.Get_Reply("It was two weeks before the Spring Festival."));

                    default:
                        return(WechatRequest.Get_Reply("功能还在开发中,敬请期待"));
                    }
                    #endregion
                }
                else if (WechatRequest.IsSubscribe())
                {
                    #region FollowEvent
                    DataBaseController.AddIntoWechatIds(WechatRequest.FromUserName);
                    return(WechatRequest.Get_Reply(WechatRequest.elearn_welcome));

                    #endregion
                }
                else if (WechatRequest.IsVoice())
                {
                    #region VoiceEvent
                    Thread t = new Thread(new ThreadStart(task_voicemanager));
                    t.Start();
                    return(WechatRequest.Get_Reply("提交成功,请等待一段时间后输入Get查看结果!"));

                    #endregion
                }
                else
                {
                    #region MessageEvent
                    string message = WechatRequest.Content;
                    if (Regex.IsMatch(message, "^xh.+"))
                    {
                        DataBaseController.UpdateStudents(WechatRequest.FromUserName, message.Substring(2), null);
                        return(WechatRequest.Get_Reply("学号已修改,现在您绑定的学号为:" + message.Substring(2) + "请输入jwc + 您的教务处密码来绑定,如jwc123456"));
                    }
                    else if (Regex.IsMatch(message, "^jwc.+"))
                    {
                        string studentnum  = DataBaseController.GetStudentNum(WechatRequest.FromUserName);
                        string jwcpassword = message.Substring(3);
                        if (JWCHttpHelper.isPasswordTrue(studentnum, jwcpassword))
                        {
                            DataBaseController.UpdateStudents(WechatRequest.FromUserName, studentnum, jwcpassword);
                            return(WechatRequest.Get_Reply("验证成功!"));
                        }
                        else
                        {
                            return(WechatRequest.Get_Reply($"输入的密码{ jwcpassword }不正确"));
                        }
                    }
                    else
                    {
                        if (Regex.IsMatch(message, "\\d{4,4}"))
                        {
                            if (message.Substring(0, 1) == "0")
                            {
                                if (DataBaseController.tryUpdateProcesses(WechatRequest.FromUserName, message))
                                {
                                    return(WechatRequest.Get_Reply("选择成功!按next开始学习"));
                                }
                                else
                                {
                                    return(WechatRequest.Get_Reply("选择失败,请确认是否绑定学号及输入代码是否正确"));
                                }
                            }
                            else if (message.Substring(0, 1) == "2")
                            {
                                return(WechatRequest.Get_ImgText());
                            }
                        }
                        if (!DataBaseController.HaveBinding(WechatRequest.FromUserName))
                        {
                            return(WechatRequest.Get_Reply(WechatRequest.elearn_welcome));
                        }
                        switch (message)
                        {
                        case "001":
                            return(WechatRequest.Get_Reply(WechatRequest.elearning_testmsg1));

                        case "201":
                            return(WechatRequest.Get_Reply(WechatRequest.elearning_testmsg2));

                        case "speak":
                            string word = DataBaseController.GetNowWord(WechatRequest.FromUserName);
                            if (word == null)
                            {
                                return(WechatRequest.Get_Reply("请先选择学习内容"));
                            }
                            WeChatHttpHelper.GetToken();
                            string mediaid = WeChatHttpHelper.GetMediaID(SpeecherController.mytts("读音:" + word), "voice");
                            return(WechatRequest.Get_Voice(mediaid));

                        case "Get":
                            string path = $@"C:\Users\Administrator\Desktop\ElearnOralResult\{WechatRequest.FromUserName}\result.txt";
                            using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
                            {
                                StreamReader sr = new StreamReader(fs);
                                return(WechatRequest.Get_Reply(sr.ReadToEnd()));
                            }

                        default:
                            return(WechatRequest.Get_Reply("识别错误,请重试"));
                        }
                    }
                    #endregion
                }
                #endregion
            }
            else//不是腾讯发来的post
            {
                return("Do not touch this server,guy!");
            }
        }