Пример #1
0
        public IActionResult AddTextReplyRule()
        {
            WeixinRequestRule model = new WeixinRequestRule();

            Core.Admin.WriteLogActions("查看添加自定义回复规则;");
            return(View(model));
        }
Пример #2
0
        public IActionResult EditClickReplyRule()
        {
            WeixinRequestRule ruleModel = WeixinRequestRule.Find(WeixinRequestRule._.RequestType == (int)WeixinRequestRule.XRequestType.CustomMenu);//获取规则

            if (ruleModel == null)
            {
                return(EchoTipPage("系统找不到本记录!"));
            }
            switch (ruleModel.ResponseType)
            {
            case 0:    //文本
                ViewBag.txtContent = ruleModel.ListContent[0].Content;
                break;

            case 1:    //多图
                break;

            case 2:    //语音
                ViewBag.txtSoundTitle   = ruleModel.ListContent[0].Title;
                ViewBag.txtSoundUrl     = ruleModel.ListContent[0].MediaURL;
                ViewBag.txtSoundContent = ruleModel.ListContent[0].Content;
                break;

            case 8:    //单图
                ViewBag.txtSingleImage = ruleModel.ListContent[0].ImgURL;
                break;
            }
            Core.Admin.WriteLogActions($"查看点击菜单事件回复规则;");
            return(View(ruleModel));
        }
Пример #3
0
        public ActionResult GetClickReplyRuleList(string keyword, int page = 1, int limit = 20)
        {
            int numPerPage, currentPage, startRowIndex;

            numPerPage    = limit;
            currentPage   = page;
            startRowIndex = (currentPage - 1) * numPerPage;
            Expression ex = WeixinRequestRule._.RequestType == (int)WeixinRequestRule.XRequestType.CustomMenu;//点击自定义菜单

            if (!string.IsNullOrWhiteSpace(keyword))
            {
                if (Utils.IsInt(keyword))
                {
                    ex &= (WeixinRequestRule._.Id == int.Parse(keyword) | WeixinRequestRule._.Keywords.Contains(keyword));
                }
                else
                {
                    ex &= WeixinRequestRule._.Keywords.Contains(keyword);
                }
            }
            IList <WeixinRequestRule> list = WeixinRequestRule.FindAll(ex, null, null, startRowIndex, numPerPage);
            long totalCount = WeixinRequestRule.FindCount(ex, null, null, startRowIndex, numPerPage);

            Admin.WriteLogActions($"查看公众号点击事件自定义回复规则({page});");
            return(Content(JsonConvert.SerializeObject(new { total = totalCount, rows = list }), "text/plain"));
        }
Пример #4
0
        public IActionResult AddClickReplyRule()
        {
            WeixinRequestRule model = new WeixinRequestRule();

            model.RequestType = (int)WeixinRequestRule.XRequestType.CustomMenu;//文本请求
            Core.Admin.WriteLogActions("查看添加点击菜单事件回复规则;");
            return(View(model));
        }
Пример #5
0
        public IActionResult DelTextReplyRule(int id)
        {
            WeixinRequestRule model = WeixinRequestRule.Find(WeixinRequestRule._.RequestType == (int)WeixinRequestRule.XRequestType.Text & WeixinRequestRule._.Id == id);//获取规则

            if (model == null)
            {
                tip.Message = "系统找不到本记录";
                return(Json(tip));
            }
            Admin.WriteLogActions("删除关键字回复规则(id:" + model.Id + ");");
            model.Delete();
            tip.Status  = JsonTip.SUCCESS;
            tip.Message = "删除规则成功";
            return(Json(tip));
        }
