In Twilio Flex, when a call comes in, I want all workers in a given queue to ring.
They should all be able to pick up the call and the first one to do so is connected to the customer while the call disappear for the others.
For now, TaskRouter seems to select a single eligible worker to send the call.
How can I have TaskRouter to simulring all eligible workers instead of ringing them one by one?
Alan's comment got me in the right direction.
To have multiple workers ring at the same time, just increase the MAX RESERVED WORKERS property in the TaskQueue.
Related
We are building an outbound IVR that will receive a payload, in bulk, via REST API, and place an outbound call to the recipient. We are attempting to limit the number of concurrent flow executions, or calls placed at a time, to prevent transfers by the called parties from flooding the shared inbound queue. Is there any way to accomplish this internally to Twilio?
If my assumptions are correct, the limiting factors when placing outbound API calls via Twilio Studio are the inbound API queue, the number of concurrent flow executions, and the number of Calls Per Second (CPS).
My understanding is that the queued API requests are executed 30 at a time, on a FIFO basis- as one execution is completed, another begins.
Each execution can then place a call at a rate of no more than 1 CPS, so 30 seconds for all calls to be sent.
Is this correct?
Is there any means of throttling these executions, or outbound calls?
A CPS limitation would be ideal, however the minimum number is 1 CPS, which is still 3600 Calls Per Hour, far too many for this call center to handle. Can this be lowered to less than 1 CPS?
Your assumptions are correct, as far as I can tell, but Twilio is built to, within those limits, make the calls you want to make as fast as it can.
If you don't want to Twilio to place the outbound calls, you need to not send the API request to start the call until you are ready. You can do this by knowing the concurrency that you can handle in your own application and by subscribing to call status webhooks so that you know when a call is complete and you can then place a new outbound call.
In our Twilio application we would like to use TaskRouter to distribute incoming calls. Suppose we would like to handle the following scenario:
All Workers login to front-end application and have their status set to Available. If there are any incoming calls, Workers receive them in the UI.
Some Workers have this custom attribute: {"work_hours": [600, 1600], "phone_numbers": ["+1...", "+1..."]}. If for some reason this Worker becomes Unavailable during their working hours set between "work_hours" attribute, we would still like to have incoming calls forwarded to their personal phones from "phone_numbers" attribute.
If the above fails, we would like to forward the incoming call to Voicemail.
Basically, my question is whether it is possible to include Unavailable workers to Workflows and Task Queues? The above scenario would most likely require 3 Task Queues: one for all Available Workers, one for Unavailable but with "work_hours" attributes where taskrouter.currentTime is between those hours and one for Voicemail.
Twilio Solutions Architect here!
I think that you may already found a solution for your problem, but in case someone else is having this problem, here's my solution:
The best way to do this is actually creating a new Activity on TaskRouter of type Unavailable with Work Hours that is is an available Activity. With that state created, you can set the worker availability to this state when they are on this use case, and with the Task Router Workflows, you can have specific queues for these agents and using the routing strategies, bring a task to this queue if necessary.
Regarding to call the agents on their personal phone numbers, you can create a conference between the original call and the agent's phone number and have them connected.
This is a bit tricky, but is completely possible.
I'm currently using task router to route calls to my workers and I want to temporarily prevent certain workers from getting assigned voice tasks. I thought by updating the worker channel capacity for voice to 0 or marking the voice worker channel as unavailable would mean that while the worker remains a part of the queues (based on their custom attributes), if there are any voice tasks coming in, they would not be assigned to that worker. That does not seem to be the case, my worker still receives reservations for voice tasks.
I tried to update my queue to only include workers that have voice capacity by adding this check to the Queue expression '... AND worker.channel.voice.configured_capacity > 0', however when saving the queue in the Console, I get an error saying 'Worker channel capacity expressions not allowed in TargetWorkersExpression on TaskQueue' which leads me to believe that this is not the right thing to do.
The only other solution I can see is to add the worker channel capacity check mentioned above to the target expression at every step of my workflow but that would be harder to maintain.
I can't help but feel that there's something I've missed or misunderstood about how the worker channel capacity works or what it is used for. For what is worth, multitasking is disabled for my workspace.
Twilio developer evangelist here.
Adjusting the capacity when you are not using multitasking won't make a difference.
I would recommend using a custom attribute on the worker and then filtering based on that within the target workers expression instead.
I'd like to have a support queue and a sales queue that call an available agent when there's someone in the queue. The way queue functionality is described in the Twilio docs, it seems that the only way to connect an agent and a caller is to have the agent call into the queue. Well, that's no good for a queue that would be empty for most of the time -- how would they know when to dial in?
Is there a way for an agent to be called and then connected to the queue when someone is waiting?
Twilio developer evangelist here.
This is the exact use case for the Twilio TaskRouter API. From the docs:
Twilio TaskRouter is a system for distributing tasks such as phone calls, leads, support tickets, and other work items to the people and processes that can best handle them. Example applications for TaskRouter include:
Distributing calls to call center agents. TaskRouter supports common features required in call center environments, such as skills-based routing and task prioritization.
Prioritizing and assigning CRM cases to agents in order to make sure they're handled within service level. TaskRouter lets you specify overflow rules for tasks, allowing you to vary assignment rules based on time spent in queue and case content.
Distributing leads to inside sales teams. TaskRouter's business rules allow you to control prioritization so that your team is always working on the most important opportunity.
Check out the quickstart guide for TaskRouter which takes you through creating a workspace and workers and creating tasks for the workers from phone calls.
Ahoy! First time TaskRouter user here. I have about 500 Workers which meet the TargetWorkers expression for my TaskQueue. I also have a priority for each Worker, where this priority is any integer.
Ideally: I'd like Tasks to be assigned to my Workers based on the Worker's priority. Doesn't need to be exactly like this, but that's my ideal. Any ideas on how to build this out in Twilio TaskRouter?
Example: Given two available Workers A and B, where A has high priority (1025) and B has lower priority (2). I want the incoming task to be assigned to A whenever possible. The task should only go to Worker B if Worker A is not available, times out, or rejects the offer.
Is there documentation somewhere which explains the order in which TaskQueues select between available workers?