/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }