Documentation

De basis van webhooks is het uitwisselen van gegevens over een entiteit.
Nu is dat relatief eenvoudig voor een entiteit die aangemaakt wordt. De kenmerken worden meegegeven en de doel applicatie doet hier "iets" mee (meestal het aanmaken van een soortgelijke entiteit).
Maar wat moet er gebeuren met een entiteit die aangepast wordt?
Dit is lastiger. De doel applicatie moet immers wel weten over welke entiteit het gaat.

Bijvoorbeeld: een reservering wordt gemaakt voor 10 januari van 12.00 tot 14.00 uur.
Als gevolg van de webhook koppeling wordt een kalender item aangemaakt in een agenda (bijvoorbeeld Google Calendar of Microsoft Outlook).
Nu wijzigt de gebruiker de reservering van 10 januari naar 11 januari.
Het verwachte resultaat: de kalender wordt ook bijgewerkt.
Het werkelijke resultaat zal echter zijn dat er zowel op 10 als 11 januari een kalender item zichtbaar is.

Er zijn verschillende methodes om dit "onwenselijke" resultaat te verbeteren.

Uitgaand: een bijgewerkte reservering naar Google Calendar

In het integratieplatform Zapier is een app aanwezig om te verbinden met een Google Calendar.
Om hier zowel nieuwe als gewijzigde items te kunnen verwerken, passen we al bij de eerste stap logica toe.
We kunnen namelijk op basis van de reservering een kalender item aanmaken. Hierbij kunnen we het item zelf een omschrijving (subject) meegeven.
Dit kan de product omschrijving zijn maar ook een combinatie waar het reserveringsnummer in zit.
We kiezen voor een tekst veld met "IRES{{reserveringsnummer}}: {{productomschrijving}}" en dat wordt dan "IRES3691: Grote zaal".
Bij het bijwerken van de reservering kiezen we voor een "Search" ofwel "Find Event".
Deze search vraagt om een "Search Term": we geven hier op: "IRES{{reserveringsnummer}}".
Vervolgens wordt dit kalender item bijgewerkt met de nieuwe datum tijd.
Opmerking: het nadeel van deze methode is dat als de gebruiker in Google Calendar de omschrijving wijzigt, de zoek actie geen resultaat oplevert.

Inkomend: een reservering maken en bijwerken in Office 365

We gebruiken het integratie platform Microsoft Flow en koppelen een outlook agenda met i-Reserve.
Een gebruiker maakt een kalender item aan. De koppeling geeft aan welk product in i-Reserve moet worden gebruikt en zorgt ervoor dat een reservering wordt gemaakt.
De agenda weet op dat moment niet wat het reserveringsnummer is, maar hóeft dat ook niet te weten.
Er wordt namelijk in i-Reserve een extra attribuut aangemaakt, te weten een "External ID". Deze kan opgegeven worden in de koppeling.
Er dient een waarde te worden opgegeven die uniek is en dezelfde waarde bevat voor een nieuw als een gewijzigd item.
Dit kan bijvoorbeeld zijn de iCalUID.
Als vervolgens een bijgewerkte reservering wordt verstuurd, dan wordt de juiste reservering automatisch opgezocht op basis van dit external ID.