Terminators
Scopo
I terminator rappresentano i trunk outbound lato supplier. Il modulo governa indirizzamento SIP verso carrier, tariffa provider, capacita', rewrite CLI/destinazione, health check e quality profile usato nei workflow NOC.
Dove
| Elemento | Valore |
|---|---|
| Route UI | /terminators, /terminators/new, /terminators/[id] |
| Voce di menu | Clients / Terminators |
| Componenti principali | apps/frontend/src/app/[locale]/(dashboard)/terminators/*, apps/frontend/src/components/terminators/*, apps/frontend/src/components/forms/terminator-form.tsx, apps/frontend/src/schemas/terminator.ts |
Campi & comportamento
| Campo | Significato | Validazione / comportamento |
|---|---|---|
name | Nome trunk supplier | Obbligatorio; max 120 nel drawer lista, max 255 nella modale detail. |
supplier_company_id / company_id | Company supplier | Obbligatoria; select da /api/v1/companies?limit=200. |
sip_uri | URI SIP di uscita | Obbligatorio in modale, deve iniziare con sip: o sips:; drawer separa host, port, transport e ricostruisce URI. |
provider_rate_id | Tariffa supplier | Select da /api/v1/tariffs?kind=supplier&limit=200; nel drawer e' obbligatoria se is_active e' true. |
tier | Classe trunk | Enum standard, premium, grey; filtrabile server-side. |
is_active | Abilitazione traffico | Checkbox; filtro server-side. |
techprefix | Prefisso tecnico in uscita | Opzionale, massimo 32 caratteri. |
techprefix_add_digits | Cifre da aggiungere | Opzionale, massimo 32 caratteri nella modale detail. |
preferred_codecs_out | Codec preferiti in uscita | CSV in input, inviato come array. |
max_channels, max_cps | Limiti capacita' | Interi positivi opzionali nella modale; max_channels nel drawer accetta intero non negativo e converte valori <= 0 a null. |
auth_type | Tipo autenticazione | Enum ip_only, digest. |
auth_vault_secret_id | Secret digest | Testo opzionale massimo 128 caratteri. |
inbound_ip_whitelist | IP autorizzati | CSV in input, array nel payload. |
caller_id_format | Formato CLI | Enum transparent, cc_num, plus_cc_num, custom. |
caller_id_custom_rule | Regola custom CLI | Testo opzionale. |
health_check_enabled, health_check_interval_s, health_check_status | Health check supplier | Checkbox, intervallo positivo, status unknown, up, degraded, down; filtro health server-side. |
| Quality profile | vendor_mail, cc_mail, vendor_skype, tgrp, qp_tech_prefix, qp_source_prefix, include_pai_header, preferred_codec_test | Email/testi con limiti dedotti dagli schema; include_pai_header default true, preferred_codec_test default Any available. |
coverage_tags, tags, notes | Coverage e metadata | CSV per tag; note opzionali. Il filtro fraud e' UI-only su tag contenenti fraud o high-risk. |
Azioni
| Azione | Dove | Effetto |
|---|---|---|
| Create da lista | /terminators, bottone New Terminator | Drawer TerminatorForm, POST /api/v1/terminators. |
| Create rapida | /terminators/new | Form dedicato con IP/port e quality profile, costruisce sip:{ip}:{port}, redirect a /terminators/{id}. |
| Edit detail | /terminators/[id], bottone Edit | Modale completa TerminatorModal, PATCH /api/v1/terminators/{id}. |
| Delete | /terminators/[id] | DELETE /api/v1/terminators/{id}; la UI non implementa re-challenge MFA su questa delete. |
| Ping all | /terminators, bottone Ping all (OPTIONS) | Best effort su ogni riga visibile con POST /api/v1/terminators/{id}/health-test; non esiste endpoint batch nel codice. |
| Rewrite rules | Tab Rewrite | Lista e create rewrite rule con sort order, regex, action, action value e preview client-side. |
| Health | Tab Health | Mostra health del terminator e KPI 24h da report CDR daily agg. |
API consumate
- List terminators, Get terminator, Create terminator, Update terminator, Delete terminator.
- List rewrite rules, Create rewrite rule, Update rewrite rule, Delete rewrite rule.
- List companies, List tariffs, List devices, List routing rules flat.
GET /api/v1/reports/cdr-daily-agg- KPI 24h nella tab Health, se endpoint disponibile; nell'API Reference generata del branch corrente non esiste un file MDX dedicato per questo endpoint.
Permessi/ruoli
La UI non mostra ruoli espliciti. A differenza di Companies e Originators, la delete terminator nel codice non effettua challenge MFA. I ruoli RBAC effettivi sono da verificare in backend/RBAC.
Stati & edge case
- Lista mostra banner se esistono terminator attivi senza provider rate, perche' il traffico supplier non e' instradabile.
- Filtro fraud e' solo client-side: usa
coverage_tagsetags, non un campo backend dedicato. Ping alle' un loop client-side su endpoint singoli; codice commenta che manca endpoint batch dedicato.current_load, ASR e ACD in lista sono placeholder o non esposti dal modello.- Tab Devices e Routing mostrano banner se i filtri
terminator_idnon sono supportati dagli endpoint. - Tab Health mostra placeholder KPI se
cdr_daily_aggnon e' disponibile. - Whitelist dedicata non esposta: la tab legge solo auth/whitelist dal record terminator.