---
title: "Conector de Twilio Flex"
description: "Guía completa de integración con Twilio Flex para sincronizar interacciones del contact center, actividad de los agentes y conversaciones con los clientes con Brevo a través de Tajo."
url: https://tajo.io/es/docs/connectors/custom/twilio-flex/
markdown: https://tajo.io/es/docs/connectors/custom/twilio-flex.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Twilio Flex

Estado del conector: Planificado Aún no está construido. Tajo no ejecuta este conector hoy.

| Campo de origen | Campo de destino | Valor de ejemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Conecta tu contact center de Twilio Flex con Brevo para unificar el historial de interacciones con el cliente, activar flujos de marketing posteriores a la conversación y obtener analíticas de engagement basadas en soporte a través de Tajo.

## Resumen

| Propiedad | Valor |
| --- | --- |
| **Plataforma** | Twilio Flex |
| **Categoría** | Personalizada |
| **Complejidad de configuración** | Avanzada |
| **Integración oficial** | No |
| **Datos sincronizados** | Clientes, Conversaciones, Eventos |
| **APIs utilizadas** | Flex API, Conversations API, TaskRouter API |
| **Autenticación** | Account SID + Auth Token / API Key |
| **URL base** | `https://flex-api.twilio.com` |

## Funcionalidades

- **Sincronización de conversaciones** - Reenvía interacciones de voz, SMS, WhatsApp y chat al timeline de Brevo
- **Enriquecimiento del perfil de cliente** - Sincroniza datos de cliente de Flex con atributos de contacto de Brevo
- **Campañas post-interacción** - Activa workflows de Brevo al finalizar conversaciones de soporte
- **Seguimiento de eventos CSAT** - Sincroniza los resultados de encuestas de satisfacción como eventos de Brevo
- **Datos de actividad del agente** - Rastrea las métricas de rendimiento de los agentes para el reporting operativo
- **Analítica de colas** - Reenvía datos de tiempo de espera y abandono para optimizar la experiencia

## Requisitos previos

Antes de empezar, asegúrate de tener:

1. Una cuenta de Twilio con Flex habilitado
2. Tu Twilio Account SID y Auth Token
3. Una instancia de Flex con canales activos (voz, SMS, chat o WhatsApp)
4. Un workspace de TaskRouter configurado
5. Una cuenta de Brevo con acceso a la API
6. Una cuenta de Tajo con suscripción activa

## Autenticación

Twilio Flex usa los métodos de autenticación estándar de Twilio.

### Credenciales de cuenta

```bash
# Basic Auth: Account SID as username, Auth Token as password
curl -X GET "https://flex-api.twilio.com/v1/Configuration" \
  -u "$TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN"
```

### API Key (recomendada para producción)

1. Ve a **Twilio Console** > **Account** > **API keys & tokens**
2. Haz clic en **Create API Key**
3. Selecciona el tipo de clave **Standard**
4. Guarda el SID y el Secret de forma segura

```bash
curl -X GET "https://flex-api.twilio.com/v1/Configuration" \
  -u "$TWILIO_API_KEY_SID:$TWILIO_API_KEY_SECRET"
```

Auth Token vs API Key

Tu Auth Token tiene acceso total a la cuenta. Para producción, usa API Keys con alcance limitado. Las API Keys se pueden revocar individualmente sin afectar a otras integraciones.

### Conectar con Tajo

```bash
tajo connectors install twilio-flex \
  --account-sid $TWILIO_ACCOUNT_SID \
  --auth-token $TWILIO_AUTH_TOKEN \
  --flex-flow-sid $TWILIO_FLEX_FLOW_SID
```

## Configuración

### Configuración básica

```yaml
connectors:
  twilio_flex:
    enabled: true
    account_sid: "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    flex_flow_sid: "FOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

    sync:
      conversations: true
      tasks: true
      customers: true
      csat: true
      agent_activity: false

    lists:
      support_contacts: 32
      csat_respondents: 33

    channels:
      - voice
      - sms
      - whatsapp
      - webchat
```

