feat: add trunks and extensions CRUD with realtime PJSIP provisioning
- apps/api/src/telephony: TelephonyModule (conexao AMI da API para comandos de controle) + PjsipRealtimeService (unico ponto de escrita nas tabelas realtime do schema 'asterisk' via Prisma $executeRaw parametrizado) - apps/api/src/trunks: CRUD completo (tipos IP/AUTH/REGISTRATION), secret cifrado em repouso (AES-256-GCM), endpoint de teste de status via PJSIPShowContacts/pjsip show registration - apps/api/src/extensions: CRUD completo, senha SIP gerada automaticamente, endpoint de reset, nunca reexibe a senha apos a criacao - apps/api/src/monitoring: GET /api/monitoring/extensions com prioridade de cor (agente.md secao 15) a partir do ExtensionState alimentado por apps/asterisk-events - health check agora reporta status real do Asterisk/AMI via heartbeat do asterisk-events no Redis, sem precisar de conexao AMI propria para isso Testado ponta a ponta contra o Asterisk real: ramal e tronco criados via API aparecem imediatamente via 'pjsip show endpoint' sem reload (realtime funcionando), secret nunca retornado pela API, exclusao em cascata confirmada (ps_endpoints/ps_auths/ps_aors/ps_contacts/ps_registrations).
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
"dependencies": {
|
||||
"@b2bcall/database": "workspace:*",
|
||||
"@b2bcall/shared": "workspace:*",
|
||||
"@b2bcall/telephony": "workspace:*",
|
||||
"@fastify/cookie": "^11.0.2",
|
||||
"@fastify/helmet": "^13.0.1",
|
||||
"@fastify/static": "^8.0.4",
|
||||
@@ -29,6 +30,7 @@
|
||||
"@nestjs/config": "^4.0.2",
|
||||
"@nestjs/core": "^11.0.1",
|
||||
"@nestjs/jwt": "^11.0.0",
|
||||
"@nestjs/mapped-types": "^2.1.0",
|
||||
"@nestjs/platform-fastify": "^11.0.1",
|
||||
"@nestjs/swagger": "^11.2.0",
|
||||
"@nestjs/terminus": "^11.0.0",
|
||||
|
||||
Reference in New Issue
Block a user