Queues
Queues hold callers and distribute them to available agents, with music, position announcements and maximum wait times. Scopes queues:read / queues:write; real-time status with live:read.
Creating a queue
curl -s -X POST https://centralino.exovoip.it/api/v1/queues \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
-d '{"number":"700","name":"Vendite","strategy":"rrmemory","maxWaitS":300,
"announcePosition":true,
"members":[{"extensionId":12,"position":1,"penalty":0,"paused":false},
{"extensionId":13,"position":2,"penalty":1,"paused":false}],
"maxWaitDestination":{"type":"voicemail","extensionId":12}}'const { queue } = await pbx.queues.create({
number: '700',
name: 'Vendite',
strategy: 'rrmemory',
maxWaitS: 300,
announcePosition: true,
members: [
{ extensionId: 12, position: 1, penalty: 0, paused: false },
{ extensionId: 13, position: 2, penalty: 1, paused: false },
],
maxWaitDestination: { type: 'voicemail', extensionId: 12 },
});$queue = $pbx->queues->create([
'number' => '700',
'name' => 'Vendite',
'strategy' => 'rrmemory',
'maxWaitS' => 300,
'announcePosition' => true,
'members' => [
['extensionId' => 12, 'position' => 1, 'penalty' => 0, 'paused' => false],
['extensionId' => 13, 'position' => 2, 'penalty' => 1, 'paused' => false],
],
'maxWaitDestination' => ['type' => 'voicemail', 'extensionId' => 12],
])['queue'];queue = pbx.queues.create({
"number": "700",
"name": "Vendite",
"strategy": "rrmemory",
"maxWaitS": 300,
"announcePosition": True,
"members": [
{"extensionId": 12, "position": 1, "penalty": 0, "paused": False},
{"extensionId": 13, "position": 2, "penalty": 1, "paused": False},
],
"maxWaitDestination": {"type": "voicemail", "extensionId": 12},
})["queue"]| Field | Description |
|---|---|
strategy | ringall, linear, linear_progressive, leastrecent, fewestcalls, rrmemory, random |
members[] | Agents: extensionId, position, penalty (priority), paused |
agentTimeoutS, wrapupS | Ring time per agent and wrap-up time after each call |
announcePosition, announceHoldtime | Position and estimated wait time announcements |
maxCallers, maxWaitS | Queue limits, with maxWaitDestination when the wait expires |
emptyDestination, noAnswerDestination | No agent available / no answer |
voicemailDigit, callbackEnabled | Key to leave a voicemail or request a callback |
calendarId, recordMode | Queue business hours and recording |
Agents and real-time status
curl -s https://centralino.exovoip.it/api/v1/queues/5/live -H "X-API-Key: $EXOPBX_API_KEY"
curl -s -X PUT https://centralino.exovoip.it/api/v1/queues/5/members/12/pause \
-H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" -d '{"paused":true}'const { live } = await pbx.queues.live(5); // in attesa, attesa massima, operatori
await pbx.queues.pauseMember(5, 12, { paused: true });$live = $pbx->queues->live(5)['live'];
$pbx->queues->pauseMember(5, 12, ['paused' => true]);live = pbx.queues.live(5)["live"]
pbx.queues.pause_member(5, 12, {"paused": True})Detailed status for all queues (waiting callers, longest wait, agents paused or on a call) is also available in GET /v1/live/queues and in the queue.caller.join, queue.caller.leave and queue.member events (Real-time). Callback requests left by callers are at GET /v1/queues/:id/callbacks.
Endpoints
| Request | Scope | SDK method |
|---|---|---|
GET /v1/queues | queues:read | queues.list() |
POST /v1/queues | queues:write | queues.create() |
GET /v1/queues/:id | queues:read | queues.get() |
PATCH /v1/queues/:id | queues:write | queues.update() |
DELETE /v1/queues/:id | queues:write | queues.delete() |
GET /v1/queues/:id/live | live:read | queues.live() |
PUT /v1/queues/:id/members/:extensionId/pause | queues:write | queues.pauseMember() · py: queues.pause_member() |
GET /v1/queues/:id/callbacks | queues:read | queues.callbacks() |