### Asignación de campos

Asocia los datos de clientes e interacciones de Flex con los atributos de Brevo:

```yaml
field_mapping:
  # Customer fields
  identity: FLEX_IDENTITY
  friendly_name: FIRSTNAME
  attributes.email: email
  attributes.phone: SMS

  # Interaction metrics
  last_conversation_date: LAST_SUPPORT_DATE
  total_conversations: SUPPORT_TICKET_COUNT
  avg_wait_time: AVG_WAIT_TIME
  last_csat_score: CSAT_SCORE
  preferred_channel: PREFERRED_CHANNEL

  # Custom attributes
  customer_tier: VIP_TIER
  account_id: ACCOUNT_ID
```

### Asignación de eventos

```yaml
event_mapping:
  task.created: SUPPORT_REQUESTED
  task.completed: SUPPORT_RESOLVED
  task.canceled: SUPPORT_ABANDONED
  conversation.ended: CONVERSATION_ENDED
  survey.completed: CSAT_SUBMITTED
```

## Endpoints de la API

Tajo se integra con los siguientes endpoints de Twilio Flex y APIs relacionadas:

| Endpoint | Método | API | Propósito |
| --- | --- | --- | --- |
| `/v1/Configuration` | GET | Flex | Obtener la configuración de Flex |
| `/v1/Interactions` | GET | Flex | Listar interacciones |
| `/v1/Channels` | GET | Flex | Listar canales de Flex |
| `/v1/WebChannels` | POST | Flex | Crear un canal de chat web |
| `/v1/Conversations` | GET | Conversations | Listar conversaciones |
| `/v1/Conversations/{sid}/Messages` | GET | Conversations | Listar mensajes de una conversación |
| `/v1/Conversations/{sid}/Participants` | GET | Conversations | Listar participantes |
| `/v1/Workspaces/{sid}/Tasks` | GET | TaskRouter | Listar tasks |
| `/v1/Workspaces/{sid}/Workers` | GET | TaskRouter | Listar workers (agentes) |
| `/v1/Workspaces/{sid}/TaskQueues` | GET | TaskRouter | Listar colas de tasks |
| `/v1/Workspaces/{sid}/Events` | GET | TaskRouter | Listar eventos del workspace |

## Ejemplos de código

### Inicializar el conector

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

await tajo.connectors.connect('twilio-flex', {
  accountSid: process.env.TWILIO_ACCOUNT_SID,
  authToken: process.env.TWILIO_AUTH_TOKEN,
  flexFlowSid: process.env.TWILIO_FLEX_FLOW_SID
});
```

### Sincronizar el historial de conversaciones

```javascript
await tajo.connectors.sync('twilio-flex', {
  type: 'incremental',
  resources: ['conversations'],
  since: '2024-01-01',
  channels: ['voice', 'sms', 'whatsapp']
});

const status = await tajo.connectors.status('twilio-flex');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T16:00:00Z',
//   conversationsTracked: 12400,
//   customersLinked: 8900,
//   agentsMonitored: 45
// }
```

### Trigger de campaña post-conversación

```javascript
// Trigger a Brevo follow-up after a support conversation ends
app.post('/webhooks/flex/task-complete', async (req, res) => {
  const task = req.body;

  await tajo.connectors.handleEvent('twilio-flex', {
    type: 'task.completed',
    payload: {
      taskSid: task.TaskSid,
      customerEmail: task.TaskAttributes?.email,
      channel: task.TaskChannelUniqueName,
      duration: task.Age,
      queueName: task.TaskQueueFriendlyName
    }
  });

  res.status(200).send('OK');
});
```

### Integración con Flex Plugin

```javascript
// Inside a Flex UI Plugin - send data to Tajo
import { FlexPlugin } from '@twilio/flex-plugin';

