Integraciones

Servicios externos disponibles para automatizaciones

integracionesapiwebhookgooglemicrosoftzoomtwilioopenai

Integraciones

Las automatizaciones pueden conectarse con servicios externos para ampliar su funcionalidad.

Servicios Disponibles

CategoriaServicios
COMUNICACIONTwilio (SMS), WhatsApp, SES (Email), SendGrid
CALENDARIOGoogle Cal, Microsoft Cal, Zoom
IA/MLOpenAI (GPT-4), Embeddings
STORAGEAWS S3, Redis
WEBHOOKSIncoming, Outgoing
NOTIFICACIONESSlack, Push

Twilio (SMS y WhatsApp)

Configuracion

Servicio: TwilioService

Credenciales requeridas:

  • TWILIO_ACCOUNT_SID
  • TWILIO_AUTH_TOKEN
  • TWILIO_PHONE_NUMBER (para SMS)

Para WhatsApp:

  • TWILIO_WHATSAPP_NUMBER

Acciones Disponibles

// Enviar SMS
{
  "actionType": "SEND_SMS",
  "configuration": {
    "to": "{{postulant.phone}}",
    "message": "Tu entrevista es mañana a las {{event.time}}"
  }
}

// Enviar WhatsApp
{
  "actionType": "SEND_WHATSAPP",
  "configuration": {
    "to": "{{postulant.phone}}",
    "template": "interview_reminder",
    "templateVariables": {
      "1": "{{postulant.name}}",
      "2": "{{event.date}}"
    }
  }
}

Recibir Mensajes

Webhook configurado para recibir mensajes entrantes:

Endpoint: POST /api/webhooks/twilio/incoming

El sistema:

  • Identifica candidato por telefono
  • Crea/actualiza hilo de conversacion
  • Emite evento MESSAGE_RECEIVED
  • Trigger disponible para automatizaciones

Google Calendar

Configuracion

Servicio: GoogleCalendarService

Configuracion OAuth:

  • GOOGLE_CLIENT_ID
  • GOOGLE_CLIENT_SECRET
  • Callback: /api/google-calendar/callback

Permisos requeridos:

  • calendar.events
  • calendar.readonly
  • calendar.settings.readonly

Acciones Disponibles

// Crear evento
{
  "actionType": "CREATE_GOOGLE_EVENT",
  "configuration": {
    "calendarId": "{{user.googleCalendarId}}",
    "title": "Entrevista con {{postulant.name}}",
    "startTime": "{{availableSlot.start}}",
    "endTime": "{{availableSlot.end}}",
    "attendees": [
      "{{postulant.email}}",
      "{{interviewer.email}}"
    ],
    "conferenceData": {
      "type": "hangoutsMeet"
    }
  }
}

// Verificar disponibilidad
{
  "actionType": "CHECK_GOOGLE_AVAILABILITY",
  "configuration": {
    "calendarId": "{{user.googleCalendarId}}",
    "startTime": "{{now}}",
    "endTime": "{{now + 7 days}}",
    "duration": 60
  }
}

Sincronizacion

La sincronizacion es bidireccional:

Talivo a Google:

  • Eventos creados en Talivo se crean en Google
  • Modificaciones se reflejan
  • Cancelaciones se propagan

Google a Talivo (via webhook):

  • Eventos nuevos se detectan
  • Cambios se actualizan
  • Conflictos se notifican

Microsoft Calendar

Configuracion

Servicio: MicrosoftCalendarService

Configuracion OAuth:

  • MICROSOFT_CLIENT_ID
  • MICROSOFT_CLIENT_SECRET
  • MICROSOFT_TENANT_ID
  • Callback: /api/microsoft-calendar/callback

Permisos requeridos:

  • Calendars.ReadWrite
  • User.Read

Acciones Disponibles

