github.com/twilio/twilio-go@v1.20.1/rest/taskrouter/v1/workspaces_task_queues.go (about) 1 /* 2 * This code was generated by 3 * ___ _ _ _ _ _ _ ____ ____ ____ _ ____ ____ _ _ ____ ____ ____ ___ __ __ 4 * | | | | | | | | | __ | | |__| | __ | __ |___ |\ | |___ |__/ |__| | | | |__/ 5 * | |_|_| | |___ | |__| |__| | | | |__] |___ | \| |___ | \ | | | |__| | \ 6 * 7 * Twilio - Taskrouter 8 * This is the public Twilio REST API. 9 * 10 * NOTE: This class is auto generated by OpenAPI Generator. 11 * https://openapi-generator.tech 12 * Do not edit the class manually. 13 */ 14 15 package openapi 16 17 import ( 18 "encoding/json" 19 "fmt" 20 "net/url" 21 "strings" 22 23 "github.com/twilio/twilio-go/client" 24 ) 25 26 // Optional parameters for the method 'CreateTaskQueue' 27 type CreateTaskQueueParams struct { 28 // A descriptive string that you create to describe the TaskQueue. For example `Support-Tier 1`, `Sales`, or `Escalation`. 29 FriendlyName *string `json:"FriendlyName,omitempty"` 30 // A string that describes the Worker selection criteria for any Tasks that enter the TaskQueue. For example, `'\\\"language\\\" == \\\"spanish\\\"'`. The default value is `1==1`. If this value is empty, Tasks will wait in the TaskQueue until they are deleted or moved to another TaskQueue. For more information about Worker selection, see [Describing Worker selection criteria](https://www.twilio.com/docs/taskrouter/api/taskqueues#target-workers). 31 TargetWorkers *string `json:"TargetWorkers,omitempty"` 32 // The maximum number of Workers to reserve for the assignment of a Task in the queue. Can be an integer between 1 and 50, inclusive and defaults to 1. 33 MaxReservedWorkers *int `json:"MaxReservedWorkers,omitempty"` 34 // 35 TaskOrder *string `json:"TaskOrder,omitempty"` 36 // The SID of the Activity to assign Workers when a task is reserved for them. 37 ReservationActivitySid *string `json:"ReservationActivitySid,omitempty"` 38 // The SID of the Activity to assign Workers when a task is assigned to them. 39 AssignmentActivitySid *string `json:"AssignmentActivitySid,omitempty"` 40 } 41 42 func (params *CreateTaskQueueParams) SetFriendlyName(FriendlyName string) *CreateTaskQueueParams { 43 params.FriendlyName = &FriendlyName 44 return params 45 } 46 func (params *CreateTaskQueueParams) SetTargetWorkers(TargetWorkers string) *CreateTaskQueueParams { 47 params.TargetWorkers = &TargetWorkers 48 return params 49 } 50 func (params *CreateTaskQueueParams) SetMaxReservedWorkers(MaxReservedWorkers int) *CreateTaskQueueParams { 51 params.MaxReservedWorkers = &MaxReservedWorkers 52 return params 53 } 54 func (params *CreateTaskQueueParams) SetTaskOrder(TaskOrder string) *CreateTaskQueueParams { 55 params.TaskOrder = &TaskOrder 56 return params 57 } 58 func (params *CreateTaskQueueParams) SetReservationActivitySid(ReservationActivitySid string) *CreateTaskQueueParams { 59 params.ReservationActivitySid = &ReservationActivitySid 60 return params 61 } 62 func (params *CreateTaskQueueParams) SetAssignmentActivitySid(AssignmentActivitySid string) *CreateTaskQueueParams { 63 params.AssignmentActivitySid = &AssignmentActivitySid 64 return params 65 } 66 67 // 68 func (c *ApiService) CreateTaskQueue(WorkspaceSid string, params *CreateTaskQueueParams) (*TaskrouterV1TaskQueue, error) { 69 path := "/v1/Workspaces/{WorkspaceSid}/TaskQueues" 70 path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1) 71 72 data := url.Values{} 73 headers := make(map[string]interface{}) 74 75 if params != nil && params.FriendlyName != nil { 76 data.Set("FriendlyName", *params.FriendlyName) 77 } 78 if params != nil && params.TargetWorkers != nil { 79 data.Set("TargetWorkers", *params.TargetWorkers) 80 } 81 if params != nil && params.MaxReservedWorkers != nil { 82 data.Set("MaxReservedWorkers", fmt.Sprint(*params.MaxReservedWorkers)) 83 } 84 if params != nil && params.TaskOrder != nil { 85 data.Set("TaskOrder", *params.TaskOrder) 86 } 87 if params != nil && params.ReservationActivitySid != nil { 88 data.Set("ReservationActivitySid", *params.ReservationActivitySid) 89 } 90 if params != nil && params.AssignmentActivitySid != nil { 91 data.Set("AssignmentActivitySid", *params.AssignmentActivitySid) 92 } 93 94 resp, err := c.requestHandler.Post(c.baseURL+path, data, headers) 95 if err != nil { 96 return nil, err 97 } 98 99 defer resp.Body.Close() 100 101 ps := &TaskrouterV1TaskQueue{} 102 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 103 return nil, err 104 } 105 106 return ps, err 107 } 108 109 // 110 func (c *ApiService) DeleteTaskQueue(WorkspaceSid string, Sid string) error { 111 path := "/v1/Workspaces/{WorkspaceSid}/TaskQueues/{Sid}" 112 path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1) 113 path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1) 114 115 data := url.Values{} 116 headers := make(map[string]interface{}) 117 118 resp, err := c.requestHandler.Delete(c.baseURL+path, data, headers) 119 if err != nil { 120 return err 121 } 122 123 defer resp.Body.Close() 124 125 return nil 126 } 127 128 // 129 func (c *ApiService) FetchTaskQueue(WorkspaceSid string, Sid string) (*TaskrouterV1TaskQueue, error) { 130 path := "/v1/Workspaces/{WorkspaceSid}/TaskQueues/{Sid}" 131 path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1) 132 path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1) 133 134 data := url.Values{} 135 headers := make(map[string]interface{}) 136 137 resp, err := c.requestHandler.Get(c.baseURL+path, data, headers) 138 if err != nil { 139 return nil, err 140 } 141 142 defer resp.Body.Close() 143 144 ps := &TaskrouterV1TaskQueue{} 145 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 146 return nil, err 147 } 148 149 return ps, err 150 } 151 152 // Optional parameters for the method 'ListTaskQueue' 153 type ListTaskQueueParams struct { 154 // The `friendly_name` of the TaskQueue resources to read. 155 FriendlyName *string `json:"FriendlyName,omitempty"` 156 // The attributes of the Workers to read. Returns the TaskQueues with Workers that match the attributes specified in this parameter. 157 EvaluateWorkerAttributes *string `json:"EvaluateWorkerAttributes,omitempty"` 158 // The SID of the Worker with the TaskQueue resources to read. 159 WorkerSid *string `json:"WorkerSid,omitempty"` 160 // Sorting parameter for TaskQueues 161 Ordering *string `json:"Ordering,omitempty"` 162 // How many resources to return in each list page. The default is 50, and the maximum is 1000. 163 PageSize *int `json:"PageSize,omitempty"` 164 // Max number of records to return. 165 Limit *int `json:"limit,omitempty"` 166 } 167 168 func (params *ListTaskQueueParams) SetFriendlyName(FriendlyName string) *ListTaskQueueParams { 169 params.FriendlyName = &FriendlyName 170 return params 171 } 172 func (params *ListTaskQueueParams) SetEvaluateWorkerAttributes(EvaluateWorkerAttributes string) *ListTaskQueueParams { 173 params.EvaluateWorkerAttributes = &EvaluateWorkerAttributes 174 return params 175 } 176 func (params *ListTaskQueueParams) SetWorkerSid(WorkerSid string) *ListTaskQueueParams { 177 params.WorkerSid = &WorkerSid 178 return params 179 } 180 func (params *ListTaskQueueParams) SetOrdering(Ordering string) *ListTaskQueueParams { 181 params.Ordering = &Ordering 182 return params 183 } 184 func (params *ListTaskQueueParams) SetPageSize(PageSize int) *ListTaskQueueParams { 185 params.PageSize = &PageSize 186 return params 187 } 188 func (params *ListTaskQueueParams) SetLimit(Limit int) *ListTaskQueueParams { 189 params.Limit = &Limit 190 return params 191 } 192 193 // Retrieve a single page of TaskQueue records from the API. Request is executed immediately. 194 func (c *ApiService) PageTaskQueue(WorkspaceSid string, params *ListTaskQueueParams, pageToken, pageNumber string) (*ListTaskQueueResponse, error) { 195 path := "/v1/Workspaces/{WorkspaceSid}/TaskQueues" 196 197 path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1) 198 199 data := url.Values{} 200 headers := make(map[string]interface{}) 201 202 if params != nil && params.FriendlyName != nil { 203 data.Set("FriendlyName", *params.FriendlyName) 204 } 205 if params != nil && params.EvaluateWorkerAttributes != nil { 206 data.Set("EvaluateWorkerAttributes", *params.EvaluateWorkerAttributes) 207 } 208 if params != nil && params.WorkerSid != nil { 209 data.Set("WorkerSid", *params.WorkerSid) 210 } 211 if params != nil && params.Ordering != nil { 212 data.Set("Ordering", *params.Ordering) 213 } 214 if params != nil && params.PageSize != nil { 215 data.Set("PageSize", fmt.Sprint(*params.PageSize)) 216 } 217 218 if pageToken != "" { 219 data.Set("PageToken", pageToken) 220 } 221 if pageNumber != "" { 222 data.Set("Page", pageNumber) 223 } 224 225 resp, err := c.requestHandler.Get(c.baseURL+path, data, headers) 226 if err != nil { 227 return nil, err 228 } 229 230 defer resp.Body.Close() 231 232 ps := &ListTaskQueueResponse{} 233 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 234 return nil, err 235 } 236 237 return ps, err 238 } 239 240 // Lists TaskQueue records from the API as a list. Unlike stream, this operation is eager and loads 'limit' records into memory before returning. 241 func (c *ApiService) ListTaskQueue(WorkspaceSid string, params *ListTaskQueueParams) ([]TaskrouterV1TaskQueue, error) { 242 response, errors := c.StreamTaskQueue(WorkspaceSid, params) 243 244 records := make([]TaskrouterV1TaskQueue, 0) 245 for record := range response { 246 records = append(records, record) 247 } 248 249 if err := <-errors; err != nil { 250 return nil, err 251 } 252 253 return records, nil 254 } 255 256 // Streams TaskQueue records from the API as a channel stream. This operation lazily loads records as efficiently as possible until the limit is reached. 257 func (c *ApiService) StreamTaskQueue(WorkspaceSid string, params *ListTaskQueueParams) (chan TaskrouterV1TaskQueue, chan error) { 258 if params == nil { 259 params = &ListTaskQueueParams{} 260 } 261 params.SetPageSize(client.ReadLimits(params.PageSize, params.Limit)) 262 263 recordChannel := make(chan TaskrouterV1TaskQueue, 1) 264 errorChannel := make(chan error, 1) 265 266 response, err := c.PageTaskQueue(WorkspaceSid, params, "", "") 267 if err != nil { 268 errorChannel <- err 269 close(recordChannel) 270 close(errorChannel) 271 } else { 272 go c.streamTaskQueue(response, params, recordChannel, errorChannel) 273 } 274 275 return recordChannel, errorChannel 276 } 277 278 func (c *ApiService) streamTaskQueue(response *ListTaskQueueResponse, params *ListTaskQueueParams, recordChannel chan TaskrouterV1TaskQueue, errorChannel chan error) { 279 curRecord := 1 280 281 for response != nil { 282 responseRecords := response.TaskQueues 283 for item := range responseRecords { 284 recordChannel <- responseRecords[item] 285 curRecord += 1 286 if params.Limit != nil && *params.Limit < curRecord { 287 close(recordChannel) 288 close(errorChannel) 289 return 290 } 291 } 292 293 record, err := client.GetNext(c.baseURL, response, c.getNextListTaskQueueResponse) 294 if err != nil { 295 errorChannel <- err 296 break 297 } else if record == nil { 298 break 299 } 300 301 response = record.(*ListTaskQueueResponse) 302 } 303 304 close(recordChannel) 305 close(errorChannel) 306 } 307 308 func (c *ApiService) getNextListTaskQueueResponse(nextPageUrl string) (interface{}, error) { 309 if nextPageUrl == "" { 310 return nil, nil 311 } 312 resp, err := c.requestHandler.Get(nextPageUrl, nil, nil) 313 if err != nil { 314 return nil, err 315 } 316 317 defer resp.Body.Close() 318 319 ps := &ListTaskQueueResponse{} 320 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 321 return nil, err 322 } 323 return ps, nil 324 } 325 326 // Optional parameters for the method 'UpdateTaskQueue' 327 type UpdateTaskQueueParams struct { 328 // A descriptive string that you create to describe the TaskQueue. For example `Support-Tier 1`, `Sales`, or `Escalation`. 329 FriendlyName *string `json:"FriendlyName,omitempty"` 330 // A string describing the Worker selection criteria for any Tasks that enter the TaskQueue. For example '\\\"language\\\" == \\\"spanish\\\"' If no TargetWorkers parameter is provided, Tasks will wait in the queue until they are either deleted or moved to another queue. Additional examples on how to describing Worker selection criteria below. 331 TargetWorkers *string `json:"TargetWorkers,omitempty"` 332 // The SID of the Activity to assign Workers when a task is reserved for them. 333 ReservationActivitySid *string `json:"ReservationActivitySid,omitempty"` 334 // The SID of the Activity to assign Workers when a task is assigned for them. 335 AssignmentActivitySid *string `json:"AssignmentActivitySid,omitempty"` 336 // The maximum number of Workers to create reservations for the assignment of a task while in the queue. Maximum of 50. 337 MaxReservedWorkers *int `json:"MaxReservedWorkers,omitempty"` 338 // 339 TaskOrder *string `json:"TaskOrder,omitempty"` 340 } 341 342 func (params *UpdateTaskQueueParams) SetFriendlyName(FriendlyName string) *UpdateTaskQueueParams { 343 params.FriendlyName = &FriendlyName 344 return params 345 } 346 func (params *UpdateTaskQueueParams) SetTargetWorkers(TargetWorkers string) *UpdateTaskQueueParams { 347 params.TargetWorkers = &TargetWorkers 348 return params 349 } 350 func (params *UpdateTaskQueueParams) SetReservationActivitySid(ReservationActivitySid string) *UpdateTaskQueueParams { 351 params.ReservationActivitySid = &ReservationActivitySid 352 return params 353 } 354 func (params *UpdateTaskQueueParams) SetAssignmentActivitySid(AssignmentActivitySid string) *UpdateTaskQueueParams { 355 params.AssignmentActivitySid = &AssignmentActivitySid 356 return params 357 } 358 func (params *UpdateTaskQueueParams) SetMaxReservedWorkers(MaxReservedWorkers int) *UpdateTaskQueueParams { 359 params.MaxReservedWorkers = &MaxReservedWorkers 360 return params 361 } 362 func (params *UpdateTaskQueueParams) SetTaskOrder(TaskOrder string) *UpdateTaskQueueParams { 363 params.TaskOrder = &TaskOrder 364 return params 365 } 366 367 // 368 func (c *ApiService) UpdateTaskQueue(WorkspaceSid string, Sid string, params *UpdateTaskQueueParams) (*TaskrouterV1TaskQueue, error) { 369 path := "/v1/Workspaces/{WorkspaceSid}/TaskQueues/{Sid}" 370 path = strings.Replace(path, "{"+"WorkspaceSid"+"}", WorkspaceSid, -1) 371 path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1) 372 373 data := url.Values{} 374 headers := make(map[string]interface{}) 375 376 if params != nil && params.FriendlyName != nil { 377 data.Set("FriendlyName", *params.FriendlyName) 378 } 379 if params != nil && params.TargetWorkers != nil { 380 data.Set("TargetWorkers", *params.TargetWorkers) 381 } 382 if params != nil && params.ReservationActivitySid != nil { 383 data.Set("ReservationActivitySid", *params.ReservationActivitySid) 384 } 385 if params != nil && params.AssignmentActivitySid != nil { 386 data.Set("AssignmentActivitySid", *params.AssignmentActivitySid) 387 } 388 if params != nil && params.MaxReservedWorkers != nil { 389 data.Set("MaxReservedWorkers", fmt.Sprint(*params.MaxReservedWorkers)) 390 } 391 if params != nil && params.TaskOrder != nil { 392 data.Set("TaskOrder", *params.TaskOrder) 393 } 394 395 resp, err := c.requestHandler.Post(c.baseURL+path, data, headers) 396 if err != nil { 397 return nil, err 398 } 399 400 defer resp.Body.Close() 401 402 ps := &TaskrouterV1TaskQueue{} 403 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 404 return nil, err 405 } 406 407 return ps, err 408 }