Пример #6
0
        public ActionResult NotFindKeywordAutoReply()
        {
            WeixinRequestRule ruleModel = WeixinRequestRule.Find(WeixinRequestRule._.RequestType == (int)WeixinRequestRule.XRequestType.NotFindKeyword);//获取规则

            if (ruleModel == null)
            {
                ruleModel              = new WeixinRequestRule();
                ruleModel.RequestType  = (int)WeixinRequestRule.XRequestType.NotFindKeyword;
                ruleModel.ResponseType = (int)WeixinRequestRule.XResponseType.Text;
                ruleModel.RuleName     = "未找到关键词自动回复";
                ruleModel.IsDefault    = 1;
                ruleModel.Insert();
                //增加Response
                WeixinRequestContent content = new WeixinRequestContent()
                {
                    RuleId  = ruleModel.Id,
                    Content = "未找到关键词自动回复",
                };
                content.Insert();
                ruleModel = WeixinRequestRule.Find(WeixinRequestRule._.RequestType == (int)WeixinRequestRule.XRequestType.NotFindKeyword);//重新获取规则
            }
            switch (ruleModel.ResponseType)
            {
            case 0:    //文本
                ViewBag.txtContent = ruleModel.ListContent[0].Content;
                break;

            case 1:    //多图
                break;

            case 2:    //语音
                ViewBag.txtSoundTitle   = ruleModel.ListContent[0].Title;
                ViewBag.txtSoundUrl     = ruleModel.ListContent[0].MediaURL;
                ViewBag.txtSoundContent = ruleModel.ListContent[0].Content;
                break;

            case 8:    //单图
                ViewBag.txtSingleImage = ruleModel.ListContent[0].ImgURL;
                break;
            }

            Core.Admin.WriteLogActions("查看公众号未找到关键字自动回复;");
            return(View(ruleModel));
        }
Пример #7
0
        public IActionResult SubscribeReply()
        {
            WeixinRequestRule ruleModel = WeixinRequestRule.Find(WeixinRequestRule._.RequestType == (int)WeixinRequestRule.XRequestType.Flow);//获取规则

            if (ruleModel == null)
            {
                ruleModel              = new WeixinRequestRule();
                ruleModel.RequestType  = (int)WeixinRequestRule.XRequestType.Flow;
                ruleModel.ResponseType = (int)WeixinRequestRule.XResponseType.Text;
                ruleModel.RuleName     = "关注自动回复";
                ruleModel.IsDefault    = 1;
                ruleModel.Insert();
                //增加Response
                WeixinRequestContent content = new WeixinRequestContent()
                {
                    RuleId  = ruleModel.Id,
                    Content = "关注公众号自动回复文本"
                };
                content.Insert();
            }
            switch (ruleModel.ResponseType)
            {
            case 0:    //文本
                ViewBag.txtContent = ruleModel.ListContent[0].Content;
                break;

            case 1:    //多图
                break;

            case 2:    //语音
                ViewBag.txtSoundTitle   = ruleModel.ListContent[0].Title;
                ViewBag.txtSoundUrl     = ruleModel.ListContent[0].MediaURL;
                ViewBag.txtSoundContent = ruleModel.ListContent[0].Content;
                break;

            case 8:    //单图
                ViewBag.txtSingleImage = ruleModel.ListContent[0].ImgURL;
                break;
            }
            Admin.WriteLogActions("查看公众号关注自动回复;");
            return(View(ruleModel));
        }