// Crear evento en Outlook
{
  "actionType": "CREATE_MICROSOFT_EVENT",
  "configuration": {
    "title": "Entrevista: {{postulant.name}}",
    "startTime": "{{availableSlot.start}}",
    "duration": 60,
    "attendees": ["{{postulant.email}}"],
    "isOnlineMeeting": true // Crea link de Teams
  }
}

Zoom

Configuracion

Servicio: ZoomService

Credenciales:

  • ZOOM_CLIENT_ID
  • ZOOM_CLIENT_SECRET
  • ZOOM_ACCOUNT_ID
  • Callback: /api/zoom/callback

Permisos requeridos:

  • meeting:write
  • meeting:read
  • user:read

Acciones Disponibles

// Crear reunion Zoom
{
  "actionType": "CREATE_ZOOM_MEETING",
  "configuration": {
    "topic": "Entrevista {{job.title}} - {{postulant.name}}",
    "startTime": "{{event.startTime}}",
    "duration": 60,
    "settings": {
      "hostVideo": true,
      "participantVideo": true,
      "waitingRoom": true,
      "autoRecording": "cloud"
    }
  }
}

// Resultado disponible
{
  "joinUrl": "https://zoom.us/j/123...",
  "startUrl": "https://zoom.us/s/123...",
  "meetingId": 123456789,
  "password": "abc123"
}

OpenAI

Configuracion

Servicio: OpenAIService (via LangChain)

Credenciales:

  • OPENAI_API_KEY

Modelos disponibles:

  • gpt-4 (recomendado para respuestas)
  • gpt-3.5-turbo (rapido, economico)
  • text-embedding-ada-002 (embeddings)

Acciones Disponibles

// Generar respuesta con IA
{
  "actionType": "GENERATE_AI_RESPONSE",
  "configuration": {
    "model": "gpt-4",
    "prompt": "Genera un email de bienvenida para {{postulant.name}}...",
    "temperature": 0.7,
    "maxTokens": 500
  }
}

// Analizar CV
{
  "actionType": "ANALYZE_CV",
  "configuration": {
    "documentUrl": "{{document.url}}",
    "extractFields": ["skills", "experience", "education"]
  }
}

// Calcular Match Score
{
  "actionType": "CALCULATE_MATCH_SCORE",
  "configuration": {
    "candidateId": "{{postulant.id}}",
    "jobPositionId": "{{job.id}}"
  }
}

AWS SES (Email)

Configuracion

Servicio: SESService

Credenciales:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION

Configuracion:

  • Dominio verificado
  • Email de remitente verificado
  • Templates registrados

Acciones Disponibles

// Enviar email
{
  "actionType": "SEND_EMAIL",
  "configuration": {
    "to": "{{postulant.email}}",
    "template": "welcome_email",
    "variables": {
      "name": "{{postulant.name}}",
      "job": "{{job.title}}"
    }
  }
}

AWS S3 (Storage)

Configuracion

Servicio: S3Service

Credenciales:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_S3_BUCKET
  • AWS_REGION

Uso en Automatizaciones

// Subir archivo generado
{
  "actionType": "UPLOAD_TO_S3",
  "configuration": {
    "content": "{{generatedReport}}",
    "filename": "report_{{now | format:'YYYY-MM-DD'}}.pdf",
    "folder": "reports/{{company.id}}"
  }
}

// Generar URL firmada
{
  "actionType": "GET_SIGNED_URL",
  "configuration": {
    "key": "{{document.s3Key}}",
    "expiresIn": 3600
  }
}

Webhooks

Webhook Entrante

Recibir datos de sistemas externos:

Endpoint: POST /api/webhooks/custom/:webhookId

Configuracion:

  • URL unica por webhook
  • Secret para validacion
  • Headers requeridos
  • Mapeo de campos

Ejemplo:

