示例#1
0
        public ActionResult GetJsonDataByContentId(KeyWordContentTypes type, Guid contentId)
        {
            switch (type)
            {
            case KeyWordContentTypes.Text:
            {
                return(Json(db.WeiChat_KeyWordTextContents.Find(contentId), JsonRequestBehavior.AllowGet));
            }
            break;

            case KeyWordContentTypes.Image:
            {
                var content = db.WeiChat_KeyWordImageContents.Find(contentId);
                if (content != null)
                {
                    return(Json(db.Site_Images.FirstOrDefault(p => p.MediaId == content.ImageMediaId),
                                JsonRequestBehavior.AllowGet));
                }
            }
            break;

            case KeyWordContentTypes.Voice:
            {
                var content = db.WeiChat_KeyWordVoiceContents.Find(contentId);
                if (content != null)
                {
                    return(Json(db.Site_Voices.FirstOrDefault(p => p.MediaId == content.VoiceMediaId),
                                JsonRequestBehavior.AllowGet));
                }
            }
            break;

            case KeyWordContentTypes.Video:
            {
                var content = db.WeiChat_KeyWordVideoContents.Find(contentId);
                if (content != null)
                {
                    return(Json(db.Site_Videos.FirstOrDefault(p => p.MediaId == content.MediaId),
                                JsonRequestBehavior.AllowGet));
                }
            }
            break;

            case KeyWordContentTypes.News:
            {
                var content = db.WeiChat_KeyWordNewsContents.Find(contentId);
                return(Json(content, JsonRequestBehavior.AllowGet));
            }
            break;

            default:
                break;
            }
            return(Json(null, JsonRequestBehavior.AllowGet));
        }
示例#2
0
        /// <summary>
        ///     根据关键字或关注时回复自动返回相应类型的消息
        /// </summary>
        /// <param name="messageHandler"></param>
        /// <param name="db"></param>
        /// <param name="keyWord"></param>
        /// <param name="contentId"></param>
        /// <param name="type"></param>
        /// <param name="success"></param>
        /// <returns></returns>
        public static IResponseMessageBase ReplyResponseMessage(
            this MessageHandler <MessageContext <IRequestMessageBase, IResponseMessageBase> > messageHandler,
            AppDbContext db, string keyWord, Guid?contentId, KeyWordContentTypes type,
            Action <string, Guid?, KeyWordContentTypes> success)
        {
            IResponseMessageBase responseMessage = null;

            switch (type)
            {
            case KeyWordContentTypes.Text:
            {
                var text = db.WeiChat_KeyWordTextContents.FirstOrDefault(p => p.Id == contentId);
                if (text == null)
                {
                    throw new Exception("文本消息未设置或设置不正确,请在后台重新设置!");
                }
                responseMessage = messageHandler.CreateResponseMessage <ResponseMessageText>();
                ((ResponseMessageText)responseMessage).Content = text.Text;
                success.Invoke(keyWord, contentId, type);
            }
            break;

            case KeyWordContentTypes.News:
            {
                var news =
                    db.WeiChat_KeyWordNewsContents.Include(p => p.Articles).FirstOrDefault(p => p.Id == contentId);
                if (news == null)
                {
                    throw new Exception("文本消息未设置或设置不正确,请在后台重新设置!");
                }
                responseMessage = messageHandler.CreateResponseMessage <ResponseMessageNews>();
                var articles =
                    news.Articles.Select(
                        p =>
                        new Article
                    {
                        Description = p.Description,
                        PicUrl      = p.PicUrl,
                        Title       = p.Title,
                        Url         = p.Url
                    }).ToList();
                ((ResponseMessageNews)responseMessage).Articles = articles;
                success.Invoke(keyWord, contentId, type);
            }
            break;

            case KeyWordContentTypes.Image:
            {
                var image = db.WeiChat_KeyWordImageContents.FirstOrDefault(p => p.Id == contentId);
                if (image == null)
                {
                    throw new Exception("文本消息未设置或设置不正确,请在后台重新设置!");
                }
                responseMessage = messageHandler.CreateResponseMessage <ResponseMessageImage>();
                ((ResponseMessageImage)responseMessage).Image = new Image
                {
                    MediaId = image.ImageMediaId
                };
                success.Invoke(keyWord, contentId, type);
            }
            break;

            case KeyWordContentTypes.Video:
            {
                var video = db.WeiChat_KeyWordVideoContents.FirstOrDefault(p => p.Id == contentId);
                if (video == null)
                {
                    throw new Exception("文本消息未设置或设置不正确,请在后台重新设置!");
                }
                responseMessage = messageHandler.CreateResponseMessage <ResponseMessageVideo>();
                ((ResponseMessageVideo)responseMessage).Video = new Video
                {
                    MediaId = video.MediaId,
                    //TODO:存储描述和标题
                    Description = "测试",
                    Title       = "测试"
                };
                success.Invoke(keyWord, contentId, type);
            }
            break;

            case KeyWordContentTypes.Voice:
            {
                var voice = db.WeiChat_KeyWordVoiceContents.FirstOrDefault(p => p.Id == contentId);
                if (voice == null)
                {
                    throw new Exception("文本消息未设置或设置不正确,请在后台重新设置!");
                }
                responseMessage = messageHandler.CreateResponseMessage <ResponseMessageVoice>();
                ((ResponseMessageVoice)responseMessage).Voice = new Voice
                {
                    MediaId = voice.VoiceMediaId
                };
                success.Invoke(keyWord, contentId, type);
            }
            break;

            case KeyWordContentTypes.CustomerService:
            {
                responseMessage = messageHandler.CreateResponseMessage <ResponseMessageTransfer_Customer_Service>();
                success.Invoke(keyWord, contentId, type);
                break;
            }

            default:
                break;
            }
            return(responseMessage);
        }