Пример #8
0
        public IActionResult EditClickReplyRule(WeixinRequestRule entity)
        {
            WeixinRequestRule model = WeixinRequestRule.Find(WeixinRequestRule._.RequestType == (int)WeixinRequestRule.XRequestType.CustomMenu & WeixinRequestRule._.Id == entity.Id);//获取规则

            if (model == null)
            {
                tip.Message = "系统找不到本记录";
                return(Json(tip));
            }

            model.ResponseType = entity.ResponseType;
            model.Keywords     = entity.Keywords;
            model.IsDefault    = 1;
            int defaultDetailId             = int.Parse(Request.Form["hdfTID"]);//默认一条的ID。肯定至少有一条
            int responseType                = model.ResponseType;
            IList <WeixinRequestContent> ls = new List <WeixinRequestContent>();

            if (responseType == 0) //纯文本
            {
                string txtContent = Request.Form["txtContent"];
                if (string.IsNullOrEmpty(txtContent))
                {
                    tip.Message = "文本回复,文本不能为空!";
                    return(Json(tip));
                }
                model.ResponseType = (int)WeixinRequestRule.XResponseType.Text;//回复的类型:文本1,图文2,语音3,视频4,第三方接口5
                ls.Add(new WeixinRequestContent {
                    RuleId = model.Id, Content = txtContent.Trim(), Id = defaultDetailId
                });
            }
            else if (responseType == (int)WeixinRequestRule.XResponseType.Image) //图文
            {
                #region 赋值规则图片

                string[] itemIdArr      = Request.Form["item_id"];
                string[] itemTitleArr   = Request.Form["item_title"];
                string[] itemContentArr = Request.Form["item_imginfo"];
                string[] itemImgUrlArr  = Request.Form["item_imgurl"];
                string[] itemLinkUrlArr = Request.Form["item_linkurl"];
                if (itemIdArr != null && itemTitleArr != null && itemImgUrlArr != null && itemLinkUrlArr != null && itemContentArr != null)
                {
                    if ((itemIdArr.Length == itemTitleArr.Length) && (itemTitleArr.Length == itemImgUrlArr.Length) && (itemImgUrlArr.Length == itemLinkUrlArr.Length))
                    {
                        for (int i = 0; i < itemIdArr.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(itemTitleArr[i]))
                            {
                                WeixinRequestContent modelt = new WeixinRequestContent();
                                modelt.Id      = Utils.StrToInt(itemIdArr[i].Trim(), 0);
                                modelt.Title   = itemTitleArr[i].Trim();
                                modelt.Content = itemContentArr[i].Trim();
                                modelt.ImgURL  = itemImgUrlArr[i].Trim();
                                modelt.LinkUrl = itemLinkUrlArr[i].Trim();
                                modelt.RuleId  = model.Id;
                                ls.Add(modelt);
                            }
                        }
                        //model.contents = ls;
                    }
                }
                #endregion
                if (ls == null || ls.Count < 1)
                {
                    tip.Message = "图文列表,图文项目不能为空!";
                    return(Json(tip));
                }
            }
            else if (responseType == (int)WeixinRequestRule.XResponseType.Video) //语音
            {
                string txtSoundTitle = Request.Form["txtSoundTitle"];
                if (string.IsNullOrEmpty(txtSoundTitle))
                {
                    tip.Message = "语音回复,语音标题不能为空!";
                    return(Json(tip));
                }
                string txtSoundUrl = Request.Form["txtSoundUrl"];
                if (string.IsNullOrEmpty(txtSoundUrl))
                {
                    tip.Message = "语音回复,语音地址不能为空!";
                    return(Json(tip));
                }
                string txtSoundContent = Request.Form["txtSoundContent"];

                ls.Add(new WeixinRequestContent {
                    RuleId = model.Id, MediaURL = txtSoundUrl.Trim(), Title = txtSoundTitle, Id = defaultDetailId, Content = txtSoundContent
                });
            }
            else if (responseType == (int)WeixinRequestRule.XResponseType.SingleImage) //单图片
            {
                string txtSingleImage = Request.Form["txtSingleImage"];
                if (string.IsNullOrEmpty(txtSingleImage))
                {
                    tip.Message = "单图片回复,图片地址不能为空!";
                    return(Json(tip));
                }
                ls.Add(new WeixinRequestContent {
                    RuleId = model.Id, ImgURL = txtSingleImage.Trim(), Id = defaultDetailId
                });
            }
            model.Save();
            IList <WeixinRequestContent> oldwc = model.ListContent;
            if (oldwc != null && oldwc.Count > 0)
            {
                foreach (WeixinRequestContent p in ls)
                {
                    if (oldwc.Find(s => s.Id == p.Id) != null)
                    {
                        oldwc.Remove(oldwc.Find(s => s.Id == p.Id));
                    }
                }
                if (oldwc != null && oldwc.Count > 0)
                {
                    oldwc.Delete();
                }
            }
            if (ls != null && ls.Count > 0)
            {
                foreach (var item in ls)
                {
                    item.RuleId = model.Id;
                }
            }
            ls.Save();

            tip.Message   = "修改点击自定义菜单事件自动回复成功!";
            tip.Status    = JsonTip.SUCCESS;
            tip.ReturnUrl = "close";
            Admin.WriteLogActions("修改点击自定义菜单事件自动回复;");
            return(Json(tip));
        }
