public ActionResult Index(VoiceRequest request)
    {
        var response = new TwilioResponse();

        if (!string.IsNullOrEmpty(request.To))
        {
            var callerId = "+15017250604";

            // wrap the phone number or client name in the appropriate TwiML verb
            // by checking if the number given has only digits and format symbols
            if (Regex.IsMatch(request.To, "^[\\d\\+\\-\\(\\) ]+$"))
            {
                response.Dial(new Number(request.To), new { callerId });
            }
            else
            {
                response.Dial(new Client(request.To), new { callerId });
            }
        }
        else
        {
            response.Say("Thanks for calling!");
        }
        return(TwiML(response));
    }
Пример #2
0
        private TwilioResponse AddToResponse(TwilioResponse response, Agent agent)
        {
            var dialAttributes = new { method = "GET", action = GetEcho("dial"), timeout = agent.TimeOut, record = agent.Record ? "record-from-answer" : "do-not-record" };

            switch (agent.Answer)
            {
            case AnswerType.Number:
                var number = new Number(agent.RedirectToNumber);
                AddUrlAttr(number, GetEcho("client"));
                response.Dial(number, dialAttributes);
                break;

            case AnswerType.Client:
                var client = new Client(agent.ClientID);
                AddUrlAttr(client, GetEcho("client"));
                response.Dial(client, dialAttributes);
                break;

            case AnswerType.Sip:
                response.Dial(new Sip(agent.ClientID), dialAttributes);
                break;
            }

            return(response);
        }
Пример #3
0
        public ActionResult Call(string source, string target)
        {
            var response = new TwilioResponse();

            if (Regex.IsMatch(target, @"^[\d\+\-\(\) ]+$"))
            {
                response.Dial(new Number(target), new { callerId = source });
            }
            else
            {
                response.Dial(new Client(target), new { callerId = source });
            }

            return(new TwiMLResult(response));
        }
