Skip to content

v2.5.0

Choose a tag to compare

@mwolff44 mwolff44 released this 25 Jun 11:40
578215b

Added

  • Per-queue agent connect / disconnect for supervisors — two new REST endpoints on the wazo-calld plugin:

    Method Path Caller ACL
    PUT /queues/{queue_name}/connect calld.queues.{queue_name}.connect.update
    PUT /queues/{queue_name}/disconnect calld.queues.{queue_name}.disconnect.update

    Body {"agent_id": <int>}, 204 on success. The endpoint acts as an authorization proxy + delegation to wazo-agentd: the caller is authorized server-side — the token's user must be an agent that is itself a member of the target queue (resolved via confd user → agent → queue roster) — then the request is delegated to agentd (agent_login_to_queue / agent_logoff_from_queue). The queue_id sent to agentd comes from the supervisor's own roster, never from the request body, and all confd/agentd calls are tenant-scoped.

    No AMI action, no in-memory state mutation and no new bus event: the change propagates through the existing QueueMemberAdded / QueueMemberRemoved events and the queue_agents_status payload.

  • Two agentd.agents.*.queues.*.{login,logoff}.update ACL on the wazo-calld service token (etc/wazo-auth-keys/conf.d/call_queue.yml).

Error mapping

agentd outcome HTTP
success 204
ALREADY_IN_QUEUE / NOT_IN_QUEUE 204 (idempotent — target state reached)
NOT_LOGGED (no active session) 400
NO_SUCH_QUEUE / NO_SUCH_AGENT 404
supervisor not a member of the queue 403
any other agentd error 502

Fixes #3.


Full changelog: v2.4.1...v2.5.0