public TwilioResponse Inbound(Tuple <Agent, bool> agentTuple)
        {
            var agent     = agentTuple != null ? agentTuple.Item1 : null;
            var anyOnline = agentTuple != null ? agentTuple.Item2 : false;
            var response  = new TwilioResponse();

            if (settings.WorkingHours != null && settings.WorkingHours.Enabled)
            {
                var now = TenantUtil.DateTimeFromUtc(DateTime.UtcNow);
                if (!(settings.WorkingHours.From <= now.TimeOfDay && settings.WorkingHours.To >= now.TimeOfDay))
                {
                    return(AddVoiceMail(response));
                }
            }

            if (anyOnline)
            {
                if (!string.IsNullOrEmpty(settings.GreetingAudio))
                {
                    response.Play(EncodePlay(settings.GreetingAudio));
                }

                response.Enqueue(settings.Queue.Name,
                                 new
                {
                    method        = "POST",
                    action        = GetEcho("Enqueue", agent != null),
                    waitUrl       = GetEcho("Wait", agent != null),
                    waitUrlMethod = "POST"
                });
            }

            return(AddVoiceMail(response));
        }
Пример #2
0
        public void Can_Generate_Enqueue_With_Options_And_TaskAttributes_And_Priority_And_Timeout()
        {
            var response = new TwilioResponse();

            response.Enqueue(new { action = "example.xml", method = "GET", waitUrl = "wait.xml", waitUrlMethod = "GET", workflowSid = "WFXXXXX" }, "{'task':'attributes'}", new { priority = "10", timeout = "30" });

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

            response.Enqueue("example", new { action = "example.xml", method = "GET", waitUrl = "wait.xml", waitUrlMethod = "GET" });

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

            response.Enqueue("example");

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

            response.Enqueue(new { action = "example.xml", method = "GET", waitUrl = "wait.xml", waitUrlMethod = "GET", workspaceSid = "WSXXXXX" }, "{'task':'attributes'}");

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

            response.Say("Welcome adventurer to the Twilio Quest chapter 1 demo line.  An incantation adds you to a call queue.");
            response.Enqueue("twilioquestchapter10");

            return(TwiML(response));
        }
Пример #7
0
        public ActionResult QueueCall()
        {
            var response = new TwilioResponse();

            response.Enqueue("Demo Queue", new {
                action  = Url.Action("LeaveQueue"),    //url to call when the call is dequeued
                waitUrl = Url.Action("WaitInQueue")    //url to call while the call waits
            });

            return(TwiML(response));
        }
Пример #8
0
        public ActionResult AdvancedEnqueue()
        {
            var response = new TwilioResponse();

            response.Say("You've been banished to a call queue.  Enjoy your stay.");
            response.Enqueue("twilioquestchapter11", new { waitUrl = Url.Action("AdvancedWait", "Queue", null, "http") });

            response.Say("Hail the adventurer!  He has escaped the despair of the dreaded call queue");
            response.Say("We wish you well on your continued journey");
            return(TwiML(response));
        }
Пример #9
0
        public ActionResult EnqueueCaller(string callsid)
        {
            QueueState.CreateAndSave(callsid);

            var response = new TwilioResponse();

            response.Say("Adding you to the queue");
            response.Enqueue("CustomerServiceQueue", new
            {
                action  = Url.ActionAbsolute("LeaveQueue"),
                waitUrl = Url.ActionAbsolute("DetermineWaitExperience")
            });

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

            if (settings.WorkingHours != null && settings.WorkingHours.Enabled)
            {
                if (!(settings.WorkingHours.From <= DateTime.UtcNow.TimeOfDay && settings.WorkingHours.To >= DateTime.UtcNow.TimeOfDay))
                {
                    return(AddVoiceMail(response));
                }
            }

            if (settings.AvailableOperators.Any())
            {
                if (!string.IsNullOrEmpty(settings.GreetingAudio))
                {
                    response.Play(settings.GreetingAudio);
                }

                response.Enqueue(settings.Queue.Name, new { method = "GET", action = GetEcho("enqueue"), waitUrl = GetEcho("wait"), waitUrlMethod = "GET" });
            }

            return(AddVoiceMail(response));
        }