netgescon-day0/docs/ai/restart/CTI-PANASONIC-NS1000-SETUP.md

145 lines
3.9 KiB
Markdown

# 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=<TOKEN_LUNGO_RANDOM>
```
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: <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://<IP_SERVER_200>: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 "<TOKEN_LUNGO_RANDOM>" \
--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://<IP_NETGESCON>:8000/api/v1/cti/panasonic/incoming" \
-H "Content-Type: application/json" \
-H "X-CTI-Token: <TOKEN_LUNGO_RANDOM>" \
-d '{
"phone": "<CALLING_NUMBER>",
"name": "<CALLER_NAME_OPTIONAL>",
"direction": "in_arrivo",
"called_extension": "<EXT>",
"event_id": "<PBX_EVENT_ID>",
"note": "evento CSTA NS1000"
}'
```
Per filtro rubrica (prima del popup interno):
```bash
curl -sS "http://<IP_NETGESCON>:8000/api/v1/cti/panasonic/lookup?phone=<CALLING_NUMBER>" \
-H "X-CTI-Token: <TOKEN_LUNGO_RANDOM>"
```
Per evento fine chiamata (chiusura automatica Post-it):
```bash
curl -sS -X POST "http://<IP_NETGESCON>:8000/api/v1/cti/panasonic/call-ended" \
-H "Content-Type: application/json" \
-H "X-CTI-Token: <TOKEN_LUNGO_RANDOM>" \
-d '{
"phone": "<CALLING_NUMBER>",
"event_id": "<PBX_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.