# CTI Panasonic NS1000 - Setup operativo Obiettivo: intercettare chiamate dal centralino Panasonic NS1000 (CSTA porta 33333) e creare/chiudere automaticamente Post-it in NetGescon con filtro rubrica. ## Prerequisiti verificati - Connessione TCP PBX CSTA: `192.168.0.101:33333` raggiungibile. - Modello centralino: Panasonic NS1000. ## 1) Configurazione applicazione NetGescon Aggiungi in `.env` del nodo applicativo: ```env NETGESCON_CTI_SHARED_TOKEN= ``` Poi: ```bash cd /home/michele/netgescon/netgescon-day0 php artisan optimize:clear php artisan config:clear php artisan route:clear ``` ## 2) Endpoint disponibili - `POST /api/v1/cti/panasonic/incoming` - crea Post-it chiamata in `chiamate_post_it` - fa match automatico numero -> `rubrica_universale` - `POST /api/v1/cti/panasonic/call-ended` - chiude automaticamente il Post-it aperto (match su `event_id`, fallback su numero) - salva `esito`, `durata_secondi`, `chiusa_il` - `GET /api/v1/cti/panasonic/lookup?phone=...` - solo lookup rubrica (match yes/no) Autenticazione: header `X-CTI-Token: `. ## 3) Comando server web prova (porta 8000) ```bash cd /home/michele/netgescon/netgescon-day0 php artisan serve --host=0.0.0.0 --port=8000 ``` ## 4) Listener terminale per vedere payload grezzi Metti questo listener in ascolto e punta il PBX a `http://:8099` per vedere esattamente i dati in arrivo. ```bash cd /home/michele/netgescon/netgescon-day0 bash scripts/ops/netgescon-cti-listener.sh --port 8099 ``` ## 5) Test rapido terminale (incoming + call-ended) ```bash cd /home/michele/netgescon/netgescon-day0 bash scripts/ops/netgescon-panasonic-csta-test.sh \ --pbx-ip 192.168.0.101 \ --pbx-port 33333 \ --app-url http://127.0.0.1:8000 \ --token "" \ --phone "+393331112233" \ --ext "101" \ --duration 90 \ --outcome "risposta" ``` ## 6) Esempio comandi da usare lato interfaccia centralino Se il centralino puo inviare HTTP su evento incoming call, usa: ```bash curl -sS -X POST "http://:8000/api/v1/cti/panasonic/incoming" \ -H "Content-Type: application/json" \ -H "X-CTI-Token: " \ -d '{ "phone": "", "name": "", "direction": "in_arrivo", "called_extension": "", "event_id": "", "note": "evento CSTA NS1000" }' ``` Per filtro rubrica (prima del popup interno): ```bash curl -sS "http://:8000/api/v1/cti/panasonic/lookup?phone=" \ -H "X-CTI-Token: " ``` Per evento fine chiamata (chiusura automatica Post-it): ```bash curl -sS -X POST "http://:8000/api/v1/cti/panasonic/call-ended" \ -H "Content-Type: application/json" \ -H "X-CTI-Token: " \ -d '{ "phone": "", "event_id": "", "outcome": "risposta", "duration_seconds": 83, "ended_at": "2026-03-11T10:20:00+01:00", "note": "evento call-ended NS1000" }' ``` ## 7) Cosa fa il match numeri - normalizza il numero (es. `+39`, `0039`, spazi, trattini) - confronta le ultime 7 cifre con: - `telefono_cellulare` - `telefono_ufficio` - `telefono_casa` - `telefono_cellulare_nazionale` ## 8) Dev + staging sulla stessa macchina (.200) - Sviluppo consigliato: `http://127.0.0.1:8000` - Staging consigliato: `http://127.0.0.1:8001` Comandi esempio: ```bash # sviluppo cd /home/michele/netgescon/netgescon-day0 php artisan serve --host=0.0.0.0 --port=8000 # staging (altro terminale, altra working copy o env staging) cd /home/michele/netgescon/netgescon-day0 APP_ENV=staging php artisan serve --host=0.0.0.0 --port=8001 ``` Nel PBX configura URL diversi per ambiente, mantenendo stesso payload/token o token distinti. ## 9) Step successivo consigliato 1. Agganciare evento reale CSTA incoming. 2. Agganciare evento call-ended per aggiornare `esito` e durata. 3. Mostrare popup operatore in Filament con scheda rubrica trovata.