public HttpResponseMessage SendText(SendTextViewModel viewModel) { //TODO replace this with proper user id from ASPNet Identity viewModel.UserId = this.UserId; viewModel.AccountID = this.AccountId; SendTextRequest request = new SendTextRequest() { SendTextViewModel = viewModel }; SendTextRequest ServiceProviderRequest = new SendTextRequest { UserId = this.UserId, AccountId = this.AccountId }; SendTextViewModel ServiceProviderViewmodel = communicationService.GetSendTextviewModel(ServiceProviderRequest).SendTextViewModel; request.SendTextViewModel.ServiceProvider = ServiceProviderViewmodel.ServiceProvider; SendTextResponse response = communicationService.SendText(request); if (response.SMSStatus == "Success") { response.Message = "Sent successfully"; } else { if (response.Exception != null) { response.Message = response.Exception.Message; } } return(Request.BuildResponse(response)); }
private void LogResponse(SendTextRequest request, SendTextResponse response) { Logger.Current.Verbose("Request received for logging text response"); //SentText & SentTextDetails Table var sentText = new SentTextDb { Token = request.TokenGuid, RequestGuid = request.RequestGuid, CreatedDate = DateTime.Now, }; unitOfWork.SentTextRepository.Add(sentText); unitOfWork.Commit(); SentTextDb sentTextdb = unitOfWork.SentTextRepository.FirstOrDefault(mr => mr.RequestGuid == request.RequestGuid); var sentTextDetail = new SentTextDetailsDb { TextResponseID = sentTextdb.TextResponseID, From = request.From, To = request.To.ToPlainString(), SenderID = request.SenderId, Message = request.Message, Status = (byte)response.StatusID, ServiceResponse = response.ServiceResponse }; unitOfWork.SentTextDetailsRepository.Add(sentTextDetail); unitOfWork.Commit(); Logger.Current.Verbose("Logging text response was successful"); }
public SendTextResponse Send(SendTextRequest request) { Logger.Current.Verbose("Request received for sending a text message"); SendTextResponse response = GetService(request.TokenGuid).Send(request); LogResponse(request, response); return(response); }
/// <summary> /// 发送文本消息 /// 文档:https://work.weixin.qq.com/api/doc#10167 /// </summary> /// <param name="request">请求参数</param> /// <returns>返回结果</returns> public SendMessageResult SendText(SendTextRequest request) { if (request.agentid == 0) { request.agentid = Client.AgentId; } return(Send(request)); }
public HttpResponseMessage GetPhoneNumbers() { SendTextRequest request = new SendTextRequest() { AccountId = this.AccountId, UserId = this.UserId }; SendTextResponse response = communitcationService.GetSendTextviewModel(request); return(Request.CreateResponse(HttpStatusCode.OK, response.SendTextViewModel.FromPhones)); }
public override Task <SendMessageResponse> SendText(SendTextRequest 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 tmpContent = _processValue(item.Value, request.Content); if (request.Time == 0) { if (request.HighPriority) { BackgroundJob.Enqueue <SendMessage>(x => x.HighPriorityText(messageStatus.GetMessageId(), request.AppId, item.Key, tmpContent, null)); } else { BackgroundJob.Enqueue <SendMessage>(x => x.Text(messageStatus.GetMessageId(), request.AppId, item.Key, tmpContent, null)); } } else { var tmpJobId = string.Empty; if (request.HighPriority) { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.HighPriorityText(messageStatus.GetMessageId(), request.AppId, item.Key, tmpContent, null), TimeSpan.FromSeconds(request.Time - now)); } else { tmpJobId = BackgroundJob.Schedule <SendMessage>(x => x.Text(messageStatus.GetMessageId(), request.AppId, item.Key, tmpContent, null), TimeSpan.FromSeconds(request.Time - now)); } messageStatus.AddJobId(tmpJobId); } } return(Task.FromResult(resp)); }
public void SendSingleMessage(string user, XmlNode TSubResultNode) { SendTextRequest str = new SendTextRequest(); str.agentid = Agentid; str.safe = "0"; str.touser = user; SendTextRequest.Text text = new SendTextRequest.Text(); str.msgtype = "text"; // TSubResultNode.SelectSingleNode("msgtype").InnerText; text.content = TSubResultNode.SelectSingleNode("content").InnerText; str.text = text; messageBiz.Send <SendTextRequest>(str); }
private void SendSingleMessage(string user, string message) { SendTextRequest str = new SendTextRequest(); str.agentid = Agentid; str.safe = "0"; str.touser = user; SendTextRequest.Text text = new SendTextRequest.Text(); str.msgtype = "text"; text.content = message; str.text = text; messageBiz.Send <SendTextRequest>(str); }
public async Task <IActionResult> SendMessage([FromRoute] Request meta, [FromBody] SendTextRequest request) { IActionResult result = null; Ensure.Guid.IsNotEmpty(meta.Application); Ensure.Guid.IsNotEmpty(request.Application); Ensure.Bool.IsTrue(request.Application == meta.Application); var id = await Server.SendText(meta.Application, request.To, request.Message); result = Factory.CreateSuccessResponse(id); return(result); }
public SendTextResponse Send(SendTextRequest request) { Logger.Current.Verbose("Sending text message through twilio service"); var response = new SendTextResponse { Token = registration.Guid, RequestGuid = request.RequestGuid, Message = request.Message }; if (request != null && request.To != null && request.To.Count > 0) { for (int i = 0; i < request.To.Count; i++) { try { string body = request.Message; if (request.OwnerNumbers.IsAny()) { string owner = request.OwnerNumbers.Where(o => o.ContactNumber == request.To[i]).Select(s => s.OwnerNumber).FirstOrDefault(); body = body + "\nReply to - " + owner; } var twilioResponse = twilioRestClient.SendMessage(string.Concat("+1", request.From), string.Concat("+1", request.To[i]), body); response.StatusID = (twilioResponse.Status != null) ? CommunicationStatus.Success : CommunicationStatus.Failed; if (twilioResponse.Body == null) { response.ServiceResponse = twilioResponse.RestException.Message; } } catch (Exception ex) { Logger.Current.Error("An error occured while sending text message " + ex); response.ServiceResponse = ex.Message; response.StatusID = CommunicationStatus.Failed; ExceptionHandler.Current.HandleException(ex, DefaultExceptionPolicies.LOG_ONLY_POLICY, values: new object[] { request }); } } } else { response.StatusID = CommunicationStatus.Rejected; } return(response); }
public SendTextResponse SendText(SendTextRequest request) { var response = default(SendTextResponse); try { Logger.Current.Verbose("Request received for sending a text message"); if (request.ScheduledTime > DateTime.Now.ToUniversalTime()) { Logger.Current.Verbose("Request received for sending a text message with scheduled-time"); this.QueueMessages(new List <SendTextRequest> { request }); Logger.Current.Verbose("Text request was queued successfully"); response = new SendTextResponse { //Token = request.TokenGuid, RequestGuid = request.RequestGuid, StatusID = CommunicationStatus.Queued, ServiceResponse = string.Empty }; } else { Logger.Current.Verbose("Request received for sending a text message with out scheduled-time"); response = Send(request); this.LogResponse(request, response); } } catch (Exception ex) { var rethrowException = ExceptionHandler.Current.HandleException(ex, DefaultExceptionPolicies.LOG_AND_RETHROW_POLICY); Logger.Current.Error("Exception occured while sending a text message from text service.", ex); if (rethrowException) { throw; } } return(response); }
public void UpdateScheduledReminder(Guid requestGuid, SendTextRequest request) { Logger.Current.Verbose("Request received for updating scheduled reminder from SendTextQueue"); if (requestGuid != null && request != null) { SendTextQueueDb sendTextQueue = this.unitOfWork.SendTextQueueRepository.FirstOrDefault(f => f.RequestGuid == requestGuid); if (sendTextQueue != null) { sendTextQueue.QueueTime = DateTime.UtcNow; sendTextQueue.ScheduledTime = request.ScheduledTime; } SentTextDetailsDb sendTextDetail = new SentTextDetailsDb(); SentTextDb textResponse = this.unitOfWork.SentTextRepository.FirstOrDefault(f => f.RequestGuid == requestGuid); if (textResponse != null) { sendTextDetail = this.unitOfWork.SentTextDetailsRepository.FirstOrDefault(f => f.TextResponseID == textResponse.TextResponseID); } if (sendTextDetail != null) { sendTextDetail.From = request.From; sendTextDetail.Message = request.Message; sendTextDetail.SenderID = request.SenderId; sendTextDetail.To = request.To.FirstOrDefault(); } if (sendTextQueue == null && sendTextDetail != null) { this.unitOfWork.SendTextQueueRepository.Add(new SendTextQueueDb { TokenGuid = request.TokenGuid, RequestGuid = request.RequestGuid, //From = item.From, //PriorityID = item.PriorityID, ScheduledTime = request.ScheduledTime, QueueTime = DateTime.UtcNow, //StatusID = CommunicationStatus.Queued, //ServiceResponse = string.Empty }); } unitOfWork.Commit(); } }
public List <SendTextRequest> ConvertToSendTextRequest(List <SendSingleTextRequest> requests) { Logger.Current.Verbose("Converting SendSingleTextRequest to SendTextRequest"); List <SendTextRequest> sendTextRequests = new List <SendTextRequest>(); requests.ForEach(item => { SendTextRequest textRequest = new SendTextRequest(); textRequest.From = item.From; textRequest.Message = item.Message; textRequest.RequestGuid = item.RequestGuid; textRequest.ScheduledTime = item.ScheduledTime; textRequest.SenderId = item.SenderId; textRequest.TokenGuid = item.TokenGuid; textRequest.To = (item.To != null && item.To != string.Empty) ? new List <string>() { item.To } : null; sendTextRequests.Add(textRequest); }); return(sendTextRequests); }
public JsonResult SendText(string sendTextViewModel) { SendTextViewModel viewModel = JsonConvert.DeserializeObject <SendTextViewModel>(sendTextViewModel); //TODO replace this with proper user id from ASPNet Identity viewModel.UserId = this.Identity.ToUserID(); viewModel.AccountID = this.Identity.ToAccountID(); SendTextRequest request = new SendTextRequest() { SendTextViewModel = viewModel }; SendTextResponse response = communicationService.SendText(request); if (response.SMSStatus == "Success") { return(Json(new { success = true, response = "[|Sent successfully|]" }, JsonRequestBehavior.AllowGet)); } else { throw new UnsupportedOperationException(response.Message); } }
public string SendMessage(string inputMessage, string user) { string xmlFilePath = xmlPath; XmlDocument doc = new XmlDocument(); doc.Load(xmlFilePath); var rp = GetLusiResult(inputMessage); if (rp != null) { var res = rp.intents.OrderByDescending(x => x.score).First(); if (res.intent.ToLower() == "none" && rp.entities.Count == 0)//没有查到结果返回默认结果 { XmlNodeList NoResultNodeList = doc.SelectNodes("Results/NoResult"); if (NoResultNodeList != null) { foreach (XmlNode noResultNode in NoResultNodeList) { SendSingleMessage(user, noResultNode); } } } //else if (res.intent.ToLower() != "none" && rp.entities.Count == 0)//有搜到,但不能精确定位 //{ // SendTextRequest str = new SendTextRequest(); // str.agentid = Agentid; // str.safe = "0"; // str.touser = user; // SendTextRequest.Text text = new SendTextRequest.Text(); // str.msgtype = "text"; // text.content = "您是要搜索" + res.intent + "么?请再提供更多关键字来精确定位吧。"; // str.text = text; // messageBiz.Send<SendTextRequest>(str); //} else { bool HasFind = false; XmlNodeList ResultNodeList = doc.SelectNodes("Results/Result"); if (ResultNodeList != null) { foreach (XmlNode ResultNode in ResultNodeList) { if (rp.entities.Any() && ResultNode.Attributes["name"].Value != "" && res.intent.ToLower() == ResultNode.Attributes["name"].Value.ToLower())//查询贺卡/邀请卡 { foreach (XmlNode SubResultNode in ResultNode) { if (rp.entities.First().type == SubResultNode.Attributes["name"].Value)//贺卡/邀请卡::StarProducts" { foreach (XmlNode TSubResultNode in SubResultNode) { if (rp.entities.First().entity.ToLower() == TSubResultNode.Attributes["name"].Value) { if (TSubResultNode.SelectSingleNode("msgtype").InnerText == "text") { HasFind = true; SendSingleMessage(user, TSubResultNode); } else if (TSubResultNode.SelectSingleNode("msgtype").InnerText == "mpnews") { HasFind = true; SendMpMessage(user, TSubResultNode); } else if (TSubResultNode.SelectSingleNode("msgtype").InnerText == "image") { HasFind = true; SendImageMessage(user, TSubResultNode); } else if (TSubResultNode.SelectSingleNode("msgtype").InnerText == "news") { HasFind = true; SendNewsMessage(user, TSubResultNode); } } } } } } } if (!HasFind) { foreach (XmlNode ResultNode in ResultNodeList) { if (ResultNode.Attributes["name"].Value != "" && res.intent.ToLower() == ResultNode.Attributes["name"].Value.ToLower())//查询贺卡/邀请卡 { foreach (XmlNode SubResultNode in ResultNode) { if (SubResultNode.Attributes["name"].Value.ToLower() == "default")//查询贺卡/邀请卡 { if (SubResultNode.SelectSingleNode("msgtype").InnerText == "text") { HasFind = true; SendSingleMessage(user, SubResultNode); } else if (SubResultNode.SelectSingleNode("msgtype").InnerText == "mpnews") { HasFind = true; SendMpMessage(user, SubResultNode); } else if (SubResultNode.SelectSingleNode("msgtype").InnerText == "image") { HasFind = true; SendImageMessage(user, SubResultNode); } else if (SubResultNode.SelectSingleNode("msgtype").InnerText == "news") { HasFind = true; SendNewsMessage(user, SubResultNode); } } } } } } if (!HasFind) { SendTextRequest str = new SendTextRequest(); str.agentid = Agentid; str.safe = "0"; str.touser = user; SendTextRequest.Text text = new SendTextRequest.Text(); str.msgtype = "text"; text.content = "您是要搜索" + res.intent + "么?请再提供更多关键字来精确定位吧。"; str.text = text; messageBiz.Send <SendTextRequest>(str); } } } } return(""); }
public SendTextResponse SendText(SendTextRequest request) { TextService Text = new TextService(); return(Text.Send(request)); }
public SendTextResponse SendText(SendTextRequest request, Guid userToken) { Text Text = new Text(); return(Text.Send(TextProvider.Twillio, userToken, request)); }