iCal feeds (импорт + експорт)
Bijgewerkt op 2026-05-24
За канали, които нямат API (и следователно не минават през Channex), използвате iCal feeds. Работи за: Bedandbreakfast.eu, Gites de France, Clévacances, Belvilla, Novasol, Interhome, Logis Hotels и всъщност всяка платформа, която предлага .ics URL.
Как работи
| Посока | Какво прави BedFlow |
|---|---|
| Импорт | Изтегля външен .ics URL всеки час и превръща всеки VEVENT в блокировка в /room-availability-overview. Анулациите при източника се почистват автоматично. |
| Експорт | Генерира публичен .ics URL за всяка стая с всички bookings + ръчни блокировки. Външни системи се абонират за него. |
| Both | И двете едновременно (може да е полезно за PMS-към-PMS sync). |
Setup
- Отворете Управление → iCal feeds в BedFlow
- Кликнете Нов iCal feed
- Попълнете:
- Име: свободно избираемо, напр. "Bedandbreakfast.eu — Стая 4"
- Стая: изберете коя стая
- Посока: най-често
importза входящи блокировки - iCal URL:
.icsлинкът на външната система
- Запазете
- Кликнете Sync сега в колоната с действия, за да тествате веднага
- Cron-ът го поема нататък всеки час
За експорт
- Създайте feed с посока
export(URL не е нужен) - След запазване кликнете Копирай export-URL в колоната с действия
- Поставете този URL във външната система (напр. Booking.com extranet → "Add iCal URL")
Multi-tenancy
Всеки iCal feed е свързан с един property + една стая. TenantScope гарантира, че оператор вижда само feeds на собственото си property. Export токенът в публичния URL е 48 символа дълъг и уникален за feed — изтекъл токен разкрива само резервациите на една стая, не на целия tenant.
Под капака
- Таблица:
ical_feeds(property_id,room_id,direction,source_url,export_token, sync-статус) - Service:
App\Services\Ical\IcalImportService(fetch + parse + reconcile) иApp\Services\Ical\IcalExportService(генерира RFC-5545 output) - Cron:
php artisan ical:sync-importsработи всеки час през Laravel scheduler - Route:
GET /ical/{token}.ics— public export, no-auth, token-защитен - Reconciliation: импортираните редове получават
source = "ical:{feed_id}"вroom_calendar_data. При всеки sync се сравняват наново само редове със същия source tag — ръчните блокировки, MyTourist sync или Channex bookings остават недокоснати.
Ограничения
- iCal е read-only sync: импортът поема само наличност, без цени или гост-информация. За full-feature OTA интеграции използвайте Channex.
- iCal публикаторите често обновяват само ежедневно — резервация през Bedandbreakfast.eu няма да пристигне за секунди, а след 1-24 часа.
- Recurrence rules (RRULE) НЕ се поддържат. За accommodation feeds това не е проблем (всяка резервация = 1 VEVENT).