/// <summary> /// 点击事件 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase OnEvent_ClickRequest(RequestMessageEvent_Click requestMessage) { //菜单点击,需要跟创建菜单时的Key匹配 IResponseMessageBase IR = null; Common.MessageFunction cmfun = new Common.MessageFunction(); int responseType = 0, ruleId = 0; string keywords = requestMessage.EventKey; //事件key //先精确匹配,再模糊匹配 Core.WeixinRequestRule rule = Core.WeixinRequestRule.Find(Core.WeixinRequestRule._.Keywords == keywords & Core.WeixinRequestRule._.RequestType == (int)Core.WeixinRequestRule.XRequestType.CustomMenu); if (rule == null) { //找不到规则 Core.WeixinResponseContent entity = new Core.WeixinResponseContent() { OpenId = requestMessage.FromUserName, RequestType = requestMessage.MsgType.ToString(), RequestContent = requestMessage.EventKey, ResponseType = "none", ReponseContent = "未取到相应的事件规则", XmlContent = requestMessage.ToUserName }; entity.Insert(); return(cmfun.GetResponseMessageTxtByContent(requestMessage, "未取到相应的事件规则", 0)); } responseType = rule.ResponseType; ruleId = rule.Id; switch (responseType) { case (int)Core.WeixinRequestRule.XResponseType.Text: //发送纯文字 IR = cmfun.GetResponseMessageTxt(requestMessage, ruleId, 0); break; case (int)Core.WeixinRequestRule.XResponseType.Image: //发送多图文 IR = cmfun.GetResponseMessageNews(requestMessage, ruleId, 0); break; case (int)Core.WeixinRequestRule.XResponseType.Voice: //发送语音 IR = cmfun.GetResponseMessageeMusic(requestMessage, ruleId, 0); break; case (int)Core.WeixinRequestRule.XResponseType.SingleImage: IR = cmfun.GetResponseMessageSingleImagesContent(requestMessage, ruleId, 0); break; default: break; } Core.WeixinResponseContent model = new Core.WeixinResponseContent() { OpenId = requestMessage.FromUserName, RequestType = requestMessage.MsgType.ToString(), RequestContent = requestMessage.EventKey, ResponseType = Core.WeixinResponseContent.GetResponseType((int)requestMessage.MsgType), ReponseContent = requestMessage.ToString(), XmlContent = string.Empty }; model.Insert(); return(IR); }
/// <summary> /// 处理文字请求 /// </summary> /// <param name="requestMessage">请求消息</param> /// <returns></returns> public override async Task <IResponseMessageBase> OnTextRequestAsync(RequestMessageText requestMessage) { var defaultResponseMessage = base.CreateResponseMessage <ResponseMessageText>(); IResponseMessageBase IR = null; Common.MessageFunction cmfun = new Common.MessageFunction(); int ruleId = 0; var requestHandler = await requestMessage.StartHandler().Default(async() => { string keywords = requestMessage.Content; if (!string.IsNullOrEmpty(keywords)) { keywords = keywords.Trim(); } var currentMessageContext = await base.GetCurrentMessageContext(); //先精确匹配,再模糊匹配 Core.WeixinRequestRule rule = Core.WeixinRequestRule.Find(Core.WeixinRequestRule._.Keywords == keywords & Core.WeixinRequestRule._.RequestType == (int)Core.WeixinRequestRule.XRequestType.Text); if (rule == null) { //模糊匹配 IList <Core.WeixinRequestRule> listRule = Core.WeixinRequestRule.FindAll(Core.WeixinRequestRule._.RequestType == (int)Core.WeixinRequestRule.XRequestType.Text & Core.WeixinRequestRule._.IsLikeQuery == 1, null, null, 0, 0); if (listRule != null && listRule.Count > 0) { int lenKeyword = keywords.Length; foreach (var item in listRule) { if (lenKeyword >= item.Keywords.Length && keywords.IndexOf(item.Keywords) >= 0) { rule = item;//规则 break; } } } } if (rule == null) { Core.WeixinRequestRule notFindKeywordRule = Core.WeixinRequestRule.Find(Core.WeixinRequestRule._.RequestType == (int)Core.WeixinRequestRule.XRequestType.NotFindKeyword); if (notFindKeywordRule == null) { //找不到规则 Core.WeixinResponseContent entity = new Core.WeixinResponseContent() { OpenId = requestMessage.FromUserName, RequestType = requestMessage.MsgType.ToString(), RequestContent = requestMessage.Content, ResponseType = "none", ReponseContent = "未取到关键词对应的数据", XmlContent = requestMessage.ToUserName }; entity.Insert(); return(cmfun.GetResponseMessageTxtByContent(requestMessage, "未找到匹配的关键词", 0)); } else { ruleId = notFindKeywordRule.Id; switch (notFindKeywordRule.ResponseType) { case (int)Core.WeixinRequestRule.XResponseType.Text: //发送纯文字 IR = cmfun.GetResponseMessageTxt(requestMessage, ruleId, 0); break; case (int)Core.WeixinRequestRule.XResponseType.Image: //发送多图文 IR = cmfun.GetResponseMessageNews(requestMessage, ruleId, 0); break; case (int)Core.WeixinRequestRule.XResponseType.Voice: //发送语音 IR = cmfun.GetResponseMessageeMusic(requestMessage, ruleId, 0); break; case (int)Core.WeixinRequestRule.XResponseType.SingleImage: IR = cmfun.GetResponseMessageSingleImagesContent(requestMessage, ruleId, 0); break; default: break; } return(IR); } } Core.WeixinResponseContent model = new Core.WeixinResponseContent() { OpenId = requestMessage.FromUserName, RequestType = requestMessage.MsgType.ToString(), RequestContent = requestMessage.Content, ResponseType = Core.WeixinResponseContent.GetResponseType((int)requestMessage.MsgType), ReponseContent = requestMessage.ToString(), XmlContent = string.Empty }; model.Insert(); return(IR); }); return(requestHandler.GetResponseMessage() as IResponseMessageBase); }