feat: implement Call Center queues (mod_callcenter)
- Investigated the real callcenter_config command surface via
'help callcenter_config' on the running FreeSWITCH before writing any
code: queues only have load/unload/reload (static XML + reload, no
'queue add' exists), while agents and tiers are fully dynamic via ESL
commands (agent add, tier add) -- no file involved. This shapes the next
phase (Agents/Tiers) differently from this one.
- queues table (tenant-scoped, RLS): strategy, moh/announce, wait times,
tier rules, discard/abandoned handling, skip-agents-with-external-calls,
recording_enabled
- packages/telephony: buildQueueXml()
- infrastructure/freeswitch: our own callcenter.conf.xml override (empties
the vanilla static agents/tiers -- those become fully dynamic in the next
phase) that includes callcenter_queues.conf.d/*.xml via X-PRE-PROCESS,
same pattern as the Sofia gateway directory
- apps/api/src/queues: CRUD (POST/GET/GET:id/DELETE) using the queues.view/
.manage permissions already in the seed
- b2bcall-fs-config (queue-sync.ts): one XML file per queue on a shared
volume, synced via Redis pub/sub (b2bcall:queues:sync) on create/delete
and once at boot -- same shape as trunk-sync.ts
- confirmed manually against the real FreeSWITCH, before coding the sync
logic: 'queue load <name>' fails ('Invalid Queue not found!') for a file
added after boot -- needs 'reloadxml' first to repopulate the in-memory
XML tree from disk; after that, 'queue reload <name>' alone handles both
create and update, no need to distinguish load vs reload
- verified end-to-end: created a queue (ROUND_ROBIN, maxWaitTime=120,
discardAbandonedAfter=90), 'callcenter_config queue list' showed the
correct values on the FreeSWITCH side; deleted it, list went back empty
docs/QUEUES.md
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
<configuration name="callcenter.conf" description="CallCenter">
|
||||
<settings>
|
||||
</settings>
|
||||
|
||||
<queues>
|
||||
<!-- Filas geradas pelo b2bcall-fs-config (uma por arquivo, mesmo padrao
|
||||
dos gateways Sofia em sip_profiles/external/*.xml). Nunca editar
|
||||
manualmente — agente.md secao 50-51. -->
|
||||
<X-PRE-PROCESS cmd="include" data="callcenter_queues.conf.d/*.xml"/>
|
||||
</queues>
|
||||
|
||||
<!-- Agentes e tiers sao 100% dinamicos via `callcenter_config agent/tier
|
||||
add` (ESL) — nao ficam em XML (fase Agents/Tiers, ainda nao
|
||||
implementada). -->
|
||||
<agents>
|
||||
</agents>
|
||||
<tiers>
|
||||
</tiers>
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user