Bruk booking event webhooks
Finn ut hvordan du sender bookingdata til et eksternt system når bookinger opprettes, endres, kanselleres eller gjenopprettes.
Innholdsfortegnelse
Webhooks lar Sirvoy kommunisere med andre verktøy automatisk. Det kan for eksempel være å fortelle et nøkkelløst adgangssystem når det skal opprette en romkode, eller å sende faktureringsopplysninger til regnskapsprogrammet du bruker.
Med en webhook sender Sirvoy bookingopplysninger i JSON-format (en standard måte for apper å dele data på) til en nettadresse (URL) som du velger. En callback er når data sendes til den nettadressen.
Andre programmer kan motta opplysningene sendt til nettadressen og bruke dataene til automatiserte oppgaver.
Merk: Webhooks er kun tilgjengelige i Sirvoy Pro. Du kan legge til opptil ti webhooks per konto. Å sette opp og administrere webhooks krever teknisk kunnskap, så du kan vurdere å konsultere en nettutvikler.
Opprett en ny booking event webhook
- Gå til Innstillinger > Sirvoy-konto
- I feltet Booking event webhook klikker du på Legg til
- Skriv inn Callback URL
- Gi webhooken et navn
- Klikk på Lagre
Sirvoy vil nå sende en callback til den nettadressen hver gang en booking opprettes, endres, kanselleres eller gjenopprettes.
Slik fungerer callbacks, og hva som kreves
-
Responsbehandling: Serveren som mottar callbacken, må svare med statuskode
200 OK. Det betyr at alt fungerte som det skulle. Hvis ikke det skjer, vil Sirvoy prøve å sende callbacken på nytt opptil ti ganger, med lengre tidsintervaller mellom hvert forsøk, før den stopper helt. Hvis det ikke kommer riktig respons på en callback, vil vi varsle deg via e-post og fjerne webhooken etter en siste varsling. -
HTTPS og TLS: Nettadressen til webhooken må være sikker (starte med
https://) og bruke TLS versjon 1.2 eller høyere. TLS (Transport Layer Security) krypterer dataene slik at ingen kan lese dem mens de sendes. Hvis HTTPS-sertifikatet ditt ikke er gyldig, vil Sirvoy ikke sende noen data. -
Tilstandskontroller: Sirvoy sjekker av og til om nettadressen er aktiv ved å sende en enkel forespørsel med
HTTP GET(en måte å spørre serveren «er du der?» uten å sende data). Serveren må svare med200 OK(«alt fungerte») for at disse kontrollene skal lykkes. -
Hendelsesrekkefølge: En webhook sendes for hver bookinghendelse, men hendelser kan komme i feil rekkefølge. For eksempel kan en endring komme før den originale bookinghendelsen. Bruk tidsstempelet
generatedAti hver melding for å få riktig rekkefølge.
Unngå at brannmuren blokkerer callback
Hvis systemet bruker en brannmur (programvare eller maskinvare som blokkerer uønsket internett-trafikk), må du kanskje plassere enkelte IP-adresser på en hviteliste. Hvitelisting betyr å tillate trafikk fra spesifikke kilder mens andre blokkeres.
Plasser disse IP-adressene på en hviteliste:
34.243.166.60
52.18.11.99
63.34.80.48
54.194.0.85
2a05:d018:e34:5300::/56Callback sendes fra servere som støtter både IPv4 (den eldre adresseringsstandarden for internett) og IPv6 (den nyere).
Eksempel på JSON-callback
Disse eksemplene viser hvilken type data Sirvoy sender til webhook-nettadressen, og hvordan den er formatert.
De er nyttige for utviklere eller alle som bygger et system som trenger å motta og behandle bookingdata fra Sirvoy.
Det første eksemplet viser en enkel callback i forbindelse med en ny booking. Det andre inkluderer flere opplysninger, som fakturaer og betalinger, for å vise hva som er inkludert når økonomiske data er involvert.
Eksempel: Callback for ny booking
"version": "2.0",
"generatedAt": "2024-05-31T12:11:53.639+00:00",
"event": "new",
"propertyId": 1,
"bookingId": 26006,
"channelBookingId": null,
"bookingDate": "2024-05-31T12:09:16+00:00",
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"cancelled": false,
"eta": "10:00",
"totalAdults": 4,
"guest": {
"firstName": "John",
"lastName": "Doe",
"businessName": "Acme",
"address": "Fancy street",
"postcode": "11-111",
"city": "York",
"state": "NY",
"country": "US",
"phone": "+16033336666",
"email": "guest@email.com",
"passportNo": "XX11122223333",
"language": "en",
"message": "Additional comment added by guest"
},
"guestReference": "2103001",
"internalComment": null,
"couponCode": null,
"bookingSource": "Front desk",
"bookingIsCheckedIn": false,
"bookingIsCheckedOut": false,
"bookingIsConfirmed": true,
"customFields": [
{
"name": "Custom text field name",
"value": "text added by guest"
},
{
"name": "Custom checkbox unchecked",
"value": false
},
{
"name": "Custom checkbox checked",
"value": true
}
],
"rooms": [
{
"RoomTypeName": "Basic room",
"RoomTypeDescription": "Basic room",
"RoomName": "101",
"RoomId": 2,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
},
{
"RoomTypeName": "Fancy room",
"RoomTypeDescription": "Fancy room",
"RoomName": "182",
"RoomId": 83,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
}
],
"additionalItems": [
{
"description": "Breakfast",
"specificDate": null,
"quantity": 12,
"price": 20,
"itemTotal": 240,
"ledgerAccount": null
}
],
"bookedCategory": null,
"currency": "EUR",
"totalPrice": 840,
"totalSurcharges": 84,
"totalPriceIncludingSurcharges": 924,
"payments": [],
"invoices": []
}Eksempel: Callback for ny booking med økonomiske data
{
"version": "2.0",
"generatedAt": "2024-05-31T12:15:23.895+00:00",
"event": "modified",
"propertyId": 1,
"bookingId": 26006,
"channelBookingId": null,
"bookingDate": "2024-05-31T12:09:16+00:00",
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"cancelled": false,
"eta": "10:00",
"totalAdults": 4,
"guest": {
"firstName": "John",
"lastName": "Doe",
"businessName": "Acme",
"address": "Fancy street",
"postcode": "11-111",
"city": "York",
"state": "NY",
"country": "US",
"phone": "+16033336666",
"email": "guest@email.com",
"passportNo": "XX11122223333",
"language": "en",
"message": "Additional comment added by guest"
},
"guestReference": "2103001",
"internalComment": null,
"couponCode": null,
"bookingSource": "Front desk",
"bookingIsCheckedIn": false,
"bookingIsCheckedOut": false,
"bookingIsConfirmed": true,
"customFields": [
{
"name": "Custom text field name",
"value": "text added by guest"
},
{
"name": "Custom checkbox unchecked",
"value": false
},
{
"name": "Custom checkbox checked",
"value": true
}
],
"rooms": [
{
"RoomTypeName": "Basic room",
"RoomTypeDescription": "Basic room",
"RoomName": "101",
"RoomId": 2,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
},
{
"RoomTypeName": "Fancy room",
"RoomTypeDescription": "Fancy room",
"RoomName": "182",
"RoomId": 83,
"arrivalDate": "2024-06-01",
"departureDate": "2024-06-04",
"adults": 2,
"quantity": 3,
"price": 100,
"roomTotal": 300,
"guestName": null,
"comment": null,
"ledgerAccount": null
}
],
"additionalItems": [
{
"description": "Breakfast",
"specificDate": null,
"quantity": 12,
"price": 20,
"itemTotal": 240,
"ledgerAccount": null
}
],
"bookedCategory": null,
"currency": "EUR",
"totalPrice": 840,
"totalSurcharges": 84,
"totalPriceIncludingSurcharges": 924,
"payments": [],
"invoices": [
{
"invoiceNumber": "41002",
"invoiceDate": "2024-06-01",
"dueDate": "2024-06-01",
"receiver": "Acme",
"address": [
"John Doe",
"Fancy street",
"York, NY 11-111",
"United States"
],
"roundingAmount": 0,
"invoiceTotal": 924,
"originInvoice": null,
"invoiceRows": [
{
"quantity": 3,
"price": 100,
"rowTotal": 300,
"ledgerAccount": "100",
"rowText": "Basic room",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 3,
"price": 100,
"rowTotal": 300,
"ledgerAccount": "100",
"rowText": "Fancy room",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 12,
"price": 20,
"rowTotal": 240,
"ledgerAccount": "200",
"rowText": "Breakfast",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
},
{
"quantity": 1,
"price": 84,
"rowTotal": 84,
"ledgerAccount": "300",
"rowText": "surcharge",
"vatRate": 0,
"vatAmount": 0,
"bookingId": 26006
}
],
"payments": [
{
"paymentId": 28,
"createdAt": "2024-05-31T12:15:09+00:00",
"valueDate": "2024-06-01",
"amount": 924,
"ledgerAccount": "3606",
"paymentReference": null,
"comment": null
}
]
}
]
}