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); }
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); }
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); }
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); }