Example #1
0
        /// <summary>
        /// 推送纯文字
        /// </summary>
        public IResponseMessageBase GetResponseMessageTxtByContent(RequestMessageEventBase requestMessage, string content, int accountId)
        {
            var responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage);
            var locationService = new LocationService();

            responseMessage.Content = content;
            string EventName = "";

            if (requestMessage.Event.ToString().Trim() != "")
            {
                EventName = requestMessage.Event.ToString();
            }
            //else if (requestMessage.EventKey != null)
            //{
            //    EventName += requestMessage.EventKey.ToString();
            //}
            //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "text", "事件:推送纯粹的文字,内容为:" + content, requestMessage.ToUserName);
            WeixinResponseContent entity = new WeixinResponseContent()
            {
                OpenId         = requestMessage.FromUserName,
                RequestType    = requestMessage.MsgType.ToString(),
                RequestContent = EventName,
                ResponseType   = "text",
                ReponseContent = "事件:推送纯粹的文字,内容为:" + content,
                XmlContent     = requestMessage.ToUserName
            };

            entity.Insert();
            return(responseMessage);
        }
Example #2
0
        /// <summary>
        /// 推送纯文字
        /// </summary>
        public IResponseMessageBase GetResponseMessageTxt(RequestMessageText requestMessage, int ruleId, int accountId)
        {
            var    responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage);
            string openid          = requestMessage.FromUserName;
            string token           = ConvertDateTimeInt(DateTime.Now).ToString();
            //responseMessage.Content = new BLL.weixin_request_content().GetContent(ruleId);
            WeixinRequestContent ctx = WeixinRequestContent.Find(WeixinRequestContent._.RuleId == ruleId);

            if (ctx != null)
            {
                responseMessage.Content = ctx.Content;
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = requestMessage.Content,
                    ResponseType   = "text",
                    ReponseContent = responseMessage.Content,
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
            }
            //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), requestMessage.Content, "text", responseMessage.Content, requestMessage.ToUserName);
            return(responseMessage);
        }
Example #3
0
        /// <summary>
        /// 处理语音请求
        /// </summary>
        public IResponseMessageBase GetResponseMessageeMusic(RequestMessageEventBase requestMessage, int ruleId, int accountId)
        {
            var    responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageMusic>(requestMessage);
            string EventName       = "";

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

            //Model.weixin_request_content model = new BLL.weixin_request_content().GetModel(ruleId);
            WeixinRequestContent model = WeixinRequestContent.Find(WeixinRequestContent._.RuleId == ruleId);

            if (model == null)
            {
                //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "music", "-1", requestMessage.ToUserName);
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "music",
                    ReponseContent = "-1",
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
            }
            else
            {
                if (model.MediaURL.Contains("http://"))
                {
                    responseMessage.Music.MusicUrl = model.MediaURL;
                }
                else
                {
                    //因为安装目录是以/开头,所以去掉,以免出现双斜杆
                    responseMessage.Music.MusicUrl = Utils.GetServerUrl() + model.MediaURL;
                }
                responseMessage.Music.Title       = model.Title;
                responseMessage.Music.Description = model.Content;
                //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "music", "音乐链接:" + model.media_url + "|标题:" + model.title + "|描述:" + model.content, requestMessage.ToUserName);
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "music",
                    ReponseContent = "音乐链接:" + model.MediaURL + "|标题:" + model.Title + "|描述:" + model.Content,
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
            }
            return(responseMessage);
        }
Example #4
0
        /// <summary>
        /// 推送单张图片
        /// </summary>
        public IResponseMessageBase GetResponseMessageSingleImagesContent(RequestMessageEventBase requestMessage, int ruleId, int accountId)
        {
            var    responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageImage>(requestMessage);
            string EventName       = "";
            var    locationService = new LocationService();

            NewLife.Log.XTrace.WriteLine("相应单图片回复");
            WeixinRequestContent model = WeixinRequestContent.Find(WeixinRequestContent._.RuleId == ruleId);

            if (model == null)
            {
                NewLife.Log.XTrace.WriteLine("没找到单图片回复规则");
                //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "music", "-1", requestMessage.ToUserName);
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "image",
                    ReponseContent = "-1",
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
            }
            else
            {
                if (string.IsNullOrEmpty(model.MediaURL))
                {
                    //如果没有mediaid 则先上传
                    string imgUrl       = "~/wwwroot" + model.ImgURL;
                    var    uploadResult = Senparc.Weixin.MP.AdvancedAPIs.MediaApi.UploadTemporaryMedia(siteConfig.AppId, UploadMediaFileType.image,
                                                                                                       ServerUtility.ContentRootMapPath(imgUrl));
                    model.MediaURL = uploadResult.media_id;
                    model.Update();
                    NewLife.Log.XTrace.WriteLine("上传素材,返回mediaid:" + uploadResult.media_id);
                }
                Image img = new Image();
                img.MediaId = model.MediaURL;
                responseMessage.CreateTime = DateTime.Now;
                responseMessage.Image      = img;

                NewLife.Log.XTrace.WriteLine("回复单图片,mediaid" + img.MediaId + ";回复用户openid:" + responseMessage.FromUserName);

                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "image",
                    ReponseContent = "图片:" + model.MediaURL + "|标题:" + model.Title,
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
            }

            return(responseMessage);
        }
