Flux iCal (import + export)

Mis à jour le 2026-04-29

Pour les canaux qui n'ont pas d'API (et qui ne passent donc pas par Channex), vous utilisez les flux iCal. Fonctionne avec : Bedandbreakfast.eu, Gites de France, Clévacances, Belvilla, Novasol, Interhome, Logis Hotels et en fait toute plateforme qui propose une URL .ics.

Comment ça fonctionne

| Direction | Ce que fait BedFlow | |---|---| | Import | Récupère une URL .ics externe chaque heure et transforme chaque VEVENT en blocage dans /room-availability-overview. Les annulations à la source sont nettoyées automatiquement. | | Export | Génère une URL .ics publique par chambre avec toutes les réservations + les blocages manuels. Les systèmes externes s'y abonnent. | | Both | Les deux à la fois (peut être utile pour une synchronisation PMS vers PMS). |

Configuration

  1. Ouvrez Gestion → Flux iCal dans BedFlow
  2. Cliquez sur Nouveau flux iCal
  3. Complétez :
    • Nom : libre, p. ex. "Bedandbreakfast.eu — Chambre 4"
    • Chambre : sélectionnez la chambre concernée
    • Direction : généralement import pour les blocages entrants
    • iCal URL : le lien .ics du système externe
  4. Enregistrez
  5. Cliquez sur Synchroniser maintenant dans la colonne d'actions pour tester immédiatement
  6. Le cron prend ensuite le relais chaque heure

Pour l'export

  1. Créez un flux avec la direction export (pas besoin d'URL)
  2. Après l'enregistrement, cliquez sur Copier l'URL d'export dans la colonne d'actions
  3. Collez cette URL dans le système externe (p. ex. extranet Booking.com → "Add iCal URL")

Multi-tenancy

Chaque flux iCal est lié à une propriété + une chambre. Le TenantScope garantit qu'un opérateur ne voit que les flux de sa propre propriété. Le token d'export dans l'URL publique fait 48 caractères et est unique par flux — un token divulgué ne révèle que les réservations d'une seule chambre, pas celles de tout le tenant.

Sous le capot

  • Table : ical_feeds (property_id, room_id, direction, source_url, export_token, statut de synchronisation)
  • Service : App\Services\Ical\IcalImportService (fetch + parse + reconcile) et App\Services\Ical\IcalExportService (génère une sortie RFC-5545)
  • Cron : php artisan ical:sync-imports tourne chaque heure via le scheduler Laravel
  • Route : GET /ical/{token}.ics — export public, sans authentification, protégé par token
  • Réconciliation : les lignes importées reçoivent source = "ical:{feed_id}" sur room_calendar_data. À chaque synchronisation, seules les lignes portant ce même tag de source sont recomparées — les blocages manuels, la synchronisation MyTourist ou les réservations Channex restent intacts.

Limitations

  • iCal est une synchronisation en lecture seule : l'import ne reprend que la disponibilité, pas les prix ni les données des clients. Pour des connexions OTA complètes, utilisez Channex.
  • Les éditeurs iCal eux-mêmes ne mettent souvent à jour que quotidiennement — une réservation via Bedandbreakfast.eu n'arrive donc pas en quelques secondes, mais plutôt après 1 à 24 heures.
  • Les règles de récurrence (RRULE) ne sont PAS prises en charge. Pour les flux d'hébergement, ce n'est pas un problème (chaque réservation = 1 VEVENT).