{
  "id": "wh_123",
  "url": "/api/webhooks/custom/abc123",
  "secret": "sk_webhook_xyz",
  "trigger": "WEBHOOK_RECEIVED",
  "fieldMapping": {
    "candidateName": "$.data.name",
    "candidateEmail": "$.data.email"
  }
}

Webhook Saliente

// Enviar datos a sistema externo
{
  "actionType": "CALL_WEBHOOK",
  "configuration": {
    "url": "https://api.external.com/candidates",
    "method": "POST",
    "headers": {
      "Authorization": "Bearer {{secrets.API_KEY}}",
      "Content-Type": "application/json"
    },
    "body": {
      "name": "{{postulant.name}}",
      "email": "{{postulant.email}}",
      "status": "{{application.status}}"
    },
    "timeout": 30000,
    "retries": 3
  }
}

Slack

Configuracion

Integracion via Webhook:

  • SLACK_WEBHOOK_URL

O via App:

  • SLACK_BOT_TOKEN
  • SLACK_SIGNING_SECRET
  • Permisos: chat:write, channels:read

Acciones Disponibles

// Enviar mensaje a canal
{
  "actionType": "SEND_SLACK_MESSAGE",
  "configuration": {
    "channel": "#reclutamiento",
    "message": "Nueva aplicacion de {{postulant.name}} para {{job.title}}",
    "blocks": [
      {
        "type": "section",
        "text": {
          "type": "mrkdwn",
          "text": "*Nueva Aplicacion*"
        }
      },
      {
        "type": "section",
        "fields": [
          { "type": "mrkdwn", "text": "*Candidato:*\n{{postulant.name}}" },
          { "type": "mrkdwn", "text": "*Vacante:*\n{{job.title}}" }
        ]
      },
      {
        "type": "actions",
        "elements": [
          {
            "type": "button",
            "text": { "type": "plain_text", "text": "Ver Perfil" },
            "url": "{{postulant.profileUrl}}"
          }
        ]
      }
    ]
  }
}

Redis (Cache y Colas)

Uso Interno

Redis se usa para:

  • Cache de sesiones
  • Cola de ejecuciones (AgentQueueService)
  • Vector Store (VectorSearchService)
  • Rate limiting
  • Pub/Sub para eventos

En Automatizaciones

// Guardar en cache
{
  "actionType": "CACHE_SET",
  "configuration": {
    "key": "match_score_{{postulant.id}}_{{job.id}}",
    "value": "{{matchScore}}",
    "ttl": 86400 // 24 horas
  }
}

// Leer de cache
{
  "actionType": "CACHE_GET",
  "configuration": {
    "key": "match_score_{{postulant.id}}_{{job.id}}",
    "outputVariable": "cachedScore"
  }
}

Configurar Integraciones

Panel de Integraciones

CONECTADAS

DISPONIBLES

  • Microsoft Calendar [Conectar]
  • Slack [Conectar]

WEBHOOKS

  • Webhook 1: ATS Externo [Configurar]
  • [+ Nuevo Webhook]

Secretos y Credenciales

Los secretos se almacenan de forma segura:

SecretoValor
EXTERNAL_API_KEY**********
WEBHOOK_SECRET**********

Uso en acciones:

{{secrets.EXTERNAL_API_KEY}}

Buenas Practicas

Seguridad

DO:

  • Usar secrets para credenciales
  • Validar webhooks entrantes
  • Limitar permisos al minimo
  • Rotar credenciales periodicamente
  • Monitorear uso de APIs

DON'T:

  • Hardcodear credenciales
  • Exponer secrets en logs
  • Permisos excesivos
  • Ignorar limites de rate
  • Conexiones sin encriptar

Rate Limiting

Considerar limites de APIs:

  • OpenAI: Tokens por minuto
  • Twilio: Mensajes por segundo
  • Zoom: Requests por segundo
  • Implementar backoff exponencial

Proximos Pasos

¿No encontraste lo que buscabas?

Nuestro equipo de soporte está listo para ayudarte.

Contactar Soporte