Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public IResponseMessageBase GetResponseMessage(RequestMessageEvent_Subscribe requestMessage)
        {
            var responseMessage = CustomResponseMessage.TextMessage(requestMessage);

            responseMessage.Content = GetWelcomeInfo();
            return(responseMessage);
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public IResponseMessageBase GetResponseMessage(RequestMessageEvent_Click requestMessage)
        {
            IResponseMessageBase reponseMessage = null;

            #region 配置在XML中的回复

            dynamic commonResponseMessage = null;

            var message = WeixinCommon.ResponseList.FirstOrDefault(p => p.EventKey == requestMessage.EventKey);
            if (message != null)
            {
                switch (message.MsgType)
                {
                case ResponseMsgType.Text:
                    commonResponseMessage         = CustomResponseMessage.TextMessage(requestMessage);
                    commonResponseMessage.Content = ((ResponseMessageText)message.ResponseMessage).Content;
                    break;

                case ResponseMsgType.Image:
                    commonResponseMessage       = CustomResponseMessage.ImageMessage(requestMessage);
                    commonResponseMessage.Image = ((ResponseMessageImage)message.ResponseMessage).Image;
                    break;

                case ResponseMsgType.Voice:
                    commonResponseMessage       = CustomResponseMessage.VoiceMessage(requestMessage);
                    commonResponseMessage.Voice = ((ResponseMessageVoice)message.ResponseMessage).Voice;
                    break;

                case ResponseMsgType.Video:
                    commonResponseMessage       = CustomResponseMessage.VideoMessage(requestMessage);
                    commonResponseMessage.Video = ((ResponseMessageVideo)message.ResponseMessage).Video;
                    break;

                case ResponseMsgType.Music:
                    commonResponseMessage       = CustomResponseMessage.MusicMessage(requestMessage);
                    commonResponseMessage.Music = ((ResponseMessageMusic)message.ResponseMessage).Music;
                    break;

                case ResponseMsgType.News:
                    commonResponseMessage = CustomResponseMessage.NewsMessage(requestMessage);
                    var list = ((ResponseMessageNews)message.ResponseMessage).Articles;

                    foreach (var item in list)
                    {
                        if (!string.IsNullOrWhiteSpace(item.Url))
                        {
                            var openID = requestMessage.FromUserName;
                            if (item.Url.Contains("?"))
                            {
                                item.Url = item.Url + "&openID=" + openID;
                            }
                            else
                            {
                                item.Url = item.Url + "?openID=" + openID;
                            }
                            item.Url = item.Url + "&_=" + DateTime.Now.ToString("yyyyMMddHHmmss");
                            if (!item.Url.StartsWith("http", StringComparison.CurrentCultureIgnoreCase))
                            {
                                item.Url = WebSiteUrl + item.Url;
                            }
                        }
                        if (!string.IsNullOrWhiteSpace(item.PicUrl))
                        {
                            if (!item.PicUrl.StartsWith("http", StringComparison.CurrentCultureIgnoreCase))
                            {
                                item.PicUrl = WebSiteUrl + item.PicUrl;
                            }
                        }
                    }

                    commonResponseMessage.Articles = list;
                    break;
                }

                //reponseMessage = commonResponseMessage;
            }

            #endregion

            #region 需要做额外处理,填充下面的方法
            switch (requestMessage.EventKey)
            {
            case "最新上架":
                var newcourse = new Course.Services.CourseManager().GetTopCourse(1).FirstOrDefault();
                if (newcourse != null)
                {
                    commonResponseMessage = CustomResponseMessage.NewsMessage(requestMessage);
                    var articles = new List <Article>();
                    var desc     = newcourse.Outline.NoHtml().HtmlDecode();
                    articles.Add(new Article
                    {
                        Title       = newcourse.CourseName,
                        Description = desc.Length > 50 ? desc.Substring(0, 47) + "..." : desc,
                        Url         = WebSiteUrl + "/zh-cn/course/weixinlearning/coursedetail?courseid=" + newcourse.CourseId + "&openID=" + requestMessage.FromUserName,
                        PicUrl      = newcourse.FrontImageUrl
                    });
                    commonResponseMessage.Articles = articles;
                }
                break;

            case "绑定精友":
                var binding = new Services.WeiXinService().GetBindingUserAccount(requestMessage.FromUserName);
                //if (binding != null)
                //{
                //    commonResponseMessage = CustomResponseMessage.NewsMessage(requestMessage);
                //    var articles = new List<Article>();
                //    articles.Add(new Article
                //    {
                //        Title = "绑定精友",
                //        Description = "恭喜你,你已经绑定过了,无需再次绑定!",
                //        Url = "",
                //        PicUrl = ""
                //    });
                //    commonResponseMessage.Articles = articles;
                //}
                if (binding != null)
                {
                    var err = CustomResponseMessage.TextMessage(requestMessage);
                    err.Content           = string.Format("您已经绑定过了,无需再次绑定!", requestMessage.EventKey);
                    commonResponseMessage = err;
                }
                break;
            }

            #endregion

            reponseMessage = commonResponseMessage;

            #region 未知事件的处理

            if (reponseMessage == null)
            {
                var errResponseMessage = CustomResponseMessage.TextMessage(requestMessage);
                errResponseMessage.Content = string.Format("此功能开发中,敬请期待... ", requestMessage.EventKey);
                reponseMessage             = errResponseMessage;
            }

            #endregion

            return(reponseMessage);
        }