Inbox
El Inbox unificado centraliza conversaciones de múltiples canales (email, WhatsApp, SMS) en una sola interfaz.
Canales soportados
| Canal | Proveedor | Estado |
|---|---|---|
| WhatsApp Business API | ✅ | |
| Amazon SES | ✅ | |
| SMS | Twilio | ✅ |
Conversaciones
Modelo
{
"id": "uuid",
"channel": "whatsapp",
"name": "Juan Pérez",
"handle": "+51987654321",
"subject": "Consulta sobre pedido",
"status": "open",
"assigned_to": "uuid-staff",
"priority": "high",
"last_message": "Gracias por la ayuda",
"last_message_at": "2026-04-08T12:00:00Z",
"unread_count": 3,
"sla_tone": "amber"
}
Estados de conversación
| Estado | Descripción |
|---|---|
open | Abierta, esperando respuesta |
snoozed | Pausada temporalmente |
closed | Cerrada |
Endpoints del Inbox
Vista principal
GET /admin/inbox
Parámetros:
| Nombre | Tipo | Descripción |
|---|---|---|
channel | string | Filtrar por canal |
view | string | all, mine, unassigned |
status | string | open, snoozed, closed |
q | string | Buscar en nombre, asunto, mensaje |
conv | uuid | Conversación activa |
Ver thread
GET /admin/inbox/thread?conv=:id
Enviar mensaje
POST /admin/inbox/conv/:id/messages
| Campo | Requerido | Tipo | Descripción |
|---|---|---|---|
body | sí | string | Contenido del mensaje |
attachments | no | JSON | Adjuntos |
internal | no | bool | true = nota interna |
Subir adjunto
POST /admin/inbox/conv/:id/attach
Multipart form, max 25MB.
Sugerencia IA
POST /admin/inbox/conv/:id/suggest
Genera una respuesta sugerida usando Gemini.
Convertir a reclamo
POST /admin/inbox/conv/:id/to-complaint
Crea una entrada en el Libro de Reclamaciones.
Vincular contacto CRM
POST /admin/inbox/conv/:id/link-contact
Desvincular contacto
POST /admin/inbox/conv/:id/unlink-contact
Asignar agente
POST /admin/inbox/conv/:id/assign
Snooze
POST /admin/inbox/conv/:id/snooze
Cerrar
POST /admin/inbox/conv/:id/close
Widget flotante
El inbox tiene un widget compacto de 2 columnas para uso embebido:
| Endpoint | Descripción |
|---|---|
GET /admin/inbox/widget | Widget principal |
GET /admin/inbox/widget/thread | Thread del widget |
GET /admin/inbox/widget/unread-count | Contador de no leídos |
Configuración
Ajustes generales
GET /admin/inbox/settings
POST /admin/inbox/settings/general
| Campo | Tipo | Descripción |
|---|---|---|
bh_start | time | Inicio horario laboral |
bh_end | time | Fin horario laboral |
weekend_open | bool | Abierto sáb/dom |
auto_reply | bool | Respuesta automática fuera de horario |
round_robin | bool | Asignación round-robin |
notify_slack | bool | Notificar en Slack |
sla_first | int | SLA primera respuesta (minutos) |
sla_resolution | int | SLA resolución (horas) |
sla_warning | int | % de SLA para warning |
Conectar canal
POST /admin/inbox/settings/channel/:channel/connect
Configurar credenciales
POST /admin/inbox/settings/channel/:channel/config
Probar email
POST /admin/inbox/settings/email/test
Webhooks entrantes (públicos)
| Endpoint | Canal | Descripción |
|---|---|---|
GET /hooks/whatsapp/:slug | Verificación del webhook | |
POST /hooks/whatsapp/:slug | Mensaje entrante | |
POST /hooks/email | Email entrante (SES) | |
POST /hooks/sms/:slug | SMS | SMS entrante (Twilio) |
POST /hooks/sms/:slug/status | SMS | Estado de entrega |