@@ -24,8 +24,7 @@ def setup
2424 @workspace_sid = create_workspace
2525 @client = taskrouter_client
2626 WorkspaceInfo . instance . workers = create_workers
27- queues = create_task_queues
28- workflow_sid = create_workflow ( queues ) . sid
27+ workflow_sid = create_workflow . sid
2928 WorkspaceInfo . instance . workflow_sid = workflow_sid
3029 idle_activity_sid = activity_by_name ( 'Idle' ) . sid
3130 WorkspaceInfo . instance . post_work_activity_sid = idle_activity_sid
@@ -39,11 +38,12 @@ def setup
3938 attr_reader :client , :account_sid , :auth_token
4039
4140 def taskrouter_client
42- Twilio ::REST ::TaskRouterClient . new (
41+ client_instance = Twilio ::REST ::Client . new (
4342 account_sid ,
44- auth_token ,
45- workspace_sid
43+ auth_token
4644 )
45+
46+ client_instance . taskrouter . v1
4747 end
4848
4949 def create_workspace
@@ -72,15 +72,15 @@ def create_workers
7272 end
7373
7474 def create_worker ( name , attributes )
75- client . workspace . workers . create (
75+ client . workspaces ( @workspace_sid ) . workers . create (
7676 friendly_name : name ,
7777 attributes : attributes ,
7878 activity_sid : activity_by_name ( 'Idle' ) . sid
7979 )
8080 end
8181
8282 def activity_by_name ( name )
83- client . workspace . activities . list ( friendly_name : name ) . first
83+ client . workspaces ( @workspace_sid ) . activities . list ( friendly_name : name ) . first
8484 end
8585
8686 def create_task_queues
@@ -102,26 +102,19 @@ def create_task_queues
102102 end
103103
104104 def create_task_queue ( name , reservation_sid , assignment_sid , target_workers )
105- client . workspace . task_queues . create (
105+ client . workspaces ( @workspace_sid ) . task_queues . create (
106106 friendly_name : name ,
107107 reservation_activity_sid : reservation_sid ,
108108 assignment_activity_sid : assignment_sid ,
109109 target_workers : target_workers
110110 )
111111 end
112112
113- def create_workflow ( queues )
114- default_rule_target = create_rule_target ( queues [ :all ] . sid , 1 , QUEUE_TIMEOUT , '1==1' )
115- voice_rule_target = create_rule_target ( queues [ :voice ] . sid , 5 , QUEUE_TIMEOUT , nil )
116- sms_rule_target = create_rule_target ( queues [ :sms ] . sid , 5 , QUEUE_TIMEOUT , nil )
117- voice_rule = create_rule ( 'selected_product=="ProgrammableVoice"' ,
118- [ voice_rule_target , default_rule_target ] )
119- sms_rule = create_rule ( 'selected_product=="ProgrammableSMS"' ,
120- [ sms_rule_target , default_rule_target ] )
121-
122- rules = [ voice_rule , sms_rule ]
123- config = Twilio ::TaskRouter ::WorkflowConfiguration . new ( rules , default_rule_target )
124- client . workspace . workflows . create (
113+ def create_workflow
114+ queues = create_task_queues
115+ config = workflow_config ( queues )
116+
117+ client . workspaces ( @workspace_sid ) . workflows . create (
125118 configuration : config . to_json ,
126119 friendly_name : WORKFLOW_NAME ,
127120 assignment_callback_url : ASSIGNMENT_CALLBACK_URL ,
@@ -130,16 +123,46 @@ def create_workflow(queues)
130123 )
131124 end
132125
133- def create_rule_target ( queue_sid , priority , timeout , expression )
134- Twilio ::TaskRouter ::WorkflowRuleTarget . new ( queue_sid , priority , timeout ,
135- expression )
126+ def workspace_sid
127+ @workspace_sid || 'no_workspace_yet'
136128 end
137129
138- def create_rule ( expression , targets )
139- Twilio ::TaskRouter ::WorkflowRule . new ( expression , targets )
130+ def workflow_config ( queues )
131+ default_target = default_rule_target ( queues [ :all ] . sid )
132+
133+ {
134+ task_routing : {
135+ filters : [
136+ {
137+ expression : 'selected_product=="ProgrammableVoice"' ,
138+ targets : [
139+ rule_target ( queues [ :voice ] . sid ) ,
140+ default_target
141+ ]
142+ } ,
143+ {
144+ expression : 'selected_product=="ProgrammableSMS"' ,
145+ targets : [
146+ rule_target ( queues [ :sms ] . sid ) ,
147+ default_target
148+ ]
149+ }
150+ ] ,
151+ default_filter : default_target
152+ }
153+ }
140154 end
141155
142- def workspace_sid
143- @workspace_sid || 'no_workspace_yet'
156+ def rule_target ( sid )
157+ { queue : sid , priority : 5 , timeout : QUEUE_TIMEOUT }
158+ end
159+
160+ def default_rule_target ( sid )
161+ {
162+ queue : sid ,
163+ priority : 1 ,
164+ timeout : QUEUE_TIMEOUT ,
165+ expression : '1==1'
166+ }
144167 end
145168end
0 commit comments