Пример #4
0
        public void Can_Generate_Dial_And_Client_Noun()
        {
            var response = new TwilioResponse();
            response.Dial(new Client("Jenny"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #5
0
        public void Can_Generate_Dial_And_Conf_Object_Param()
        {
            var response = new TwilioResponse();
            response.Dial(new Conference("room1"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
        // /Client/CallXamarin
        public ActionResult CallXamarin()
        {
            var response = new TwilioResponse();

            response.Dial(new Client(_clientName));
            return(new TwiMLResult(response));
        }
Пример #7
0
        public void Example_1()
        {
            var response = new TwilioResponse();
            response.Dial(new Number("415-123-4567", new { sendDigits = "wwww1928" }));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #8
0
		public void Can_Generate_Dial_And_Attributes()
		{
			var response = new TwilioResponse();
			response.Dial("555-111-2222", new { action = "dial.xml", method = "GET", timeout = "30", hangupOnStar = "true", timeLimit = "1000", callerId = "555-111-2222" });

			Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
		}
Пример #9
0
        public TwilioResponse PingTeamMember(string teamId, string callingPartyId, int idx)
        {
            var response = new TwilioResponse();

            Contact contact = directory.GetTeamMember(teamId, idx);
            Team    team    = directory.GetTeam(teamId);

            if (contact != null)
            {
                if (idx == 0)
                {
                    response.Say(string.Format("Now attempting to connect you to {0}", team.Name));
                }
                else
                {
                    response.Say("Trying next team member...");
                }

                response.Say("We are now contacting " + contact.Name + ", please hold the line");
                response.Dial(new Number(contact.MobileNumber, new { url = string.Format("/Router/PreConnect?callingPartyId={0}", callingPartyId) }),
                              new { callerId = "+442033229301", timeLimit = 5, action = string.Format("/Router/NextTeamMember?callingPartyId={0}&TeamId={1}&Idx={2}", callingPartyId, teamId, idx) });
            }
            else
            {
                response.Say("Couldn't find a team member...");
                response.Hangup();
            }

            return(response);
        }
Пример #10
0
		public void Can_Generate_Dial()
		{
			var response = new TwilioResponse();
			response.Dial("555-111-2222");

			Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
		}
        public static TwilioResponse GenerateConnectConference(
            string conferenceId, string waitUrl, bool startConferenceOnEnter, bool endConferenceOnExit)
        {
            var response   = new TwilioResponse();
            var conference = new Conference(conferenceId, new { waitUrl, startConferenceOnEnter, endConferenceOnExit });

            return(response.Dial(conference));
        }
Пример #12
0
        public void Example_1()
        {
            var response = new TwilioResponse();
            response.Dial("415-123-4567");
            response.Redirect("http://www.foo.com/nextInstructions");

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #13
0
        public void Can_Generate_Dial()
        {
            var response = new TwilioResponse();

            response.Dial("555-111-2222");

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
        private static TwiMLResult Dial(string phoneNumber)
        {
            var response = new TwilioResponse();

            response.Dial(phoneNumber);

            return(new TwiMLResult(response));
        }
Пример #15
0
        public void Can_Generate_Dial_And_Number_Object_Param()
        {
            var response = new TwilioResponse();

            response.Dial(new Number("555-111-2222"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #16
0
        public void _1_3b()
        {
            var response = new TwilioResponse();
            response.Dial("+13105551212");
            response.Say("The call failed or the remote party hung up. Goodbye.");

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #17
0
        public void Example_1()
        {
            var response = new TwilioResponse();

            response.Dial(new Number("415-123-4567", new { sendDigits = "wwww1928" }));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #18
0
        public void Can_Generate_Dial_And_Attributes()
        {
            var response = new TwilioResponse();

            response.Dial("555-111-2222", new { action = "dial.xml", method = "GET", timeout = "30", hangupOnStar = "true", timeLimit = "1000", callerId = "555-111-2222" });

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #19
0
        public void Can_Generate_Dial_And_Sip_Object_And_Sip_Parameters()
        {
            var response = new TwilioResponse();

            response.Dial(new Sip("*****@*****.**", new { username = "******", password = "******", url = "asdsad", method = "POST" }));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #20
0
        public void Can_Generate_Dial_And_Queue_Object_Param()
        {
            var response = new TwilioResponse();

            response.Dial(new Queue(new { reservationSid = "RSXXXXX", postworkActivitySid = "PWXXXXXX" }));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #21
0
        public void Can_Generate_Dial_And_Conf_Object_Param()
        {
            var response = new TwilioResponse();

            response.Dial(new Conference("room1"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #22
0
        public ActionResult RouteOutgoing(string target)
        {
            var response = new TwilioResponse();

            response.Dial(target, new { callerId = "+14842414922" });

            return(TwiML(response));
        }
Пример #23
0
        public void Can_Generate_Dial_And_Sip_Object()
        {
            var response = new TwilioResponse();

            response.Dial(new Sip("*****@*****.**"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #24
0
        public void Can_Generate_Dial_And_Client_Noun()
        {
            var response = new TwilioResponse();

            response.Dial(new Client("Jenny"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #25
0
        public void Example_2()
        {
            var response = new TwilioResponse();
            response.Dial("415-123-4567", new { action = "/handleDialCallStatus.php", method = "GET" });
            response.Say("I am unreachable");

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #26
0
        public void Example_1()
        {
            var response = new TwilioResponse();
            response.Dial("515-123-4567");
            response.Say("Goodbye");

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #27
0
        public void Can_Generate_Dial_And_Queue()
        {
            var response = new TwilioResponse();

            response.Dial(new Queue("example"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #28
0
        public void Example_1()
        {
            var response = new TwilioResponse();

            response.Dial("415-123-4567");
            response.Redirect("http://www.foo.com/nextInstructions");

            Assert.True(IsValidTwiML(response.ToXDocument()));
        }
Пример #29
0
        public void _1_3b()
        {
            var response = new TwilioResponse();

            response.Dial("+13105551212");
            response.Say("The call failed or the remote party hung up. Goodbye.");

            Assert.True(IsValidTwiML(response.ToXDocument()));
        }
Пример #30
0
        public void Example_2()
        {
            var response = new TwilioResponse();

            response.Dial("415-123-4567", new { action = "/handleDialCallStatus.php", method = "GET" });
            response.Say("I am unreachable");

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #31
0
        public void Example_1()
        {
            var response = new TwilioResponse();

            response.Dial("515-123-4567");
            response.Say("Goodbye");

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
        // /Client/InitiateCall?source=5551231234&target=5554561212
        public ActionResult InitiateCall(string from, string to)//Source and Target do not work for incomming calls from a phone, must be From and To
        {
            var response = new TwilioResponse();

            // Add a <Dial> tag that specifies the callerId attribute
            response.Dial(to, new { callerId = from });

            return(new TwiMLResult(response));
        }
Пример #33
0
        public ActionResult Connect(string phoneNumber)
        {
            var response          = new TwilioResponse();
            var callerIDAttribute = new { callerId = _credentials.PhoneNumber };

            if (phoneNumber != null)
            {
                response.Dial(callerIDAttribute,
                              new Number(phoneNumber));
            }
            else
            {
                response.Dial(callerIDAttribute,
                              new Client("support_agent"));
            }

            return(TwiML(response));
        }
        public async Task <HttpResponseMessage> VoiceCallBack(FormDataCollection value)
        {
            var fromPhoneNumber = settings.FromPhoneNumber.Replace("+1", "");
            var toPhoneNumber   = value.GetValues("PhoneNumber")[0];
            var response        = new TwilioResponse();

            response.Dial(toPhoneNumber, new { @callerId = fromPhoneNumber });

            return(Request.CreateResponse(HttpStatusCode.OK, response.Element, new XmlMediaTypeFormatter()));
        }
Пример #35
0
        public void Can_Generate_Dial_And_Sip_Object_And_Dial_Parameters()
        {
            var response = new TwilioResponse();

            response.Dial(
                new Sip("*****@*****.**"),
                new { action = "dial.xml", method = "GET", timeout = "30", hangupOnStar = "true", timeLimit = "1000", callerId = "555-111-2222" }
                );

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #36
0
        public void Can_Generate_Dial_And_Mixed_Number_And_Client_Nouns()
        {
            var response = new TwilioResponse();
            response.Dial(
                new Number("+15551112222"),
                new Client("Tommy"),
                new Number("+15553334444"),
                new Number("+15556667777"),
                new Client("Jenny")
            );

            Debug.Write(response.ToString());
            Assert.True(IsValidTwiML(response.ToXDocument()));
        }
Пример #37
0
        private TwilioResponse PingPerson(VoiceRequest request, string callingPartyId)
        {
            TwilioResponse response = new TwilioResponse();

            var person = directory.GetContact(request.Digits);

            if (person != null)
            {
                if (person.AcceptCalls)
                {
                    response.Say("We are now contacting " + person.Name + ", please hold the line");
                    response.Dial(new Number(person.MobileNumber, new { url = string.Format("/Router/PreConnect?callingPartyId={0}", callingPartyId) }), new { callerId = "+442033229301" });
                }
                else
                {
                    var divertedTo = directory.GetContact(person.DivertToId);

                    if (divertedTo != null)
                    {
                        response.Say(person.Name + " is not currently accepting calls. Diverting you to " + divertedTo.Name);
                        response.Dial(new Number(divertedTo.MobileNumber, new { url = string.Format("/Router/PreConnect?callingPartyId={0}", callingPartyId) }), new { callerId = "+442033229301" });
                    }
                    else
                    {
                        response.Say("Unable to find someone to divert to...");
                        response.Hangup();
                    }
                }
            }
            else
            {
                response.Say("Person not found");
            }

            return(response);
        }
Пример #38
0
    public ActionResult Index(VoiceRequest request)
    {
        var response = new TwilioResponse();

        if (!string.IsNullOrEmpty(request.To))
        {
            response.Dial(new Number(request.To),
                          new { callerId = "+15017250604" });
        }
        else
        {
            response.Say("Thanks for calling!");
        }
        return(TwiML(response));
    }
Пример #39
0
        public void Can_Generate_Dial_And_Mixed_Number_And_Client_Nouns()
        {
            var response = new TwilioResponse();

            response.Dial(
                new Number("+15551112222"),
                new Client("Tommy"),
                new Number("+15553334444"),
                new Number("+15556667777"),
                new Client("Jenny")
                );

            Debug.Write(response.ToString());
            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #40
0
        public HttpResponseMessage Get()
        {
            var client = new RestClient()
            {
                Timeout = 10000, BaseUrl = new System.Uri("https://<subdomain>.pagerduty.com/api/")
            };

            client.AddDefaultParameter(new Parameter {
                Name = "Authorization", Value = "Token token=<token>", Type = ParameterType.HttpHeader
            });

            var onCallRequest = new RestRequest("v1/escalation_policies/on_call", Method.GET);

            IRestResponse onCallResponse  = client.Execute(onCallRequest);
            var           content         = onCallResponse.Content;
            dynamic       pagerDutyOnCall = JsonConvert.DeserializeObject(content);
            dynamic       user            = pagerDutyOnCall.escalation_policies[0].escalation_rules[0].rule_object;

            User userObject = new Models.User();

            userObject.id    = user.id;
            userObject.name  = user.name;
            userObject.email = user.email;

            var userRequest = new RestRequest("v1/users/" + userObject.id + "/contact_methods", Method.GET);

            IRestResponse userResponse  = client.Execute(userRequest);
            var           userDetails   = userResponse.Content;
            dynamic       userMobile    = JsonConvert.DeserializeObject(userDetails);
            var           contactCounts = userMobile.contact_methods.Count;

            for (int i = 0; i < contactCounts; i++)
            {
                if (userMobile.contact_methods[i].type == "phone")
                {
                    userObject.mobile = "+" + userMobile.contact_methods[i].country_code + userMobile.contact_methods[i].address;
                }
            }


            var twilioResponse = new TwilioResponse();

            twilioResponse.Say("Welcome to the Support Centre. Please wait while we route your call.");
            twilioResponse.Dial(userObject.mobile);


            return(this.Request.CreateResponse(HttpStatusCode.OK, twilioResponse.Element, new XmlMediaTypeFormatter()));
        }
Пример #41
0
        public void Can_Generate_Dial_And_Queue()
        {
            var response = new TwilioResponse();
            response.Dial(new Queue("example"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #42
0
        public void _1_4b()
        {
            var digits = 1;

            var response = new TwilioResponse();
            if (digits == 1)
            {
                response.Dial("+13105551212");
                response.Say("The call failed or the remote party hung up. Goodbye.");
            }
            else if (digits == 2)
            {
                response.Say("Record your monkey howl after the tone.");
                response.Record(new { maxLength = 30, action = "hello-monkey-handle-recording.php" });
            }

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #43
0
        public void Can_Generate_Dial_And_Sip_Object()
        {
            var response = new TwilioResponse();
            response.Dial(new Sip("*****@*****.**"));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #44
0
 public void Example_6()
 {
     var response = new TwilioResponse();
     response.Dial(new Conference("LoveTwilio"), new { action = "handleLeaveConference.php", method = "POST", hangupOnStar = "true", timeLimit = 30 });
 }
Пример #45
0
        public void Can_Generate_Dial_And_Sip_Object_And_Sip_Parameters()
        {
            var response = new TwilioResponse();
            response.Dial(new Sip("*****@*****.**", new { username="******", password="******", url="asdsad", method="POST" }));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #46
0
            //create a TwiML response to transfer the call
            public static TwilioResponse GetResponseTransfer(TwilioRequestVoice request, Entity.Client client, Entity.Call call)
            {
                TwilioResponse resp = new TwilioResponse();

                if (call != null &&
                    !string.IsNullOrEmpty(call.TransferTo))
                {
                    if (log.IsDebugEnabled) { log.Debug("GetResponseTransfer.request." + (request == null ? "null" : request.ToJsonString())); }

                    if (request.CallRecord)
                        GetResponseRecord(resp, request, client, call);

                    resp.Pause(1);
                    resp.Say("You are being transferred now.");

                    //TODO: pull caller id from database
                    //caller ID is required for outbound calls; it must be registered with your twilio account
                    string callerId = ConfigurationManager.AppSettings["DemoCallerId"];

                    Twilio.TwiML.Number number = new Twilio.TwiML.Number(call.TransferTo);
                    resp.Dial(number, new { callerId = callerId });

                    //update call result
                    if (call != null)
                    {
                        call.CallResult = "transfered to " + call.TransferTo;
                        call.Save();
                    }
                }
                else
                {
                    if (log.IsDebugEnabled) { log.Error("GetResponseTransfer.NoTransferNumber.request." + (request == null ? "null" : request.ToJsonString())); }

                    //no transfer number, send to voicemail
                    resp = GetResponseVoicemail(request, client, call);
                }

                return resp;
            }
Пример #47
0
        public void Can_Generate_Dial_And_Queue_Object_Param()
        {
            var response = new TwilioResponse();
            response.Dial(new Queue(new { reservationSid = "RSXXXXX", postworkActivitySid="PWXXXXXX" }));

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }
Пример #48
0
        public void Can_Generate_Dial_And_Sip_Object_And_Dial_Parameters()
        {
            var response = new TwilioResponse();
            response.Dial(
                new Sip("*****@*****.**"),
                new { action = "dial.xml", method = "GET", timeout = "30", hangupOnStar = "true", timeLimit = "1000", callerId = "555-111-2222" }
            );

            Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
        }       
Пример #49
0
		public void Can_Generate_Dial_And_Number_Object_Param()
		{
			var response = new TwilioResponse();
			response.Dial(new Number("555-111-2222"));

			Assert.IsTrue(IsValidTwiML(response.ToXDocument()));
		}
Пример #50
0
            //create a TwiML response to answer the call
            public static TwilioResponse GetResponseAnswer(TwilioRequestVoice request, Entity.Client client, Entity.Call call)
            {
                TwilioResponse resp = new TwilioResponse();

                if (client == null ||
                    client.ClientState != Entity.Client.ClientStateEnum.Available)
                {
                    if (log.IsDebugEnabled) { log.Debug("GetResponseAnswer.Unavailable.request." + (request == null ? "null" : request.ToJsonString())); }

                    //transfer to unavailable voicemail
                    return GetResponseVoicemail(request, client, call);
                }
                else
                {
                    if (log.IsDebugEnabled) { log.Debug("GetResponseAnswer.request." + (request == null ? "null" : request.ToJsonString())); }

                    resp.Pause(1);

                    if (request.CallRecord)
                        GetResponseRecord(resp, request, client, call);

                    resp.Say("Your call is being answered now.");

                    //find the number to dial
                    string toNumber = request.To;
                    if (string.IsNullOrEmpty(toNumber))
                        toNumber = call.ToNumber;

                    //TODO: pull caller id from database
                    //caller ID is required for outbound calls; it must be registered with your twilio account
                    string callerId = ConfigurationManager.AppSettings["DemoCallerId"];;

                    if (toNumber.StartsWith("client:"))
                    {
                        //call is being routed to a twilio client
                        Twilio.TwiML.Client clientToCall = new Twilio.TwiML.Client(toNumber.Replace("client:",""));
                        resp.Dial(clientToCall, new { callerId = callerId });
                    }
                    else
                    {
                        //call is being routed to an external number
                        Twilio.TwiML.Number number = new Twilio.TwiML.Number(toNumber);
                        resp.Dial(number, new { callerId = callerId });
                    }

                    //log the current call state
                    if (call != null)
                    {
                        call.CallResult = "answered by " + request.To;
                        call.Save();
                    }
                }

                return resp;
            }