#!/usr/bin/env bash set -euo pipefail # Simple test helper for Panasonic NS1000 CSTA connectivity and webhook simulation. PBX_IP="192.168.0.101" PBX_PORT="33333" APP_BASE_URL="http://127.0.0.1:8000" CTI_TOKEN="${NETGESCON_CTI_SHARED_TOKEN:-}" TEST_PHONE="+393331112233" TEST_EXT="101" TEST_DURATION="75" TEST_OUTCOME="risposta" usage() { cat <<'EOF' Usage: bash scripts/ops/netgescon-panasonic-csta-test.sh [options] Options: --pbx-ip PBX IP (default: 192.168.0.101) --pbx-port PBX CSTA port (default: 33333) --app-url NetGescon base URL (default: http://127.0.0.1:8000) --token Shared token (or env NETGESCON_CTI_SHARED_TOKEN) --phone Test caller number --ext Test called extension --duration Test call duration in seconds (default: 75) --outcome Test call outcome (default: risposta) Example: bash scripts/ops/netgescon-panasonic-csta-test.sh --token 'my-secret-token' EOF } while [[ $# -gt 0 ]]; do case "$1" in --pbx-ip) PBX_IP="$2"; shift 2 ;; --pbx-port) PBX_PORT="$2"; shift 2 ;; --app-url) APP_BASE_URL="$2"; shift 2 ;; --token) CTI_TOKEN="$2"; shift 2 ;; --phone) TEST_PHONE="$2"; shift 2 ;; --ext) TEST_EXT="$2"; shift 2 ;; --duration) TEST_DURATION="$2"; shift 2 ;; --outcome) TEST_OUTCOME="$2"; shift 2 ;; -h|--help) usage; exit 0 ;; *) echo "Unknown option: $1" >&2; exit 1 ;; esac done if [[ -z "$CTI_TOKEN" ]]; then echo "Missing token: set NETGESCON_CTI_SHARED_TOKEN or pass --token" >&2 exit 1 fi echo "[1/3] Verifica raggiungibilita CSTA $PBX_IP:$PBX_PORT" nc -vz "$PBX_IP" "$PBX_PORT" echo "[2/3] Lookup numero in rubrica" curl -sS "${APP_BASE_URL%/}/api/v1/cti/panasonic/lookup?phone=${TEST_PHONE}" \ -H "X-CTI-Token: ${CTI_TOKEN}" | sed -n '1,120p' EVENT_ID="test-$(date +%s)" echo "[3/4] Simulazione evento chiamata in arrivo -> Post-it" curl -sS -X POST "${APP_BASE_URL%/}/api/v1/cti/panasonic/incoming" \ -H "Content-Type: application/json" \ -H "X-CTI-Token: ${CTI_TOKEN}" \ -d "{\"phone\":\"${TEST_PHONE}\",\"direction\":\"in_arrivo\",\"called_extension\":\"${TEST_EXT}\",\"event_id\":\"${EVENT_ID}\",\"note\":\"test webhook panasonic incoming\"}" | sed -n '1,160p' echo "[4/4] Simulazione evento call-ended -> chiusura automatica Post-it" curl -sS -X POST "${APP_BASE_URL%/}/api/v1/cti/panasonic/call-ended" \ -H "Content-Type: application/json" \ -H "X-CTI-Token: ${CTI_TOKEN}" \ -d "{\"phone\":\"${TEST_PHONE}\",\"event_id\":\"${EVENT_ID}\",\"outcome\":\"${TEST_OUTCOME}\",\"duration_seconds\":${TEST_DURATION},\"ended_at\":\"$(date -Iseconds)\",\"note\":\"test webhook panasonic call-ended\"}" | sed -n '1,200p' echo "Done"