public override Task <SendMessageResponse> SendNews(SendNewsRequest request, ServerCallContext context) { var isWxApp = _redis.KeyExists(CacheKey.UserIsWxAppPrefix + request.AppId); var targets = _processTarget(request.Targets); var messageStatus = new MessageStatus(_redis); messageStatus.GenMessageId(); var now = Util.GetTimestamp(); var resp = new SendMessageResponse { MessageId = messageStatus.GetMessageId(), SendTime = request.Time == 0 ? now : request.Time }; if (request.NoStatus) { resp.MessageId = string.Empty; messageStatus.SetMessageId(null); } else { messageStatus.Create(targets.Keys.ToArray(), resp.SendTime); } foreach (var item in targets) { var tmpTitle = _processValue(item.Value, request.Title); var tmpDescription = _processValue(item.Value, request.Description); var tmpLink = _processValue(item.Value, request.Link); if (request.Time == 0) { if (request.HighPriority) { BackgroundJob.Enqueue <SendMessage>(x => x.HighPriorityNews(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpDescription, tmpLink, request.Image, isWxApp, null)); } else { BackgroundJob.Enqueue <SendMessage>(x => x.News(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpDescription, tmpLink, request.Image, isWxApp, null)); } } else { var tmpJobId = string.Empty; if (request.HighPriority) { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.HighPriorityNews(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpDescription, tmpLink, request.Image, isWxApp, null), TimeSpan.FromSeconds(request.Time - now)); } else { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.News(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpDescription, tmpLink, request.Image, isWxApp, null), TimeSpan.FromSeconds(request.Time - now)); } messageStatus.AddJobId(tmpJobId); } } return(Task.FromResult(resp)); }
public override Task <SendMessageResponse> SendWxAppCard(SendWxAppCardRequest request, ServerCallContext context) { var targets = _processTarget(request.Targets); var messageStatus = new MessageStatus(_redis); messageStatus.GenMessageId(); var now = Util.GetTimestamp(); var resp = new SendMessageResponse { MessageId = messageStatus.GetMessageId(), SendTime = request.Time == 0 ? now : request.Time }; if (request.NoStatus) { resp.MessageId = string.Empty; messageStatus.SetMessageId(null); } else { messageStatus.Create(targets.Keys.ToArray(), resp.SendTime); } foreach (var item in targets) { var tmpTitle = _processValue(item.Value, request.Title); var tmpPagePath = _processValue(item.Value, request.PagePath); if (request.Time == 0) { if (request.HighPriority) { BackgroundJob.Enqueue <SendMessage>(x => x.HighPriorityWxAppCard(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpPagePath, request.WxAppId, request.ImageId, null)); } else { BackgroundJob.Enqueue <SendMessage>(x => x.WxAppCard(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpPagePath, request.WxAppId, request.ImageId, null)); } } else { var tmpJobId = string.Empty; if (request.HighPriority) { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.HighPriorityWxAppCard(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpPagePath, request.WxAppId, request.ImageId, null), TimeSpan.FromSeconds(request.Time - now)); } else { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.WxAppCard(messageStatus.GetMessageId(), request.AppId, item.Key, tmpTitle, tmpPagePath, request.WxAppId, request.ImageId, null), TimeSpan.FromSeconds(request.Time - now)); } messageStatus.AddJobId(tmpJobId); } } return(Task.FromResult(resp)); }
public string UserMessageHandler(string appid, [FromQuery] MessageRequestQuery query, [FromBody] MessageRequsetBody body) { if (_weSdk.CheckMsgSign(query, body.Encrypt)) { var data = new UserMessageRequsetXml(_weSdk.DecryptMsg(body.Encrypt)) { AppId = appid }; if (data.MsgType == "event") { if (data.Event == "TEMPLATESENDJOBFINISH") { var messageStatus = new MessageStatus(_redis); var messageId = messageStatus.GetTemplateMessageId(data.MsgId); if (messageId != null) { messageStatus.SetMessageId(messageId); switch (data.Status) { case TemplateMessageStatus.Success: messageStatus.Success(data.FromUserName); break; case TemplateMessageStatus.UserBlock: messageStatus.UserBlock(data.FromUserName); break; case TemplateMessageStatus.SystemFailed: messageStatus.SystemFailed(data.FromUserName); break; } } } else { _eventQueue.Enqueue(data); if (data.Event == "weapp_audit_success") { //TODO:: For Audit Success Auto Process; } } } else { _messageQueue.Enqueue(data); } } return("success"); }
public override Task <SendMessageResponse> SendTemplate(SendTemplateRequest request, ServerCallContext context) { string formId = null; if (_redis.KeyExists(CacheKey.UserIsWxAppPrefix + request.AppId)) { formId = request.FormId; } var targets = _processTarget(request.Targets); var messageStatus = new MessageStatus(_redis); messageStatus.GenMessageId(); var now = Util.GetTimestamp(); var resp = new SendMessageResponse { MessageId = messageStatus.GetMessageId(), SendTime = request.Time == 0 ? now : request.Time }; if (request.NoStatus) { resp.MessageId = string.Empty; messageStatus.SetMessageId(null); } else { messageStatus.Create(targets.Keys.ToArray(), resp.SendTime); } foreach (var item in targets) { var data = new Dictionary <string, WxWebSendTemplateRequest.DataItem>(); foreach (var dItem in request.Data) { data.Add(dItem.Key, new WxWebSendTemplateRequest.DataItem { Value = _processValue(item.Value, dItem.Value), Color = dItem.Color }); } var tmpUrl = _processValue(item.Value, request.Url); if (request.Time == 0) { if (request.HighPriority) { BackgroundJob.Enqueue <SendMessage>(x => x.HighPriorityTemplate(messageStatus.GetMessageId(), request.AppId, item.Key, request.TemplateId, tmpUrl, data, formId, null)); } else { BackgroundJob.Enqueue <SendMessage>(x => x.Template(messageStatus.GetMessageId(), request.AppId, item.Key, request.TemplateId, tmpUrl, data, formId, null)); } } else { var tmpJobId = string.Empty; if (request.HighPriority) { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.HighPriorityTemplate(messageStatus.GetMessageId(), request.AppId, item.Key, request.TemplateId, tmpUrl, data, formId, null), TimeSpan.FromSeconds(request.Time - now)); } else { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.Template(messageStatus.GetMessageId(), request.AppId, item.Key, request.TemplateId, tmpUrl, data, formId, null), TimeSpan.FromSeconds(request.Time - now)); } messageStatus.AddJobId(tmpJobId); } } return(Task.FromResult(resp)); }