A queue is where callers wait until an agent is free. Each queue has a routing strategy, member agents, an optional required skill, a maximum size and its own hold audio. Bind an Edesy phone number to a queue so that calls to the number join it. Create queues in the admin portal or with the API.
Queue settings#
| Setting | API field | Values | Default |
|---|---|---|---|
| Name | name |
1-255 characters, unique per workspace | required |
| Description | description |
text | empty |
| Phone number | phone_number_id |
ID of an Edesy number in your workspace | none |
| Routing strategy | routing_strategy |
round_robin, longest_idle, least_occupied, skill_based |
round_robin |
| Required skill | required_skill_id |
skill ID, used by skill_based |
none |
| Minimum skill level | min_skill_level |
1-10 | 1 |
| Max callers waiting | max_queue_size |
1-500 | 50 |
| Service-level target | service_level_target_percent |
1-100 | 80 |
| Hold music file | moh_audio_url |
public URL of an audio file | none (spoken hold message) |
| Record calls | record_calls |
true / false | true |
| Active | is_active |
true / false | true |
How a queue works#
- A call arrives on the number bound to the queue.
- The caller is placed in the queue if fewer than
max_queue_sizecallers are waiting. Otherwise they hear "All our agents are busy right now. Please call back shortly." and the call ends. - Every 2 seconds the dispatcher checks for waiting callers and members who are Available.
- The strategy picks one agent and that agent's browser rings.
- Answered: the caller is bridged to the agent. Not answered in 20 seconds: the call returns to the queue and the next agent is tried. See Hold music and ring-no-answer.
Create a queue#
curl -X POST https://voice-api.edesy.in/v1/ccaas/queues \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Support - Hindi",
"routing_strategy": "skill_based",
"required_skill_id": "SKILL_ID",
"min_skill_level": 3,
"max_queue_size": 50,
"service_level_target_percent": 80
}'
Add members#
In the portal, open the queue and use Members > Add Member. With the API:
curl -X POST https://voice-api.edesy.in/v1/ccaas/queues/QUEUE_ID/members \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"agent_id": "AGENT_ID", "priority": 5}'
Remove a member with DELETE/v1/ccaas/queues/QUEUE_ID/members/AGENT_ID. An agent can belong to many queues.
Bind a phone number#
Set phone_number_id on the queue:
curl -X PATCH https://voice-api.edesy.in/v1/ccaas/queues/QUEUE_ID \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"phone_number_id": "PHONE_NUMBER_ID"}'
Find the number's ID with GET/v1/phone-numbers. Leave the number's own inbound target (webhook, SIP, IVR flow and so on) unset so calls reach the queue. The queue must be active.
Live queue status#
The queue cards in the portal refresh every 10 seconds and show callers waiting, longest wait, agents available out of total, and today's service level. The same data is at GET/v1/ccaas/queues/QUEUE_ID/status.
FAQ#
How many queues can I create?#
There is no fixed queue limit. Queue names must be unique in a workspace.
Can one number feed several queues?#
No. A number is bound to one queue. Use separate numbers for separate queues, or put an IVR Studio menu in front.
Can an agent be in more than one queue?#
Yes. Add the agent as a member of each queue.
What happens when no member is available?#
The caller keeps waiting and hears the hold message or music until an agent becomes available or the caller hangs up. A caller who hangs up while waiting is counted as abandoned.
What is the service-level target?#
The percentage of answered calls you want answered within 20 seconds. The portal shows today's service level in green when it meets the target and red when it does not.
Does deleting a queue delete its call history?#
Deleting a queue deactivates it. Historical reports keep its data.
Can I pause a queue?#
Set is_active to false. Calls to its number are then not queued.