Feeds iCal (importação + exportação)
Atualizado em 2026-04-29
Para canais que não têm API (e que, portanto, não passam pelo Channex) usa feeds iCal. Funciona com: Bedandbreakfast.eu, Gites de France, Clévacances, Belvilla, Novasol, Interhome, Logis Hotels e, na verdade, qualquer plataforma que disponibilize um URL .ics.
Como funciona
| Direção | O que o BedFlow faz |
|---|---|
| Importação | Consulta um URL .ics externo a cada hora e converte cada VEVENT num bloqueio em /room-availability-overview. Cancelamentos na origem são limpos automaticamente. |
| Exportação | Gera um URL .ics público por quarto com todas as reservas + bloqueios manuais. Os sistemas externos subscrevem-no. |
| Both | Ambos ao mesmo tempo (pode fazer sentido para sincronização PMS a PMS). |
Configuração
- Abra Gestão → Feeds iCal no BedFlow
- Clique em Novo feed iCal
- Preencha:
- Nome: livre, p. ex. "Bedandbreakfast.eu — Quarto 4"
- Quarto: selecione o quarto
- Direção: normalmente
importpara bloqueios recebidos - iCal URL: o link
.icsdo sistema externo
- Guarde
- Clique em Sincronizar agora na coluna de ações para testar de imediato
- Depois o cron trata do resto, de hora a hora
Para exportar
- Crie um feed com direção
export(não precisa de URL) - Depois de guardar, clique em Copiar URL de exportação na coluna de ações
- Cole esse URL no sistema externo (p. ex. extranet do Booking.com → "Add iCal URL")
Multi-tenancy
Cada feed iCal está ligado a uma propriedade + um quarto. O TenantScope garante que um operador só vê os feeds da sua própria propriedade. O token de exportação no URL público tem 48 caracteres e é único por feed — um token divulgado revela apenas as reservas de um quarto, não as de todo o tenant.
Por baixo do capô
- Tabela:
ical_feeds(property_id,room_id,direction,source_url,export_token, estado de sincronização) - Serviço:
App\Services\Ical\IcalImportService(fetch + parse + reconcile) eApp\Services\Ical\IcalExportService(gera output RFC-5545) - Cron:
php artisan ical:sync-importscorre a cada hora via o scheduler do Laravel - Rota:
GET /ical/{token}.ics— exportação pública, sem autenticação, protegida por token - Reconciliação: as linhas importadas recebem
source = "ical:{feed_id}"emroom_calendar_data. Em cada sincronização só são recomparadas as linhas com essa mesma etiqueta de origem — bloqueios manuais, a sincronização do MyTourist ou reservas do Channex ficam intactos.
Limitações
- O iCal é uma sincronização só de leitura: a importação traz apenas disponibilidade, sem preços nem dados de hóspedes. Para integrações OTA completas use o Channex.
- Os próprios publicadores de iCal muitas vezes só atualizam diariamente — uma reserva feita no Bedandbreakfast.eu não chega em segundos, mas sim após 1 a 24 horas.
- Regras de recorrência (RRULE) NÃO são suportadas. Para feeds de alojamento isso não é problema (cada reserva = 1 VEVENT).