Feeds iCal (importación + exportación)
Actualizado el 2026-04-29
Para los canales que no tienen API (y que por tanto no pasan por Channex) se usan los feeds iCal. Funciona con: Bedandbreakfast.eu, Gites de France, Clévacances, Belvilla, Novasol, Interhome, Logis Hotels y, en realidad, cualquier plataforma que ofrezca una URL .ics.
Cómo funciona
| Dirección | Qué hace BedFlow |
|---|---|
| Importación | Consulta una URL .ics externa cada hora y convierte cada VEVENT en un bloqueo en /room-availability-overview. Las cancelaciones en el origen se limpian automáticamente. |
| Exportación | Genera una URL .ics pública por habitación con todas las reservas + bloqueos manuales. Los sistemas externos se suscriben a ella. |
| Both | Ambas a la vez (puede tener sentido para sincronización PMS a PMS). |
Configuración
- Abra Gestión → Feeds iCal en BedFlow
- Haga clic en Nuevo feed iCal
- Rellene:
- Nombre: libre, p. ej. "Bedandbreakfast.eu — Habitación 4"
- Habitación: seleccione la habitación
- Dirección: normalmente
importpara bloqueos entrantes - iCal URL: el enlace
.icsdel sistema externo
- Guarde
- Haga clic en Sincronizar ahora en la columna de acciones para probar de inmediato
- Después el cron lo recoge cada hora
Para exportar
- Cree un feed con dirección
export(no hace falta URL) - Tras guardar, haga clic en Copiar URL de exportación en la columna de acciones
- Pegue esa URL en el sistema externo (p. ej. extranet de Booking.com → "Add iCal URL")
Multi-tenancy
Cada feed iCal está vinculado a una propiedad + una habitación. El TenantScope garantiza que un operador solo vea los feeds de su propia propiedad. El token de exportación de la URL pública tiene 48 caracteres y es único por feed — un token filtrado solo revela las reservas de una habitación, no las de todo el tenant.
Bajo el capó
- Tabla:
ical_feeds(property_id,room_id,direction,source_url,export_token, estado de sincronización) - Servicio:
App\Services\Ical\IcalImportService(fetch + parse + reconcile) yApp\Services\Ical\IcalExportService(genera salida RFC-5545) - Cron:
php artisan ical:sync-importsse ejecuta cada hora vía el scheduler de Laravel - Ruta:
GET /ical/{token}.ics— exportación pública, sin autenticación, protegida por token - Reconciliación: las filas importadas reciben
source = "ical:{feed_id}"enroom_calendar_data. En cada sincronización solo se vuelven a comparar las filas con esa misma etiqueta de origen — los bloqueos manuales, la sincronización de MyTourist o las reservas de Channex quedan intactos.
Limitaciones
- iCal es una sincronización de solo lectura: la importación solo trae disponibilidad, no precios ni datos de huéspedes. Para integraciones OTA completas use Channex.
- Los propios publicadores de iCal a menudo solo actualizan a diario — una reserva hecha en Bedandbreakfast.eu no llega en segundos, sino más bien entre 1 y 24 horas después.
- Las reglas de recurrencia (RRULE) NO están soportadas. Para feeds de alojamiento eso no es problema (cada reserva = 1 VEVENT).