class TajoPlugin extends FlexPlugin {
  init(flex, manager) {
    flex.Actions.addListener('afterCompleteTask', async (payload) => {
      await fetch('https://api.example.com/webhooks/flex/task-complete', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({
          TaskSid: payload.task.sid,
          TaskAttributes: payload.task.attributes,
          TaskChannelUniqueName: payload.task.taskChannelUniqueName,
          Age: payload.task.age
        })
      });
    });
  }
}
```

Caution

La dirección `example.com` de arriba es un marcador de posición hasta que el endpoint de Tajo esté disponible.

## Límites de velocidad

Twilio aplica límites de velocidad en sus APIs:

| API | Límite de velocidad | Notas |
| --- | --- | --- |
| **Flex API** | 100 peticiones/segundo | Por cuenta |
| **Conversations API** | 100 peticiones/segundo | Por cuenta |
| **TaskRouter API** | 30 lecturas/segundo | Por workspace |
| **TaskRouter Events** | 20 peticiones/segundo | Por workspace |

Event Streams

Para procesar eventos de alto volumen, considera usar Twilio Event Streams en lugar de hacer polling de los eventos de TaskRouter. Event Streams envía los eventos en tiempo real mediante webhooks o Kinesis.

## Resolución de problemas

### Problemas habituales

| Problema | Causa | Solución |
| --- | --- | --- |
| 401 Unauthorized | SID o token no válidos | Verifica Account SID y Auth Token en la Twilio Console |
| 403 Forbidden | Flex no habilitado | Asegúrate de que Flex esté activado en tu cuenta de Twilio |
| Conversaciones ausentes | Rango de fechas incorrecto | Amplía el rango de sincronización o comprueba el estado de la conversación |
| Tasks no rastreadas | Workspace de TaskRouter incorrecto | Verifica que el SID del workspace sea correcto |
| El plugin no se dispara | Listener no registrado | Comprueba que el Flex plugin esté desplegado y activo |

### Modo depuración

```yaml
connectors:
  twilio_flex:
    debug: true
    log_level: verbose
    log_api_calls: true
```

### Probar la conexión

```bash
tajo connectors test twilio-flex
# ✓ Flex API connection successful
# ✓ Conversations API accessible
# ✓ TaskRouter workspace found
# ✓ Agent list readable
# ✓ Queue configuration loaded
```

## Buenas prácticas

1. **Usa API Keys en lugar de Auth Tokens** - Las API Keys se pueden limitar y revocar individualmente
2. **Aprovecha Event Streams** - Los eventos push son más eficientes que hacer polling de TaskRouter
3. **Crea un Flex Plugin** - Usa un UI plugin para capturar eventos de finalización de tasks en tiempo real
4. **Asigna los canales de forma coherente** - Normaliza los datos de voz, SMS y chat en eventos unificados de Brevo
5. **Rastrea las puntuaciones CSAT** - Sincroniza los datos de satisfacción con Brevo para segmentar por experiencia
6. **Monitoriza las métricas de cola** - Usa los datos de tiempo de espera para activar comunicación proactiva con el cliente

## Seguridad

- **Account SID + Auth Token** - Autenticación estándar de Twilio
- **API Keys** - Credenciales no-root revocables para uso en producción
- **Solo HTTPS** - Toda la comunicación con la API se cifra vía TLS 1.2+
- **Validación de webhooks** - Verifica las firmas de webhook de Twilio con `X-Twilio-Signature`
- **Cumplimiento PCI** - Twilio Flex cumple con PCI DSS Nivel 1
- **Almacenamiento cifrado** - Credenciales cifradas en reposo en Tajo

## Recursos relacionados

- [Conector de Gorgias](https://tajo.io/es/docs/connectors/support/gorgias)
- [Conector de Jira](https://tajo.io/es/docs/connectors/custom/jira)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
- [API de contactos de Brevo](https://tajo.io/es/docs/contact-management)