Пример #9
0
        public IActionResult AddTextReplyRule(WeixinRequestRule model)
        {
            model.IsDefault = 1;

            int responseType = model.ResponseType;

            model.RequestType = (int)WeixinRequestRule.XRequestType.Text;//文本请求
            IList <WeixinRequestContent> ls = new List <WeixinRequestContent>();

            if (responseType == 0) //纯文本
            {
                string txtContent = Request.Form["txtContent"];
                if (string.IsNullOrEmpty(txtContent))
                {
                    tip.Message = "文本回复,文本不能为空!";
                    return(Json(tip));
                }
                model.ResponseType = (int)WeixinRequestRule.XResponseType.Text;//回复的类型:文本1,图文2,语音3,视频4,第三方接口5
                ls.Add(new WeixinRequestContent {
                    RuleId = model.Id, Content = txtContent.Trim()
                });
            }
            else if (responseType == (int)WeixinRequestRule.XResponseType.Image) //图文
            {
                #region 赋值规则图片

                string[] itemIdArr      = Request.Form["item_id"];
                string[] itemTitleArr   = Request.Form["item_title"];
                string[] itemContentArr = Request.Form["item_imginfo"];
                string[] itemImgUrlArr  = Request.Form["item_imgurl"];
                string[] itemLinkUrlArr = Request.Form["item_linkurl"];
                if (itemIdArr != null && itemTitleArr != null && itemImgUrlArr != null && itemLinkUrlArr != null && itemContentArr != null)
                {
                    if ((itemIdArr.Length == itemTitleArr.Length) && (itemTitleArr.Length == itemImgUrlArr.Length) && (itemImgUrlArr.Length == itemLinkUrlArr.Length))
                    {
                        for (int i = 0; i < itemIdArr.Length; i++)
                        {
                            if (!string.IsNullOrEmpty(itemTitleArr[i]))
                            {
                                WeixinRequestContent modelt = new WeixinRequestContent();
                                modelt.Id      = Utils.StrToInt(itemIdArr[i].Trim(), 0);
                                modelt.Title   = itemTitleArr[i].Trim();
                                modelt.Content = itemContentArr[i].Trim();
                                modelt.ImgURL  = itemImgUrlArr[i].Trim();
                                modelt.LinkUrl = itemLinkUrlArr[i].Trim();
                                modelt.RuleId  = model.Id;
                                ls.Add(modelt);
                            }
                        }
                        //model.contents = ls;
                    }
                }
                #endregion
                if (ls == null || ls.Count < 1)
                {
                    tip.Message = "图文列表,图文项目不能为空!";
                    return(Json(tip));
                }
            }
            else if (responseType == (int)WeixinRequestRule.XResponseType.Video) //语音
            {
                string txtSoundTitle = Request.Form["txtSoundTitle"];
                if (string.IsNullOrEmpty(txtSoundTitle))
                {
                    tip.Message = "语音回复,语音标题不能为空!";
                    return(Json(tip));
                }
                string txtSoundUrl = Request.Form["txtSoundUrl"];
                if (string.IsNullOrEmpty(txtSoundUrl))
                {
                    tip.Message = "语音回复,语音地址不能为空!";
                    return(Json(tip));
                }
                string txtSoundContent = Request.Form["txtSoundContent"];

                ls.Add(new WeixinRequestContent {
                    RuleId = model.Id, MediaURL = txtSoundUrl.Trim(), Title = txtSoundTitle, Content = txtSoundContent
                });
            }
            else if (responseType == (int)WeixinRequestRule.XResponseType.SingleImage) //单图片
            {
                string txtSingleImage = Request.Form["txtSingleImage"];
                if (string.IsNullOrEmpty(txtSingleImage))
                {
                    tip.Message = "单图片回复,图片地址不能为空!";
                    return(Json(tip));
                }
                ls.Add(new WeixinRequestContent {
                    RuleId = model.Id, ImgURL = txtSingleImage.Trim()
                });
            }
            model.Insert();
            IList <WeixinRequestContent> oldwc = model.ListContent;
            if (oldwc != null && oldwc.Count > 0)
            {
                foreach (WeixinRequestContent p in ls)
                {
                    if (oldwc.Find(s => s.Id == p.Id) != null)
                    {
                        oldwc.Remove(oldwc.Find(s => s.Id == p.Id));
                    }
                }
                if (oldwc != null && oldwc.Count > 0)
                {
                    oldwc.Delete();
                }
            }
            if (ls != null && ls.Count > 0)
            {
                foreach (var item in ls)
                {
                    item.RuleId = model.Id;
                }
            }
            ls.Save();

            tip.Message   = "添加文本关键字回复规则成功!";
            tip.Status    = JsonTip.SUCCESS;
            tip.ReturnUrl = "close";
            Core.Admin.WriteLogActions("添加文本关键字回复规则;");
            return(Json(tip));
        }
