Webhooks (voorheen bekend als data collection in de oudere versies) zijn krachtige actieregels in de CallTo365-pbx. U kunt webhooks bijvoorbeeld gebruiken om:
- Te koppelen met Google Analytics zodat u bijvoorbeeld kunt meten hoe vaak uw kantoor wordt gebeld.
- Gesprekken automatisch door te schakelen naar de boekhouding als de beller nog openstaande facturen heeft.
- Afspraken bij zorginstellingen de automatiseren.
- Herhaalrecepten bij apotheken te automatiseren.
Hoe werkt het? #
Wanneer een gesprek bij een regel komt die de webhook activeert, hoort de beller een bericht waarin gevraagd wordt naar gegevens, bijvoorbeeld een klantnummer. Vervolgens kan een HTTP-verzoek worden verstuurd naar uw webapplicatie/API. De pbx matcht het antwoord van de beller met een reguliere expressie. Als er een match is, of geen regexp, wordt de regel als succesvol beschouwd. Zo niet (4xx, 5xx antwoord, regexp matcht niet or I/O-fout) wordt de actie als mislukt beschouwd en afgehandeld volgens ‘on failure’of ‘on error’ condities.
- Prompt: kies welk bericht moet worden afgespeeld.
- Number of digits: maximumaantal cijfers dat wordt geaccepteerd. 0 = geen maximum, of helemaal geen data input als het veld ‘Exact length only’ aan staat.
- Exact length only: Aan: alleen het aantal cijfers dat in het veld erboven staat, wordt toegestaan. In dit voorbeeld wordt het verzoek verstuurd nadat het zesde cijfer is opgegeven. Tot dat moment zal de geluidsfile worden afgespeeld.
- Nee: de invoer moet worden beëindigd door het intypen van het hekje (#).
- Service URL: ‘https’ or ‘http’ URI naar de remote server die speciale variabelen kan bevatten. B.v. elk inkomend nummer kan een eigen URI op de server hebben, http://webserveradres/did/${called_did}.
- Request method: POST or GET.
- Request body: request body voor de keuze POST. Mag dezelfde speciale variabelen bevatten als de URL. Het kan ook tekst zijn of XML, JSON.
- Response body regexp: reguliere expressie om aan te matchen.
- On success: stel in welke actie er moet volgen als de regel succesvol is.
Een positief antwoord (2xx) zal gematcht worden aan de opgegeven regexp. Als die niet is opgegeven, wordt de actie als succesvol beschouwd.- Continue: voer volgende actie in het belplan uit
- Extension: bel een doorkiesnummer. De regexp match zal worden gebruikt om te bepalen welke extensie gebeld moet worden. Het veld ‘Response body regexp’ moet daartoe ingevuld zijn en minstens 1 groep bevatten. De eerste groep van de match zal gebruikt worden als de extensie die gebeld moet worden.
- Dialplan actions: kies een keuzemenu.
- Dial number: bel het telefoonnummer dat de HTTP-service teruggeeft. De we service die door de regel wordt gebruikt, zal dan een string teruggeven: NUMBER of NUMBER/CALLERID of NUMBER/anonymous of NUMBER/original. Houd er wel rekening mee dat deze optie de externe web-service de controle geeft over het uitbellen. Gebruik deze optie nooit bij onbetrouwbare of onbekende servers. Als u zeker wilt zijn dat alleen toegestane nummer worden uitgebeld, kunt u beter gebruikmaken van de optie Extension of keuzemenu’s.
- Play digits: speel voor de beller de cijfers af die uw http-service teruggeeft.
- Condition: Unconditionally, Status, Caller-ID, Time rule en Switches
Zorg ervoor dat het audiokanaal geopend is omdat er nog geen menselijke tussenkomst is. Anders zal de beller het audio-bericht niet kunnen horen. Dit doet u door de ‘Answer’-regel (zie voorbeeld).
Variabelen #
Speciale variabelen die gebruikt kunnen worden in de URI en het veld ‘request body’:
- ${data} – reeks cijfers die door de beller wordt ingetoetst op de telefoon
- ${unique_id} – het unieke ID van het gesprek
- ${called_did} – called DID number als webhook als actieregel is aangemaakt voor het inkomend nummer
- ${called_extension} – caller extension als webhook als actieregel is aangemaakt voor het inkomend nummer
- ${caller_user_uuid} – caller user uuid als de beller één van de PBX-gebruikers is
- ${caller_phone_uuid} – caller phone uuid als de beller één van de PBX-gebruikers is
- ${caller_trunk_uuid} – caller trunk uuid
- ${caller_number} – caller number
- ${caller_normalized_number} – caller normalized number
- ${caller_original_number} – caller original number