Gestión de Mensajes Programados

Subflow incluye un motor de programación de mensajes que permite encolar comunicaciones para fechas y horas futuras con precisión al segundo.


Listar Mensajes Programados Pendientes

  • Método: GET
  • Ruta: /api/v1/integrations/:integrationKey/messages/scheduled
  • Parámetros: page (default 1), limit (default 20)

Ejemplo de Petición

curl -X GET "https://api.omniflou.com/api/v1/integrations/agendaconmigo/messages/scheduled?page=1&limit=5" \
  -H "Authorization: Bearer sf_int_agendaconmigo_your_token"

Respuesta (200 OK)

{
  "docs": [
    {
      "_id": "6a4ffc99e5956fd8d285c5c0",
      "tenantId": "6a4ffc99e5956fd8d285c5aa",
      "conversationId": "6a4ffc99e5956fd8d285c5be",
      "direction": "outbound",
      "sender": "system",
      "contentType": "text",
      "content": {
        "text": "Recordatorio: Tu vuelo sale en 3 horas."
      },
      "status": "scheduled",
      "scheduledAt": "2026-09-01T08:00:00.000Z",
      "expiresAt": "2026-09-01T09:00:00.000Z",
      "createdAt": "2026-08-20T10:00:00.000Z"
    }
  ],
  "total": 1,
  "page": 1,
  "limit": 5,
  "totalPages": 1,
  "hasNextPage": false,
  "hasPrevPage": false
}

Regla de Expiración Automática: Si un mensaje no puede enviarse a la hora prevista (por ejemplo, si la sesión de WhatsApp del canal se encuentra desconectada), el mensaje vencerá y se marcará como fallido automáticamente 1 hora después de scheduledAt. Si deseas un margen de tiempo diferente, puedes enviar el parámetro opcional expiresAt al programar el mensaje.


Cancelar un Mensaje Programado

Si necesitas anular un envío antes de que se despache:

  • Método: DELETE
  • Ruta: /api/v1/integrations/:integrationKey/messages/scheduled/:messageId

Ejemplo de Petición

curl -X DELETE "https://api.omniflou.com/api/v1/integrations/agendaconmigo/messages/scheduled/6a4ffc99e5956fd8d285c5c0" \
  -H "Authorization: Bearer sf_int_agendaconmigo_your_token"

Respuesta (200 OK)

{
  "success": true,
  "message": "Mensaje programado cancelado correctamente."
}
¿Esta documentación fue útil para configurar tu integración?