Пример #10
0
        /// <summary>
        /// 定阅事件的统一处理
        /// </summary>
        public IResponseMessageBase EventSubscribe(int type, RequestMessageEventBase requestMessage)
        {
            int    accountId = GetAccountId(); //取得公众账户ID
            string EventName = "";

            if (requestMessage.Event.ToString().Trim() != "")
            {
                EventName = requestMessage.Event.ToString();
            }
            //else if (requestMessage.EventKey != null)
            //{
            //    EventName += requestMessage.EventKey.ToString();
            //}


            if (!ExistsOriginalId(accountId, requestMessage.ToUserName))
            {
                //验证接收方是否为我们系统配置的帐号,即验证微帐号与微信原始帐号id是否一致,如果不一致,说明【1】配置错误,【2】数据来源有问题
                //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "none", "未取到关键词对应的数据", requestMessage.ToUserName);
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "none",
                    ReponseContent = "未取到关键词对应的数据",
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();


                return(GetResponseMessageTxtByContent(requestMessage, "验证微帐号与微信原始帐号id不一致,可能原因【1】系统配置错误,【2】非法的数据来源", accountId));
            }


            int responseType = 0, ruleId = 0;
            //int ruleId = new BLL.weixin_request_rule().GetRuleIdAndResponseType(accountId, "request_type=" + type, out responseType);
            WeixinRequestRule rule = WeixinRequestRule.Find(WeixinRequestRule._.RequestType == type);

            if (rule != null)
            {
                responseType = rule.ResponseType;
                ruleId       = rule.Id;
            }

            if (ruleId <= 0)
            {
                //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "none", "未取到关键词对应的数据", requestMessage.ToUserName);
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "none",
                    ReponseContent = "未取到关键词对应的数据",
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
                return(null);
            }

            IResponseMessageBase reponseMessage = null;

            switch (responseType)
            {
            case (int)WeixinRequestRule.XResponseType.Text:
                //发送纯文字
                reponseMessage = GetResponseMessageTxt(requestMessage, rule.Id, accountId);
                break;

            case (int)WeixinRequestRule.XResponseType.Image:
                //发送多图文
                reponseMessage = GetResponseMessageNews(requestMessage, rule.Id, accountId);
                break;

            case (int)WeixinRequestRule.XResponseType.Voice:
                //发送语音
                reponseMessage = GetResponseMessageeMusic(requestMessage, rule.Id, accountId);
                break;

            case (int)WeixinRequestRule.XResponseType.SingleImage:
                reponseMessage = GetResponseMessageSingleImage(requestMessage, rule.Id, accountId);
                break;

            default:
                break;
            }
            return(reponseMessage);
        }