public virtual WorkflowResource CreateWorkflow(string workspaceSid, IDictionary <string, TaskQueueResource> taskQueues)
        {
            var voiceQueue = taskQueues[VoiceQueue];
            var smsQueue   = taskQueues[SmsQueue];
            var allQueue   = taskQueues[AllQueue];

            var voiceFilter = new {
                friendlyName = "Voice",
                expression   = "selected_product==\"ProgrammableVoice\"",
                targets      = new List <object>()
                {
                    new { queue = voiceQueue.Sid, Priority = "5", Timeout = "30" },
                    new { queue = allQueue.Sid, Expression = "1==1", Priority = "1", Timeout = "30" }
                }
            };

            var smsFilter = new {
                friendlyName = "SMS",
                expression   = "selected_product==\"ProgrammableSMS\"",
                targets      = new List <object>()
                {
                    new { queue = smsQueue.Sid, Priority = "5", Timeout = "30" },
                    new { queue = allQueue.Sid, Expression = "1==1", Priority = "1", Timeout = "30" }
                }
            };

            var workflowConfiguration = new
            {
                task_routing = new
                {
                    filters = new List <object>()
                    {
                        voiceFilter,
                        smsFilter
                    },
                    default_filter = new
                    {
                        queue      = allQueue.Sid,
                        expression = "1==1",
                        priority   = "1",
                        timeout    = "30"
                    }
                }
            };

            // Call REST API
            return(WorkflowResource.Create(
                       workspaceSid,
                       "Tech Support",
                       Json.Encode(workflowConfiguration),
                       new Uri($"{_hostUrl}/callback/assignment"),
                       new Uri($"{_hostUrl}/callback/assignment"),
                       15));
        }
        public void TestCreateResponse()
        {
            var twilioRestClient = Substitute.For<ITwilioRestClient>();
            twilioRestClient.AccountSid.Returns("ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
            twilioRestClient.Request(Arg.Any<Request>())
                            .Returns(new Response(
                                         System.Net.HttpStatusCode.Created,
                                         "{\"account_sid\": \"ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"assignment_callback_url\": \"http://example.com\",\"configuration\": \"task-routing:\\\\n- filter: \\\\n- 1 == 1\\\\ntarget:\\\\n- queue: WQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\\\nset-priority: 0\\\\n\",\"date_created\": \"2014-05-14T10:50:02Z\",\"date_updated\": \"2014-05-14T23:26:06Z\",\"document_content_type\": \"application/json\",\"fallback_assignment_callback_url\": null,\"friendly_name\": \"Default Fifo Workflow\",\"sid\": \"WFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"task_reservation_timeout\": 120,\"url\": \"https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows/WFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"workspace_sid\": \"WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\"links\": {\"statistics\": \"https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows/WFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Statistics\",\"real_time_statistics\": \"https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows/WFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/RealTimeStatistics\",\"cumulative_statistics\": \"https://taskrouter.twilio.com/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows/WFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/CumulativeStatistics\"}}"
                                     ));

            var response = WorkflowResource.Create("WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "FriendlyName", "Configuration", client: twilioRestClient);
            Assert.NotNull(response);
        }
Example #3
0
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var workflow = WorkflowResource.Create(
            friendlyName: "FriendlyName",
            configuration: "Configuration",
            pathWorkspaceSid: "WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            );

        Console.WriteLine(workflow.Sid);
    }
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var workflow = WorkflowResource.Create(
            assignmentCallbackUrl: new Uri("http://example.com"),
            fallbackAssignmentCallbackUrl: new Uri("http://example2.com"),
            taskReservationTimeout: 30,
            friendlyName: "Sales, Marketing, Support Workflow",
            configuration: "{\"task_routing\": {\"filters\": [{\"expression\": \"type=='sales'\", \"targets\": [{\"queue\": \"WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"}]}, {\"expression\": \"type=='marketing'\", \"targets\": [{\"queue\": \"WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"}]}, {\"expression\": \"type=='support'\", \"targets\": [{\"queue\": \"WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"}]}], \"default_filter\": {\"queue\": \"WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\"}}}",
            pathWorkspaceSid: "WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            );

        Console.WriteLine(workflow.Sid);
    }
        public void TestCreateRequest()
        {
            var twilioRestClient = Substitute.For<ITwilioRestClient>();
            var request = new Request(
                HttpMethod.Post,
                Twilio.Rest.Domain.Taskrouter,
                "/v1/Workspaces/WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Workflows",
                ""
            );
            request.AddPostParam("FriendlyName", Serialize("FriendlyName"));
            request.AddPostParam("Configuration", Serialize("Configuration"));
            twilioRestClient.Request(request).Throws(new ApiException("Server Error, no content"));

            try
            {
                WorkflowResource.Create("WSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "FriendlyName", "Configuration", client: twilioRestClient);
                Assert.Fail("Expected TwilioException to be thrown for 500");
            }
            catch (ApiException) {}
            twilioRestClient.Received().Request(request);
        }
Example #6
0
    static void Main(string[] args)
    {
        // Find your Account Sid and Auth Token at twilio.com/console
        const string accountSid   = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken    = "your_auth_token";
        const string workspaceSid = "WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

        const string salesQueue     = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string marketingQueue = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string supportQueue   = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string everyoneQueue  = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

        TwilioClient.Init(accountSid, authToken);

        // sales
        var salesRule = new {
            FriendlyName = "Sales",
            Expression   = "type == 'sales'",
            Targets      = new List <object>()
            {
                new {
                    Queue = salesQueue
                }
            }
        };

        // marketing
        var marketingRule = new {
            FriendlyName = "Marketing",
            Expression   = "type == 'marketing'",
            Targets      = new List <object>()
            {
                new {
                    Queue = marketingQueue
                }
            }
        };

        // support
        var supportRule = new {
            FriendlyName = "Support",
            Expression   = "type == 'support'",
            Targets      = new List <object>()
            {
                new {
                    Queue = supportQueue
                }
            }
        };

        var workflowConfiguration = new {
            Filters = new List <object>()
            {
                salesRule,
                marketingRule,
                supportRule
            },
            DefaultFilter = new {
                Queue = everyoneQueue
            }
        };

        // convert to json
        var workflowJSON = JObject.FromObject(workflowConfiguration).ToString();

        // call rest api
        var workflow = WorkflowResource.Create(workspaceSid,
                                               "Sales, Marketing, Support Workflow", workflowJSON,
                                               new Uri("http://example.com"), new Uri("http://example2.com"), 30);

        Console.WriteLine(workflow.FriendlyName);
    }
Example #7
0
    static void Main(string[] args)
    {
        // Find your Account Sid and Auth Token at twilio.com/console
        // To set up environmental variables, see http://twil.io/secure
        const string accountSid   = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        const string authToken    = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");
        const string workspaceSid = "WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

        const string salesQueue     = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string marketingQueue = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string supportQueue   = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string everyoneQueue  = "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

        TwilioClient.Init(accountSid, authToken);

        // sales
        var salesRule = new {
            friendlyName = "Sales",
            expression   = "type == 'sales'",
            targets      = new List <object>()
            {
                new {
                    queue = salesQueue
                }
            }
        };

        // marketing
        var marketingRule = new {
            friendlyName = "Marketing",
            expression   = "type == 'marketing'",
            targets      = new List <object>()
            {
                new {
                    queue = marketingQueue
                }
            }
        };

        // support
        var supportRule = new {
            friendlyName = "Support",
            expression   = "type == 'support'",
            targets      = new List <object>()
            {
                new {
                    queue = supportQueue
                }
            }
        };

        var workflowConfiguration = new {
            filters = new List <object>()
            {
                salesRule,
                marketingRule,
                supportRule
            },
            default_filter = new {
                queue = everyoneQueue
            }
        };

        // convert to json
        var workflowJSON = JObject.FromObject(workflowConfiguration).ToString();

        // call rest api
        var workflow = WorkflowResource.Create(workspaceSid,
                                               "Sales, Marketing, Support Workflow", workflowJSON,
                                               new Uri("http://example.com"), new Uri("http://example2.com"), 30);

        Console.WriteLine(workflow.FriendlyName);
    }
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var configuration = JsonConvert.SerializeObject(new Dictionary <string, Object>()
        {
            { "task_routing", new Dictionary <string, Object>()
              {
                  { "filters", new object [] {
                        new Dictionary <string, Object>()
                        {
                            { "expression", "selected_product=='sales'" },
                            { "targets", new object [] {
                                    new Dictionary <string, Object>()
                                    {
                                        { "queue", sales_taskqueue_sid }
                                    }
                                } }
                        },
                        new Dictionary <string, Object>()
                        {
                            { "expression", "selected_product=='marketing'" },
                            { "targets", new object [] {
                                    new Dictionary <string, Object>()
                                    {
                                        { "queue", marketing_taskqueue_sid }
                                    }
                                } }
                        },
                        new Dictionary <string, Object>()
                        {
                            { "expression", "type=='support'" },
                            { "targets", new object [] {
                                    new Dictionary <string, Object>()
                                    {
                                        { "queue", support_taskqueue_sid }
                                    }
                                } }
                        },
                        new Dictionary <string, Object>()
                        {
                            { "expression", "selected_product ==manager" },
                            { "targets", new object [] {
                                    new Dictionary <string, Object>()
                                    {
                                        { "queue", manager_taskqueue_sid }
                                    }
                                } }
                        }
                    } },
                  { "default_filter", new Dictionary <string, Object>()
                    {
                        { "queue", "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
                    } }
              } }
        }, Formatting.Indented);

        var workflow = WorkflowResource.Create(
            friendlyName: "Sales, Marketing, Support Workflow",
            configuration: configuration,
            pathWorkspaceSid: "WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            );

        Console.WriteLine(workflow.Sid);
    }
    static void Main(string[] args)
    {
        // Find your Account Sid and Token at twilio.com/console
        // DANGER! This is insecure. See http://twil.io/secure
        const string accountSid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
        const string authToken  = "your_auth_token";

        TwilioClient.Init(accountSid, authToken);

        var configuration = JsonConvert.SerializeObject(new Dictionary <string, Object>()
        {
            { "task_routing", new Dictionary <string, Object>()
              {
                  { "filters", new object [] {
                        new Dictionary <string, Object>()
                        {
                            { "expression", "type=='sales'" },
                            { "targets", new object [] {
                                    new Dictionary <string, Object>()
                                    {
                                        { "queue", "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
                                    }
                                } }
                        },
                        new Dictionary <string, Object>()
                        {
                            { "expression", "type=='marketing'" },
                            { "targets", new object [] {
                                    new Dictionary <string, Object>()
                                    {
                                        { "queue", "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
                                    }
                                } }
                        },
                        new Dictionary <string, Object>()
                        {
                            { "expression", "type=='support'" },
                            { "targets", new object [] {
                                    new Dictionary <string, Object>()
                                    {
                                        { "queue", "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
                                    }
                                } }
                        }
                    } },
                  { "default_filter", new Dictionary <string, Object>()
                    {
                        { "queue", "WQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" }
                    } }
              } }
        }, Formatting.Indented);

        var workflow = WorkflowResource.Create(
            assignmentCallbackUrl: new Uri("http://example.com"),
            fallbackAssignmentCallbackUrl: new Uri("http://example2.com"),
            taskReservationTimeout: 30,
            friendlyName: "Sales, Marketing, Support Workflow",
            configuration: configuration,
            pathWorkspaceSid: "WSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
            );

        Console.WriteLine(workflow.Sid);
    }