Example #5
0
        /// <summary>
        /// 推送纯文字
        /// </summary>
        public IResponseMessageBase GetResponseMessageTxtByContent(RequestMessageImage requestMessage, string content, int accountId)
        {
            var responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage);

            responseMessage.Content = content;
            WeixinResponseContent entity = new WeixinResponseContent()
            {
                OpenId         = requestMessage.FromUserName,
                RequestType    = requestMessage.MsgType.ToString(),
                RequestContent = requestMessage.PicUrl,
                ResponseType   = "text",
                ReponseContent = "文字请求,推送纯粹文字,内容为:" + content,
                XmlContent     = requestMessage.ToUserName
            };

            entity.Insert();
            //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), requestMessage.Content, "text", "文字请求,推送纯粹文字,内容为:" + content, requestMessage.ToUserName);
            return(responseMessage);
        }
Example #6
0
        /// <summary>
        /// 推送纯文字
        /// </summary>
        public IResponseMessageBase GetResponseMessageTxt(RequestMessageEventBase requestMessage, int ruleId, int accountId)
        {
            var    responseMessage   = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageText>(requestMessage);
            string openid            = requestMessage.FromUserName;
            string token             = ConvertDateTimeInt(DateTime.Now).ToString();
            WeixinRequestContent rct = WeixinRequestContent.Find(WeixinRequestContent._.RuleId == ruleId);

            responseMessage.Content = rct != null ? rct.Content : "";// new BLL.weixin_request_content().GetContent(ruleId);

            NewLife.Log.XTrace.WriteLine("文本自动关注回复:" + ruleId + "||" + responseMessage.Content);

            string EventName = "";

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

            //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "text", responseMessage.Content, requestMessage.ToUserName);
            WeixinResponseContent entity = new WeixinResponseContent()
            {
                OpenId         = requestMessage.FromUserName,
                RequestType    = requestMessage.MsgType.ToString(),
                RequestContent = EventName,
                ResponseType   = "text",
                ReponseContent = responseMessage.Content,
                XmlContent     = requestMessage.ToUserName
            };

            entity.Insert();

            return(responseMessage);
        }
Example #7
0
        /// <summary>
        /// 推送多图文
        /// </summary>
        public IResponseMessageBase GetResponseMessageNews(RequestMessageEventBase requestMessage, int ruleId, int accountId)
        {
            var    responseMessage = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageNews>(requestMessage);
            string openid          = requestMessage.FromUserName;
            string token           = ConvertDateTimeInt(DateTime.Now).ToString();

            Senparc.NeuChar.Entities.Article        article;
            List <Senparc.NeuChar.Entities.Article> artList = new List <Senparc.NeuChar.Entities.Article>();
            //IList<Model.weixin_request_content> twList = new BLL.weixin_request_content().GetModelList(10, ruleId, string.Empty);
            IList <WeixinRequestContent> twList = WeixinRequestContent.FindAll(WeixinRequestContent._.RuleId == ruleId, null, null, 0, 10);

            foreach (WeixinRequestContent modelt in twList)
            {
                article             = new Senparc.NeuChar.Entities.Article();
                article.Title       = modelt.Title;
                article.Description = modelt.Content;
                article.Url         = GetWXApiUrl(modelt.LinkUrl, token, openid);
                if (string.IsNullOrEmpty(modelt.ImgURL))
                {
                    article.PicUrl = string.Empty;
                }
                else
                {
                    if (modelt.ImgURL.Contains("http://"))
                    {
                        article.PicUrl = modelt.ImgURL;
                    }
                    else
                    {
                        //因为安装目录是以/开头,所以去掉,以免出现双斜杆
                        article.PicUrl = Utils.GetServerUrl() + modelt.ImgURL;
                    }
                }
                artList.Add(article);
            }

            string EventName = "";

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

            if (artList.Count == 0)
            {
                //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "txtpic", "-1", requestMessage.ToUserName);
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "txtpic",
                    ReponseContent = "-1",
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
            }
            else
            {
                //new BLL.weixin_response_content().Add(accountId, requestMessage.FromUserName, requestMessage.MsgType.ToString(), EventName, "txtpic", "这次发了" + artList.Count + "条图文", requestMessage.ToUserName);
                WeixinResponseContent entity = new WeixinResponseContent()
                {
                    OpenId         = requestMessage.FromUserName,
                    RequestType    = requestMessage.MsgType.ToString(),
                    RequestContent = EventName,
                    ResponseType   = "txtpic",
                    ReponseContent = "这次发了" + artList.Count + "条图文",
                    XmlContent     = requestMessage.ToUserName
                };
                entity.Insert();
            }
            responseMessage.Articles.AddRange(artList);
            return(responseMessage);
        }
Example #8
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);
        }