Varaustapahtuman webhookien käyttäminen
Kuinka varausdata lähetetään ulkoiseen järjestelmään, kun varauksia luodaan, muokataan, peruutetaan tai palautetaan.
Sisällysluettelo
Webhookit mahdollistavat Sirvoyn automaattisen viestinnän muiden työkalujen kanssa. Sillä voidaan esimerkiksi kertoa avaimettomalle järjestelmälle, milloin huonekoodi on luotava tai lähettää laskutustietoja kirjanpito-ohjelmaasi.
Webhookin avulla Sirvoy lähettää varausyksityiskohdat JSON-muodossa (sovellusten standardi datan jakotapa) valitsemaasi verkko-osoitteeseen (URL). Vastakutsu tapahtuu aina, kun dataa lähetetään kyseiseen URL-osoitteeseen.
Muut ohjelmat voivat vastaanottaa URL-osoitteeseen lähetetyt tiedot ja käyttää dataa automatisoituihin tehtäviin.
Huomaa: Webhookit ovat saatavilla vain Sirvoy Pro -versiossa. Voit lisätä enintään kymmenen webhookia per tili. Webhookien määrittäminen ja hallinta vaatii teknistä osaamista, joten harkitse verkkosivujen kehittäjän konsultointia.
Luo uusi varaustapahtuman webhook
- Siirry kohtaan Asetukset > Sirvoy-tili
- Valitse Varaustapahtuman webhook ja napsauta Lisää
- Syötä varaustapahtuman URL-osoite
- Anna webhookille nimi
- Napsauta Tallenna
Sirvoy lähettää nyt vastakutsun kyseiseen URL-osoitteeseen aina, kun varaus luodaan, muokataan, peruutetaan tai palautetaan.
Kuinka vastakutsut toimivat ja mitä vaaditaan
-
Vastausten käsittely: Vastakutsun vastaanottavan palvelimen on vastattava
200 OK-tilakoodilla, mikä tarkoittaa "kaikki toimi". Jos se ei onnistu, Sirvoy yrittää lähettää vastakutsun uudelleen jopa 10 kertaa, pidentäen jokaisen yrityksen väliä yhä enemmän, ennen kuin lopettaa kokonaan. Jos vastakutsut epäonnistuvat edelleen, ilmoitamme sinulle sähköpostitse ja poistamme webhookin lopullisen ilmoituksen jälkeen. -
HTTPS ja TLS: Webhook-URL-osoitteesi on oltava turvallinen (alkaa
https://) ja käytettävä TLS-versiota 1.2 tai sitä uudempaa. TLS (Transport Layer Security) salaa tiedot, jotta kukaan ei voi lukea niitä niiden lähettämisen aikana. Jos HTTPS-sertifikaattisi ei ole voimassa, Sirvoy ei lähetä mitään tietoja. -
Toimivuustarkistukset: Sirvoy tarkistaa satunnaisesti, onko URL-osoitteesi aktiivinen lähettämällä yksinkertaisen
HTTP GET-pyynnön (tapa kysyä palvelimeltasi "oletko siellä?" lähettämättä tietoja). Palvelimesi on vastattava200 OK("kaikki toimi") näiden tarkastusten onnistumiseksi. -
Tapahtumajärjestys: Webhook lähetetään jokaiselle varaustapahtumalle, mutta tapahtumat saattavat saapua väärässä järjestyksessä: esimerkiksi muutos saattaa saapua ennen alkuperäistä varaustapahtumaa. Käytä
generatedAtaikaleimaa jokaisessa viestissä järjestääksesi ne oikeaan järjestykseen.
Älä anna palomuurisi estää vastakutsuja
Jos järjestelmäsi käyttää palomuuria (ohjelmistoa tai laitteistoa, joka estää ei-toivotun internet-liikenteen), saatat joutua lisäämään tietyt IP-osoitteet sallittujen osoitteiden listalle. Sallittujen osoitteiden listalle lisääminen tarkoittaa liikenteen sallimista tietyistä lähteistä samalla kun estetään muita.
Lisää nämä IP-osoitteet sallittujen listalle:
34.243.166.60
52.18.11.99
63.34.80.48
54.194.0.85
2a05:d018:e34:5300::/56Vastakutsut lähetetään palvelimilta, jotka tukevat sekä IPv4- (vanhempi internet-osoitusstandardi) että IPv6-osoitteita (uudempi).
Esimerkkejä JSON-vastakutsuista
Nämä esimerkit näyttävät, millaista tietoa Sirvoy lähettää webhook-URL-osoitteeseesi ja miten se on muotoiltu.
Ne ovat hyödyllisiä kehittäjille tai kenelle tahansa, joka rakentaa järjestelmää, jonka tarvitsee vastaanottaa ja käsitellä Sirvoyn varaustietoja.
Ensimmäisessä esimerkissä esitetään uuden varauksen perusvastakutsu. Toisessa on enemmän yksityiskohtia, kuten laskut ja maksut, kertoakseen, mitä on mukana, kun käsitellään talousdataa.
Esimerkki: Uuden varauksen vastakutsu
"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": []
}Esimerkki: Uuden varauksen vastakutsu joka sisältää talousdataa
{
"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
}
]
}
]
}