예제 #1
0
        public override IResponseMessageBase OnTextRequest(Senparc.Weixin.QY.Entities.RequestMessageText requestMessage)
        {
            IWC_OfficalAccountsBLL account_BLL = new WC_OfficalAccountsBLL()
            {
                m_Rep = new WC_OfficalAccountsRepository(new Models.DBContainer())
            };

            //获得当前公众号
            WC_OfficalAccountsModel account = account_BLL.GetById(Id);

            IWC_MessageResponseBLL message_BLL = new WC_MessageResponseBLL()
            {
                m_Rep = new WC_MessageResponseRepository(new Models.DBContainer())
            };


            //只获取第一条匹配的条件作为信息
            List <P_WC_GetResponseContent_Result> messageList = message_BLL.GetResponseContent(Id, requestMessage.Content);



            if (messageList.Count() > 0)
            {
                //文本方式
                if (messageList[0].MessageRule == (int)WeChatRequestRuleEnum.Text)
                {
                    var responseMessage = base.CreateResponseMessage <Senparc.Weixin.QY.Entities.ResponseMessageText>();
                    responseMessage.CreateTime   = ResultHelper.NowTime;
                    responseMessage.ToUserName   = requestMessage.FromUserName;
                    responseMessage.FromUserName = account.OfficalId;
                    responseMessage.Content      = messageList[0].TextContent;
                    return(responseMessage);
                }
                //图文方式
                else if (messageList[0].MessageRule == (int)WeChatRequestRuleEnum.Image)
                {
                    var responseMessage = CreateResponseMessage <ResponseMessageNews>();
                    foreach (var model in messageList)
                    {
                        responseMessage.Articles.Add(new Senparc.Weixin.QY.Entities.Article()
                        {
                            Title       = model.TextContent,
                            Description = model.ImgTextContext,
                            PicUrl      = WebConfigPara.SiteConfig.WeChatSiteUrl + model.ImgTextUrl,
                            Url         = model.ImgTextLink
                        });
                    }
                    return(responseMessage);
                }//一般很少用到
                //默认回复
                else if (messageList[0].MessageRule == (int)WeChatRequestRuleEnum.Default)
                {
                    if (messageList[0].Category == (int)WeChatReplyCategory.Text)
                    {
                        var responseMessage = base.CreateResponseMessage <Senparc.Weixin.QY.Entities.ResponseMessageText>();
                        responseMessage.CreateTime   = ResultHelper.NowTime;
                        responseMessage.ToUserName   = requestMessage.FromUserName;
                        responseMessage.FromUserName = account.OfficalId;
                        responseMessage.Content      = messageList[0].TextContent;
                        return(responseMessage);
                    }
                    //图文方式
                    else if (messageList[0].Category == (int)WeChatReplyCategory.Image)
                    {
                        var responseMessage = CreateResponseMessage <ResponseMessageNews>();
                        foreach (var model in messageList)
                        {
                            responseMessage.Articles.Add(new Senparc.Weixin.QY.Entities.Article()
                            {
                                Title       = model.TextContent,
                                Description = model.ImgTextContext,
                                PicUrl      = WebConfigPara.SiteConfig.WeChatSiteUrl + model.ImgTextUrl,
                                Url         = model.ImgTextLink
                            });
                        }
                        return(responseMessage);
                    }
                }
                //下面方式用到才启用
                //视频方式
                //位置
            }
            var errorResponseMessage = requestMessage.CreateResponseMessage <ResponseMessageText>();

            //因为没有设置errorResponseMessage.Content,所以这小消息将无法正确返回。
            return(errorResponseMessage);
        }