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:
9
apps/api/src/extensions/extensions.module.ts
Normal file
9
apps/api/src/extensions/extensions.module.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { ExtensionsController } from './extensions.controller';
|
||||
import { ExtensionsService } from './extensions.service';
|
||||
|
||||
@Module({
|
||||
controllers: [ExtensionsController],
|
||||
providers: [ExtensionsService],
|
||||
})
|
||||
export class ExtensionsModule {}
|
||||
Reference in New Issue
Block a user