public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType) { ResponseMessageBase responseMessage = null; switch (msgType) { case ResponseMsgType.Text: responseMessage = new ResponseMessageText() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = requestMessage.CreateTime,//这个时间不是Ticks,用DateTime.Now会出错 MsgType = msgType }; break; case ResponseMsgType.News: responseMessage = new ResponseMessageNews() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = requestMessage.CreateTime, MsgType = msgType }; break; break; default: throw new ArgumentOutOfRangeException("msgType"); } return responseMessage; }
public IResponseMessageBase GetResponseMessage(IRequestMessageBase requestMessage) { var request = requestMessage as RequestMessageImage; WeixinDbContext db = new WeixinDbContext(); //WeixinUser user = new WeixinUser(); //user.OpenId = Guid.NewGuid().ToString(); //Random r = new Random(); //user.NickName = "测试A" + r.Next(); //user.AvatarUrl = request.PicUrl; //db.WeixinUsers.Add(user); WeixinUser user = db.WeixinUsers.Where(u => u.OpenId == requestMessage.FromUserName).FirstOrDefault<WeixinUser>(); RequestMessage message = new RequestMessage() { MessageType = Convert.ToString(requestMessage.MsgType), FromUserId = user.UserId, RequestTime = requestMessage.CreateTime, Content = request.PicUrl }; db.RequestMessages.Add(message); db.SaveChanges(); return null; }
public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { /* 所有没有被处理的消息会默认返回这里的结果, * 因此,如果想把整个微信请求委托出去(例如需要使用分布式或从其他服务器获取请求), * 只需要在这里统一发出委托请求,如: * var responseMessage = MessageAgent.RequestResponseMessage(agentUrl, agentToken, RequestDocument.ToString()); * return responseMessage; */ var responseMessage = this.CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = "这条消息来自DefaultResponseMessage。"; return(responseMessage); }
/// <summary> /// 获取响应类型实例,并初始化 /// </summary> /// <typeparam name="T">需要返回的类型</typeparam> /// <param name="requestMessage">请求数据</param> /// <returns></returns> public static T CreateFromRequestMessage <T>(IRequestMessageBase requestMessage) where T : ResponseMessageBase { try { var tType = typeof(T); var responseName = tType.Name.Replace("ResponseMessage", ""); //请求名称 ResponseMsgType msgType = (ResponseMsgType)Enum.Parse(typeof(ResponseMsgType), responseName); return(CreateFromRequestMessage(requestMessage, msgType) as T); } catch (Exception ex) { throw new WeixinException("ResponseMessageBase.CreateFromRequestMessage<T>过程发生异常!", ex); } }
public static T CreateFromRequestMessage <T>(IRequestMessageBase requestMessage) where T : ResponseMessageBase { try { Type typeFromHandle = typeof(T); string value = typeFromHandle.Name.Replace("ResponseMessage", ""); ResponseMsgType msgType = (ResponseMsgType)Enum.Parse(typeof(ResponseMsgType), value); return((T)(ResponseMessageBase.CreateFromRequestMessage(requestMessage, msgType) as T)); } catch (Exception inner) { throw new WeixinException("ResponseMessageBase.CreateFromRequestMessage<T>过程发生异常!", inner); } }
public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { try { ResponseMessageText responseMessage = base.CreateResponseMessage <ResponseMessageText>(); //ResponseMessageText也可以是News等其他类型 responseMessage.Content = "这条消息来自DefaultResponseMessage。"; return(responseMessage); } catch (System.Exception ex) { //ApiLoghelper.Info("DefaultResponseMessage", ex.Message); throw; } }
public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType) { ResponseMessageBase responseMessage = null; try { switch (msgType) { case ResponseMsgType.Text: responseMessage = new ResponseMessageText() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = DateTime.Now, //使用当前最新时间 //MsgType = msgType }; break; case ResponseMsgType.News: responseMessage = new ResponseMessageNews() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = DateTime.Now, //使用当前最新时间 //MsgType = msgType }; break; case ResponseMsgType.Music: responseMessage = new ResponseMessageMusic() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = DateTime.Now, //使用当前最新事件 //MsgType = msgType }; break; default: throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException()); } } catch (Exception ex) { throw new WeixinException("CreateFromRequestMessage过程发生异常", ex); } return(responseMessage); }
public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { var ruleMng = new Pasys.Web.WeiXin.RequestRuleManager(); var rules = ruleMng.FindRules("default", RequestRuleMatchType.FullWord); if (rules == null || rules.Count == 0) { return(new ResponseMessageNoResponse()); } if (rules[0].ResponseMessage != null) { return(rules[0].ResponseMessage.ToResponseMessage()); } return(new ResponseMessageNoResponse()); }
public IResponseMessageBase RequestAgent(AppCtx ctx, IRequestMessageBase requestMessage) { /* 所有没有被处理的消息会默认返回这里的结果, * 因此,如果想把整个微信请求委托出去(例如需要使用分布式或从其他服务器获取请求), * 只需要在这里统一发出委托请求,如: * var responseMessage = MessageAgent.RequestResponseMessage(agentUrl, agentToken, RequestDocument.ToString()); * return responseMessage; */ var rsp = ctx.CreateResponseMessage <ResponseMessageText>(); rsp.Content = "未识的指令"; return(rsp); }
private string DealTextMsg(IRequestMessageBase doc, string msg) { string result = string.Empty; string fromUserName = doc.FromUserName; string myWeixinId = doc.ToUserName; result = ""; result += "<xml>"; result += "<ToUserName><![CDATA[" + fromUserName + "]]></ToUserName>"; result += "<FromUserName><![CDATA[" + myWeixinId + "]]></FromUserName>"; result += "<CreateTime>" + GetWeixinDateTime(DateTime.Now) + "</CreateTime>"; result += "<MsgType><![CDATA[text]]></MsgType>"; result += "<Content><![CDATA[" + msg + "]]></Content>"; result += "</xml>"; return result; }
public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { /* 所有没有被处理的消息会默认返回这里的结果, * 因此,如果想把整个微信请求委托出去(例如需要使用分布式或从其他服务器获取请求), * 只需要在这里统一发出委托请求,如: * var responseMessage = MessageAgent.RequestResponseMessage(agentUrl, agentToken, RequestDocument.ToString()); * return responseMessage; */ if (!String.IsNullOrEmpty(Variables.WxDefaultResponseMessage)) { var strongResponseMessage = CreateResponseMessage <ResponseMessageText>(); strongResponseMessage.Content = Variables.WxDefaultResponseMessage; return(strongResponseMessage); } return(null); }
/// <summary> /// 自动判断默认异步方法调用(在没有override的情况下调用的默认方法) /// </summary> /// <param name="requestMessage">requestMessage</param> /// <param name="syncMethod">同名的同步方法(DefaultMessageHandlerAsyncEvent值为SelfSynicMethod时调用)</param> /// <returns></returns> private async Task <IResponseMessageBase> DefaultAsyncMethod(IRequestMessageBase requestMessage, Func <IResponseMessageBase> syncMethod) { switch (base.DefaultMessageHandlerAsyncEvent) { case DefaultMessageHandlerAsyncEvent.DefaultResponseMessageAsync: //返回默认信息 return(await DefaultResponseMessageAsync(requestMessage).ConfigureAwait(false)); case DefaultMessageHandlerAsyncEvent.SelfSynicMethod: //返回同步信息 return(await Task.Run(syncMethod).ConfigureAwait(false)); default: throw new MessageHandlerException($"DefaultMessageHandlerAsyncEvent 类型未作处理:{base.DefaultMessageHandlerAsyncEvent.ToString()}"); } }
/// <summary> /// 发送活动红包 /// </summary> private ActionResult SendActivityToUser(object sceneObj, IRequestMessageBase requestBaseMsg) { var bonusModel = sceneObj as BonusModel; if (bonusModel.Type == BonusInfo.BonusType.Activity) { try { return SendActivityToUser(bonusModel, requestBaseMsg); } catch (Exception e) { Log.Info("活动红包出错:", e); } } return Content(""); }
private List <ApiResult> ExecuteApi(MessagePair messagePair, IRequestMessageBase requestMessage, ApiEnlighten apiEnlighten, string accessTokenOrApi, string openId) { if (messagePair == null || messagePair.ExtendResponses.Count == 0) { return(null); } ApiHandler apiHandler = new ApiHandler(apiEnlighten); List <ApiResult> results = new List <ApiResult>(); foreach (var response in messagePair.ExtendResponses) { ApiResult apiResult = apiHandler.ExecuteApi(response, requestMessage, accessTokenOrApi, openId); results.Add(apiResult); } return(results); }
public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { /* 所有没有被处理的消息会默认返回这里的结果, * 因此,如果想把整个微信请求委托出去(例如需要使用分布式或从其他服务器获取请求), * 只需要在这里统一发出委托请求,如: * var responseMessage = MessageAgent.RequestResponseMessage(agentUrl, agentToken, RequestDocument.ToString()); * return responseMessage; */ if (this.MessageInfo.KeyWords.Keys.Contains("默认")) { var responseMessage = this.CreateResponseMessage <ResponseMessageText>(); responseMessage.Content = this.MessageInfo.KeyWords["默认"]; return(responseMessage); } return(new SuccessResponseMessage()); }
//private static void TipsQuestionTask(int questionid, string openid) //{ // Task task = new Task(() => // { // ILogger logger = EngineContext.Current.Resolve<ILogger>(); // logger.Information("TipsQuestionTask start"); // System.Threading.Thread.Sleep(500); // IUserService uservice = EngineContext.Current.Resolve<IUserService>(); // IUserAnswerService uaService = EngineContext.Current.Resolve<IUserAnswerService>(); // IQuestionBankService qbService = EngineContext.Current.Resolve<IQuestionBankService>(); // IWorkContext workcontext = EngineContext.Current.Resolve<IWorkContext>(); // Question question = qbService.GetQuestionById(questionid); // QuestionBank qbank = qbService.GetQuestionBankById(question.QuestionBank_Id); // User user = uservice.GetUserById(openid); // UserAnswer uanswer = uaService.GetDoingUserAnswer(user.Id); // workcontext.CurrentUser = user; // var nquesiont = uaService.SaveAnswer(uanswer, "", user); // if (nquesiont.AnswerType == AnswerType.Tips) // { // TipsQuestionTask(nquesiont.Id, openid); // } // logger.Information("TipsQuestionTask end"); // }); // task.Start(); //} /// <summary> /// 默认 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { var responseMessage = base.CreateResponseMessage <ResponseMessageText>(); var user = this._userService.GetUserById(requestMessage.FromUserName); if (user == null || user.Subscribe == 0) { responseMessage.Content = "请先关注公众号!"; return(responseMessage); } //responseMessage.Content = $"【{REQUESTNO}】您好,目前使用的微信公众号仍处于开发阶段,DefaultMessage。"; return(responseMessage); }
public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType) { ResponseMessageBase responseMessage = null; try { switch (msgType) { case ResponseMsgType.Text: responseMessage = new ResponseMessageText(); break; case ResponseMsgType.News: responseMessage = new ResponseMessageNews(); break; case ResponseMsgType.Image: responseMessage = new ResponseMessageImage(); break; case ResponseMsgType.Voice: responseMessage = new ResponseMessageVoice(); break; case ResponseMsgType.Video: responseMessage = new ResponseMessageVideo(); break; case ResponseMsgType.MpNews: responseMessage = new ResponseMessageMpNews(); break; default: throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException()); } responseMessage.ToUserName = requestMessage.FromUserName; responseMessage.FromUserName = requestMessage.ToUserName; responseMessage.CreateTime = DateTime.Now; //使用当前最新时间 } catch (Exception ex) { throw new WeixinException("CreateFromRequestMessage过程发生异常", ex); } return(responseMessage); }
private IResponseMessageBase GetResponseMessage(IRequestMessageBase requestMessage, Response responseConfig, MessageEntityEnlighten enlighten) { IResponseMessageBase responseMessage = null; switch (responseConfig.Type) { case ResponseMsgType.Text: responseMessage = RenderResponseMessageText(requestMessage, responseConfig, enlighten); break; case ResponseMsgType.News: break; case ResponseMsgType.Music: break; case ResponseMsgType.Image: responseMessage = RenderResponseMessageImage(requestMessage, responseConfig, enlighten); break; case ResponseMsgType.Voice: break; case ResponseMsgType.Video: break; case ResponseMsgType.Transfer_Customer_Service: break; case ResponseMsgType.MultipleNews: break; case ResponseMsgType.LocationMessage: break; case ResponseMsgType.NoResponse: responseMessage = RenderResponseMessageNoResponse(requestMessage, responseConfig, enlighten); break; case ResponseMsgType.SuccessResponse: break; default: break; } return(responseMessage); }
/// <summary> /// 发送指定格式消息,根据请求消息openID /// </summary> /// <param name="request"></param> /// <param name="msgType"></param> /// <returns></returns> public static IResponseMessageBase GetResponseEntityFromRequest(IRequestMessageBase request, ResponseMsgType msgType) { ResponseMessageBase responseMessage = null; try { switch (msgType) { case ResponseMsgType.Text: responseMessage = new ResponseMessageText(); break; case ResponseMsgType.Image: responseMessage = new ResponseMessageImage(); break; case ResponseMsgType.Voice: responseMessage = new ResponseMessageVoice(); break; case ResponseMsgType.Video: responseMessage = new ResponseMessageVideo(); break; case ResponseMsgType.Music: responseMessage = new ResponseMessageMusic(); break; case ResponseMsgType.News: responseMessage = new ResponseMessageNews(); break; default: Log.Debug("CreateResponseEntity", "找不到相应的msgType"); break; } responseMessage.ToUserName = request.FromUserName; responseMessage.FromUserName = request.ToUserName; responseMessage.CreateTime = DateTime.Now; } catch (Exception e) { } return(responseMessage); }
/// <summary> /// 获取响应类型实例,并初始化 /// </summary> /// <typeparam name="T">需要返回的类型</typeparam> /// <param name="requestMessage">请求数据</param> /// <param name="enlighten">MessageEntityEnlighten,当 T 为接口时必须提供</param> /// <returns></returns> public static T CreateFromRequestMessage <T>(IRequestMessageBase requestMessage, MessageEntityEnlightener enlighten = null) where T : IResponseMessageBase { try { T responseMessage = default(T); var tType = typeof(T); if (tType.IsInterface) { //是接口,需要使用 Enlightener if (enlighten == null) { throw new MessageHandlerException("MessageEntityEnlighten 不能为 null"); } var responseName = tType.Name.Replace("IResponseMessage", "").Replace("ResponseMessage", ""); //请求名称 ResponseMsgType msgType = (ResponseMsgType)Enum.Parse(typeof(ResponseMsgType), responseName); responseMessage = (T)CreateFromRequestMessage(requestMessage, msgType, enlighten); } else { //非接口,直接初始化 //Senparc.CO2NET.Helpers.ReflectionHelper. responseMessage = (T)Activator.CreateInstance(tType); } if (responseMessage != null) { responseMessage.ToUserName = requestMessage.FromUserName; responseMessage.FromUserName = requestMessage.ToUserName; responseMessage.CreateTime = SystemTime.Now; //使用当前最新时间 } return(responseMessage); } catch (Exception ex) { SenparcTrace.SendCustomLog("CreateFromRequestMessage异常调试", typeof(T).FullName); throw new BaseException("ResponseMessageBase.CreateFromRequestMessage<T>过程发生异常!", ex); } }
public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, ResponseMsgType msgType) { ResponseMessageBase responseMessage = null; try { switch (msgType) { case ResponseMsgType.Text: responseMessage = new ResponseMessageText() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = DateTime.Now,//使用当前最新事件 MsgType = msgType }; break; case ResponseMsgType.News: responseMessage = new ResponseMessageNews() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = DateTime.Now,//使用当前最新事件 MsgType = msgType }; break; break; case ResponseMsgType.Music: responseMessage = new ResponseMessageMusic() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = DateTime.Now,//使用当前最新事件 MsgType = msgType }; break; default: throw new UnknownRequestMsgTypeException(string.Format("ResponseMsgType没有为 {0} 提供对应处理程序。", msgType), new ArgumentOutOfRangeException()); } } catch (Exception ex) { throw new WeixinException("CreateFromRequestMessage过程发生异常", ex); } return responseMessage; }
/// <summary> /// 执行API高级接口回复 /// </summary> /// <param name="responses"></param> /// <param name="requestMessage"></param> /// <param name="apiEnlighten"></param> /// <param name="accessTokenOrApi"></param> /// <param name="openId"></param> /// <returns></returns> private List <ApiResult> ExecuteApi(List <Response> responses, IRequestMessageBase requestMessage, ApiEnlightener apiEnlighten, string accessTokenOrApi, string openId) { List <ApiResult> results = new List <ApiResult>(); if (responses == null || responses.Count == 0) { return(results); } ApiHandler apiHandler = new ApiHandler(apiEnlighten); foreach (var response in responses) { ApiResult apiResult = apiHandler.ExecuteApi(response, MaterialData, requestMessage, accessTokenOrApi, openId); results.Add(apiResult); } return(results); }
private void AssertGeneralParameters(IRequestMessageBase requestMessage, IActivity activity) { Assert.Equal(requestMessage.ToUserName, activity.Recipient.Id); Assert.Equal("Bot", activity.Recipient.Name); Assert.Equal(requestMessage.FromUserName, activity.From.Id); Assert.Equal("User", activity.From.Name); if (requestMessage is RequestMessage message) { Assert.Equal(message.MsgId.ToString(), activity.Id); } else { Assert.True(requestMessage is IRequestMessageEventBase); } Assert.Equal("wechat", activity.ChannelId); Assert.Equal(requestMessage.FromUserName, activity.Conversation.Id); }
public async Task <IResponseMessageBase> InCustomer(int mpid, IRequestMessageBase request) { if (await IsAsking(mpid, request.FromUserName)) { return(request.CreateResponseMessage <ResponseMessageNoResponse>()); } var text = await _customerServiceResponseTextAppService.GetCustomerDefaultResponseString(mpid); await SendCustomerText(mpid, request.FromUserName, text); if (await _customerServiceResponseTextAppService.CheckIsWorkingTime(mpid)) { return(request.CreateResponseMessage <ResponseMessageTransfer_Customer_Service>()); } else { return(request.CreateResponseMessage <ResponseMessageNoResponse>()); } }
/// <summary> /// 创建单个图文消息 /// </summary> /// <param name="requestMessage"></param> /// <param name="title">标题</param> /// <param name="content">内容</param> /// <param name="picUrl">图片</param> /// <param name="url">地址</param> /// <returns></returns> public static IResponseMessageBase SingleNews( IRequestMessageBase requestMessage, string title, string content, string picUrl, string url) { var result = ResponseMessageBase.CreateFromRequestMessage <ResponseMessageNews>(requestMessage); result.ArticleCount = 1; result.Articles = new List <Article> { new Article { Title = title, Description = content, PicUrl = picUrl, Url = url } }; return(result); }
public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, WeixinResponseMsgType msgType) { ResponseMessageBase responseMessage = null; switch (msgType) { case WeixinResponseMsgType.Text: responseMessage = new ResponseMessageText() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = requestMessage.CreateTime, //这个时间不是Ticks,用DateTime.Now会出错 MsgType = msgType }; break; case WeixinResponseMsgType.News: responseMessage = new ResponseMessageNews() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = requestMessage.CreateTime, MsgType = msgType }; break; case WeixinResponseMsgType.Event: responseMessage = new ResponseMessageNews() { ToUserName = requestMessage.FromUserName, FromUserName = requestMessage.ToUserName, CreateTime = requestMessage.CreateTime, MsgType = msgType }; break; default: throw new ArgumentOutOfRangeException("msgType"); } return(responseMessage); }
/// <summary> /// 发送关注红包 /// </summary> private ActionResult SendAttentionToUser(IRequestMessageBase requestBaseMsg) { string msg = ""; try { IBonusService bonusService = _iBonusService; Log.Debug("关注红包openId:" + requestBaseMsg.FromUserName); msg = bonusService.Receive(requestBaseMsg.FromUserName); if (!string.IsNullOrEmpty(msg)) { string result = DealTextMsg(requestBaseMsg, msg); return new XmlResult(result); } } catch (Exception e) { Log.Info("关注红包出错:", e); } return Content(""); }
public IResponseMessageBase GetResponseMessage(IRequestMessageBase requestMessage) { var request = requestMessage as RequestMessageLink; WeixinDbContext db = new WeixinDbContext(); WeixinUser user = db.WeixinUsers.Where(u => u.OpenId == requestMessage.FromUserName).FirstOrDefault<WeixinUser>(); RequestMessage message = new RequestMessage() { MessageType = Convert.ToString(requestMessage.MsgType), FromUserId = user.UserId, RequestTime = requestMessage.CreateTime, LinkTitle=request.Title, LinkUrl=request.Url }; db.RequestMessages.Add(message); db.SaveChanges(); return null; }
public override IResponseMessageBase DefaultResponseMessage(IRequestMessageBase requestMessage) { /* 所有没有被处理的消息会默认返回这里的结果, * 因此,如果想把整个微信请求委托出去(例如需要使用分布式或从其他服务器获取请求), * 只需要在这里统一发出委托请求,如: * var responseMessage = MessageAgent.RequestResponseMessage(agentUrl, agentToken, RequestDocument.ToString()); * return responseMessage; */ if (accountInfo.IsDefaultReply && !string.IsNullOrEmpty(accountInfo.DefaultReplyKeyword)) { var keyword = accountInfo.DefaultReplyKeyword; return(GetResponseMessage(keyword)); } return(null); //var responseMessage = this.CreateResponseMessage<ResponseMessageText>(); //responseMessage.Content = "这条消息来自DefaultResponseMessage。"; //return responseMessage; }
/// <summary> /// 返回图片类型信息 /// </summary> /// <param name="requestMessage"></param> /// <param name="responseConfig"></param> /// <returns></returns> private IResponseMessageBase RenderResponseMessageImage(IRequestMessageBase requestMessage, Response responseConfig, MessageEntityEnlightener enlighten) { var strongResponseMessage = requestMessage.CreateResponseMessage <IResponseMessageImage>(enlighten); var mediaId = NeuralNodeHelper.GetImageMessageMediaId(requestMessage, responseConfig.GetMaterialContent(MaterialData)); if (string.IsNullOrEmpty(mediaId)) { var textResponseMessage = requestMessage.CreateResponseMessage <IResponseMessageText>(enlighten); textResponseMessage.Content = "消息中未获取到图片信息"; return(textResponseMessage); } else { strongResponseMessage.Image.MediaId = mediaId; } //TODO:其他情况 return(strongResponseMessage); }
/// <summary> /// 返回图文类型信息 /// </summary> /// <param name="requestMessage"></param> /// <param name="responseConfig"></param> /// <returns></returns> private IResponseMessageNews RenderResponseMessageNews(IRequestMessageBase requestMessage, Response responseConfig, MessageEntityEnlightener enlighten) { var articles = NeuralNodeHelper.FillNewsMessage(responseConfig.MaterialId, MaterialData); var strongResponseMessage = requestMessage.CreateResponseMessage <IResponseMessageNews>(enlighten); if (articles != null) { strongResponseMessage.Articles = articles; } else { strongResponseMessage.Articles = new List <Article>() { new Article() { Title = "您要查找的素材不存在,或格式定义错误!", Description = "您要查找的素材不存在,或格式定义错误!" } }; } return(strongResponseMessage); }
/// <summary> /// 记录请求信息 /// </summary> /// <param name="requestMessage">请求信息</param> public void InsertMessage(IRequestMessageBase requestMessage) { lock (WeixinContextGlobal.Lock) { var userName = requestMessage.FromUserName; var messageContext = GetMessageContext(userName, true); if (messageContext.RequestMessages.Count > 0) { //如果不是新建的对象,把当前对象移到队列尾部(新对象已经在底部) var messageContextInQueue = MessageQueue.FindIndex(z => z.UserName == userName); if (messageContextInQueue >= 0) { MessageQueue.RemoveAt(messageContextInQueue); //移除当前对象 MessageQueue.Add(messageContext); //插入到末尾 } } messageContext.LastActiveTime = DateTime.Now; //记录请求时间 messageContext.RequestMessages.Add(requestMessage); //录入消息 } }
/// <summary> /// 根据请求内容处理微信消息 /// </summary> /// <param name="requestMessage"></param> /// <returns></returns> /// <exception cref="Exception"></exception> public ResponseMessageText MsgHandlerByRequestContent(IRequestMessageBase requestMessage) { ResponseMessageText responseMessage = null; switch (requestMessage.MsgType) { case RequestMsgType.Text: //文字类型 var requestMsgText = requestMessage as RequestMessageText; responseMessage = WechatTextMsgHandler(requestMsgText); break; //响应事件 case RequestMsgType.Event: var request = requestMessage as RequestMessageEventBase; responseMessage = WechatEventMsgHandler(request); break; default: LogHelper.Logger.Error("该消息并非文字类型消息,请求内容为:" + requestMessage.ToJson()); throw new Exception("暂不支持其他类型的消息处理"); } return(responseMessage); }
public static ResponseMessageBase CreateFromRequestMessage(IRequestMessageBase requestMessage, string msgType) { ResponseMessageBase responseMessage = null; switch (msgType) { case "text": responseMessage = CreateFromRequestMessage(requestMessage, WeixinResponseMsgType.Text); break; case "news": responseMessage = CreateFromRequestMessage(requestMessage, WeixinResponseMsgType.News); break; case "event": responseMessage = CreateFromRequestMessage(requestMessage, WeixinResponseMsgType.Event); break; default: throw new ArgumentOutOfRangeException("msgType"); } return(responseMessage); }
public IResponseMessageBase GetResponseMessage(IRequestMessageBase requestMessage) { IResponseMessageBase response = null; var request = requestMessage as RequestMessageText; WeixinDbContext db = new WeixinDbContext(); WeixinUser user = db.WeixinUsers.Where(u => u.OpenId == requestMessage.FromUserName).FirstOrDefault<WeixinUser>(); if (request.Content.Equals("帮我点赞")) { if (user == null) { var responseText = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage); responseText.Content = "请先告诉我您的朋友圈昵称!"; return responseText; } else { //每次点赞先清空之前的点赞记录 db.Entry(user).Collection(u => u.RequestMessages).Load(); user.RequestMessages.ToList().ForEach(entity => db.Entry(entity).State = System.Data.Entity.EntityState.Deleted); db.RequestMessages.RemoveRange(user.RequestMessages); db.SaveChanges(); } var responseNews = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageNews>(requestMessage); responseNews.Articles.Add(new Article() { Title = "好嘞,点赞君收到!", Description = "请发送您要点赞的图文或分享链接!不知道怎么操作?点进来看看,有详细步骤!", PicUrl = "http://www.shisheng.wang/images/qr.jpg", Url = "http://www.shisheng.wang/moment/help" }); return responseNews; } else if (request.Content.Contains("点") && request.Content.Contains("个赞")) { var responseNew = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageNews>(requestMessage); string numStr = string.Empty; if (request.Content.Contains("帮我点")) { numStr = request.Content.Substring(3, request.Content.Length - 5); } else { numStr = request.Content.Substring(1, request.Content.Length - 3); } int num = 36; Int32.TryParse(numStr, out num); responseNew.Articles.Add(new Article() { Title = string.Format("报告掌柜的,你要的{0}个赞,已点赞完毕!!!", num), Description = "最后一步啦,请打开网页截图即可!", PicUrl = "http://www.shisheng.wang/images/qr.jpg", Url = string.Format("http://www.shisheng.wang/moment/detail?username={0}&num={1}", requestMessage.FromUserName, num) }); return responseNew; } else if(request.Content.Contains("修改昵称")) { var responseText = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage); responseText.Content = "请告诉我您的新昵称!"; return responseText; } else if (request.Content.Contains("修改头像")) { var responseText = ResponseMessageBase.CreateFromRequestMessage<ResponseMessageText>(requestMessage); responseText.Content = "请上传您的新头像!"; return responseText; } else { RequestMessage message = new RequestMessage() { MessageType = Convert.ToString(requestMessage.MsgType), FromUserId = user.UserId, RequestTime = requestMessage.CreateTime, Content = request.Content }; db.RequestMessages.Add(message); db.SaveChanges(); } return response; }
public CustomRequestCountHandler(Store store, IRequestMessageBase message, IResponseMessageBase response) { this._CurrrentStore = store; this._message = message; this._response = response; }
public IResponseMessageBase GetResponseMessage(IRequestMessageBase requestMessage) { throw new NotImplementedException(); }