/// <summary> /// Action Method that returns the TwiML needed to connect an 'Agent' to the first call in the Queue /// </summary> /// <remarks>This method also includes the 'url' parameter in the generated TwiML. This allows you to provide a URL that can return TwiML that will be executed to the dequeued caller as a Whisper</remarks> /// <returns></returns> public ActionResult Dial() { var response = new TwilioResponse(); response.DialQueue("Demo Queue", new { url = Url.Action("Connect") }, new { }); return TwiML(response); }
public HttpResponseMessage DialQueueOrNumber(DialQueueParameters clientParameters) { var response = new TwilioResponse(); if (string.IsNullOrEmpty(clientParameters.PhoneNumber)) { _logger.Debug($"Dialling queue {clientParameters.QueueName} for client {clientParameters.ClientName}"); var queue = _queueService.ResolveByName(clientParameters.QueueName); var call = _queueProvider.GetFirstCallFromQueue(queue); response.DialQueue(clientParameters.QueueName, new { record = "record-from-answer" }); _queueStateHandler.DecreaseQueueByName(clientParameters.QueueName); _callService.FlagCallConnected(call.Sid, clientParameters.ClientName); } else { var agentName = ""; var agent = new Agent(); string number; if (!string.IsNullOrEmpty(clientParameters.From)) { agentName = clientParameters.From.Split(':')[1]; var agentNamePeriod = agentName.Replace("_", "."); agent = _agentService.GetAgentByAgentEmail(agentNamePeriod + "@letme.com"); } if (agent.TeamId == "10") //Lead gen { number = WebConfigurationManager.AppSettings["TwilioNumberLeadGen"]; } else if (agent.TeamId == "12") { number = WebConfigurationManager.AppSettings["TwilioNumberPM"]; } else { number = WebConfigurationManager.AppSettings["TwilioNumber"]; } var callId = _callService.LogOutboundCall(new Call { Dialled = clientParameters.PhoneNumber, CallStatus = CallStatus.Initiated, DateReceived = DateTime.Now, ClientName = agentName }).CallId; var attributes = new { callerId = number, record = "record-from-answer", action = $"/api/CallStatus/Update?callId={callId}" }; response.Dial(clientParameters.PhoneNumber, attributes); } return Request.CreateResponse(HttpStatusCode.OK, response.Element, new XmlMediaTypeFormatter()); }
public HttpResponseMessage Agent(string companyId, string departmentId, string teamId, string id) { var twilioResponse = new TwilioResponse(); twilioResponse.DialQueue(id, null); return Request.CreateResponse(HttpStatusCode.OK, twilioResponse.Element, new XmlMediaTypeFormatter()); }