Dashboard
0
Pendientes
0
Programadas
0
Completadas
0
Llamadas Hoy
Órdenes de Trabajo Recientes
Ver todas| ID | Título | Estado |
|---|
Resultados de Llamadas por Tienda
| Tienda | Total | Conf. | Rech. |
|---|
Órdenes de Trabajo
| ID | Título | Tienda | Estado | Asignación | Prioridad | Fecha Creación | Visitas | Acciones |
|---|
Template de Checklist
Historial de Llamadas
| ID | Orden de Trabajo | Dirección | Estado | Duración | Fecha | Acciones |
|---|
Arquitectura del Sistema
Twilio
ngrok
WebSocket
TwiML
TwiML
NORA CORE
FastAPI · Python 3.11 · :8000
Anthropic
PostgreSQL
REST · JWT
Sanctum
Sanctum
Optimaback
NORA API Secret (X-Api-Key)
Clave compartida entre el panel web y Optimaback. Se envía como header
X-Api-Key
en todas las peticiones autenticadas. Mismo valor que NORA_API_SECRET en .env.
Se guarda en localStorage del navegador.
Generar JWT para Laravel
Token de vida corta (5 min) firmado con
NORA_API_SECRET para que Optimaback dispare
llamadas sin exponer la clave maestra. Flujo:
Laravel firma JWT → POST /calls/initiate {token} → NORA valida → llama al técnico.
Credenciales Twilio
Cargando...
Para cambiar credenciales, edita
.env y reinicia el servidor.
Webhooks
Configura estas URLs en la consola de Twilio → Tu número → Voice Configuration.
Cargando...
Pipeline de Voz (ConversationRelay)
Técnico
Llamada entrante
→
Twilio STT
es-ES built-in
→
NORA (Claude)
claude-haiku-4-5 · 200t
→
Twilio TTS
es-ES · Google Neural
→
Técnico
Respuesta por voz
Optimaback (Laravel)
Cargando...
Token Sanctum
Token de Laravel Sanctum para consumir la API NoraIVR.
Se configura en
.env como EXTERNAL_API_TOKEN.
Sincronización de OTs
Descarga todas las OTs activas desde Optimaback y popula la BD local.
También se ejecuta automáticamente al arrancar el servidor y a diario a las 09:00 Madrid.
Flujo de Integración Laravel → NORA
1
Optimaback firma JWT con el secreto compartido
$token = JWT::encode(['ot_id' => $otId, 'exp' => time() + 300, 'iss' => 'optimaback'], env('NORA_SECRET'), 'HS256');
↓
2
POST /calls/initiate — NORA recibe y valida el JWT
Http::post(env('NORA_URL') . '/calls/initiate', ['token' => $token, 'ot_id' => $otId]);
↓
3
NORA resuelve OT → técnico → número → Twilio llama
→ BD local: OT.external_id → Visit → Technician.phone → Twilio.calls.create(to, from, twiml_url)
Voz activa de NORA
Cargando...
Filtrar:
Región:
Cargando catálogo...
Registros
Cargando...
Conexión
Cargando...