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

Total llamadas
Completadas
Rechazadas
Duración media

Historial de Llamadas

ID Orden de Trabajo Dirección Estado Duración Fecha Acciones

Arquitectura del Sistema

Twilio
Voice API
ngrok
Tunnel
WebSocket
TwiML
NORA CORE
FastAPI · Python 3.11 · :8000
Anthropic
claude-haiku-4-5
PostgreSQL
nora_db
REST · JWT
Sanctum
Optimaback
Laravel · Sanctum
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...