- packages/database: Agent, AgentSession, AgentStateEvent, AgentPauseEvent, PauseReason, Queue, QueueMember (agente.md secao 53) - apps/api/src/queues: CRUD de filas gerando queues.conf pelo mesmo padrao do dialplan (arquivo compartilhado + module reload app_queue.so), mas SEM membros estaticos no arquivo — membership eh 100% dinamica via AMI (evita duas fontes de verdade conflitantes) - apps/api/src/pause-reasons: CRUD de motivos de pausa - apps/api/src/agents: CRUD administrativo de agentes (1:1 com User) - apps/api/src/agent-console: maquina de estados do agente (LOGGED_IN/AVAILABLE/PAUSED), 'tela do agente' via login/available/pause/unpause/logout, cada transicao aciona AMI QueueAdd/QueuePause/QueueRemove de verdade e registra agent_state_events/agent_pause_events com inicio/fim - apps/api/src/monitoring: GET /api/monitoring/queues (chamadas aguardando, agentes logados/pausados/disponiveis via AMI QueueStatus ao vivo) — metricas historicas (TME/TMA/SLA) ficam para a Fase 7 Testado ponta a ponta contra o Asterisk real: fila criada aparece via 'queue show'; agente loga, fica disponivel (QueueAdd confirmado, membro dinamico visivel), pausa com motivo (confirmado 'paused:Almoco' ao vivo), despausa, desloga (QueueRemove confirmado, fila volta a 'No Members'). Disposicoes de chamada e Callback adiados para a Fase 6 (dependem de haver chamadas de campanha reais para classificar).
45 lines
1.7 KiB
Bash
45 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# Renderiza os templates de configuração (que contêm variáveis ${VAR}) usando
|
|
# as variáveis de ambiente do container, para nunca versionar segredos em
|
|
# texto puro nos arquivos .conf. /etc/asterisk já vem populado pelo `make
|
|
# samples` no build da imagem — aqui só sobrepomos/adicionamos os arquivos
|
|
# específicos do B2BCall (o restante dos samples permanece intacto).
|
|
set -euo pipefail
|
|
|
|
CONFIG_SRC=/etc/asterisk-templates
|
|
CONFIG_DST=/etc/asterisk
|
|
|
|
mkdir -p "$CONFIG_DST"
|
|
|
|
# odbc.ini é configuração do sistema (unixODBC), não do Asterisk.
|
|
if [ -e "$CONFIG_SRC/odbc.ini.tpl" ]; then
|
|
envsubst < "$CONFIG_SRC/odbc.ini.tpl" > /etc/odbc.ini
|
|
fi
|
|
|
|
for tpl in "$CONFIG_SRC"/*.conf.tpl; do
|
|
[ -e "$tpl" ] || continue
|
|
name="$(basename "$tpl" .tpl)"
|
|
envsubst < "$tpl" > "$CONFIG_DST/$name"
|
|
done
|
|
|
|
for f in "$CONFIG_SRC"/*.conf; do
|
|
[ -e "$f" ] || continue
|
|
name="$(basename "$f")"
|
|
cp "$f" "$CONFIG_DST/$name"
|
|
done
|
|
|
|
# extensions.conf/queues.conf incluem estes arquivos gerados pela aplicação
|
|
# — precisam existir mesmo vazios no primeiro boot, antes da primeira
|
|
# publicação (ver DialplanService / QueuesService).
|
|
mkdir -p /etc/asterisk-generated
|
|
if [ ! -e /etc/asterisk-generated/b2bcall-dialplan.conf ]; then
|
|
echo "; vazio até a primeira publicação em Telefonia -> Dialplan" > /etc/asterisk-generated/b2bcall-dialplan.conf
|
|
fi
|
|
if [ ! -e /etc/asterisk-generated/b2bcall-queues.conf ]; then
|
|
echo "; vazio até a primeira publicação em Call Center -> Filas" > /etc/asterisk-generated/b2bcall-queues.conf
|
|
fi
|
|
|
|
chown -R asterisk:asterisk "$CONFIG_DST" /var/lib/asterisk /var/log/asterisk /var/spool/asterisk /var/run/asterisk /etc/asterisk-generated
|
|
|
|
exec "$@"
|