HTTP-verzoek
De actie HTTP-verzoek verbindt je assistent met elk systeem dat een webadres heeft: je CRM, je planningssoftware, een eigen API of een automatiseringsplatform zoals Make of n8n. Je kunt een verzoek sturen vóór het gesprek (om context op te halen), tijdens het gesprek (als tool voor de assistent) of na het gesprek (om gegevens weg te schrijven).
Je maakt de actie per assistent aan onder Assistenten → Taken, op de kaart Acties: klik op Nieuw toevoegen en kies HTTP-verzoek. Daarvoor heb je de rol Bewerker of Beheerder nodig. Wijzigingen worden automatisch opgeslagen zodra de actie een naam en een geldig webadres heeft.
Algemene uitleg over acties, voorwaarden en variabelen vind je in Acties.
Algemene instellingen
| Instelling | Betekenis | Standaard |
|---|---|---|
| Naam | Herkenbare naam van de actie. Verplicht. | — |
| Wanneer | Vóór het gesprek, Tijdens het gesprek of Na het gesprek. | Na het gesprek |
| Methode | GET, POST, PUT, PATCH of DELETE | POST |
| URL | Het volledige adres, inclusief https:// of http://. Variabelen zijn toegestaan, bijvoorbeeld https://api.voorbeeld.nl/klanten/{{inboundContext.customerId}} bij een verzoek na het gesprek. Interne en privé-adressen worden geweigerd. | — |
| Headers | Sleutel/waarde-paren, bijvoorbeeld X-Api-Key: …. Variabelen zijn toegestaan. Deze waarden staan leesbaar in het formulier. Zonder eigen Content-Type sturen we application/json. | Geen |
| Authorization-sleutel | Een opgeslagen sleutel die we meesturen als Authorization-header. De waarde gaat precies zo mee als je hem opslaat, dus zet er zelf Bearer voor als je systeem dat verwacht. Kies een sleutel uit de lijst, of plak hem bij Nieuwe sleutel plakken en klik op Opslaan als sleutel. Je kunt hem ook vooraf toevoegen onder Instellingen → Koppelingen met de soort Authorization-header. De waarde wordt versleuteld opgeslagen en daarna nooit meer getoond. De sleutel gaat alleen mee tijdens en na het gesprek, niet bij een verzoek vóór het gesprek: zet de waarde daar onder Headers als Authorization: …. | Geen |
| Body-sjabloon | JSON met variabelen (niet bij GET, dat verzoek heeft geen body). Leeg betekent: alle variabelen die op dat moment beschikbaar zijn als JSON. | Leeg |
We wachten niet onbeperkt op een antwoord, en dat kun je niet instellen: 3 seconden vóór het gesprek, 6 seconden tijdens het gesprek en 8 seconden na het gesprek. Een mislukt verzoek wordt niet opnieuw geprobeerd.
Ondertekening
Elk verzoek met een body krijgt de header X-Yarla-Signature mee, zodat je systeem kan controleren dat het verzoek echt van Yarla komt. Een GET-verzoek heeft geen body en wordt niet ondertekend. De header ziet er zo uit:
X-Yarla-Signature: t=<unix-timestamp>,v1=<hex>Daarbij is v1 = HMAC-SHA256(secret, t + "." + rawBody): een HMAC over de timestamp, een punt en de ruwe body, met als sleutel het webhookgeheim van je bedrijf. Dat geheim vind je onder Instellingen → Koppelingen, op de kaart Webhookgeheim. Alleen een Beheerder ziet die kaart. Met de knop Nieuwe maken maak je een nieuw geheim; het oude geheim werkt dan direct niet meer, dus werk je systeem meteen bij. Een voorbeeld van het controleren van de handtekening vind je in Webhooks.
Vóór het gesprek
Een verzoek vóór het gesprek wordt verstuurd zodra een inkomend telefoongesprek is aangenomen, nog vóór de begroeting. Het loopt bij elk inkomend telefoongesprek; een voorwaarde heeft hier geen effect. Bij uitgaande gesprekken, sms, WhatsApp, webchat en Uitproberen loopt het niet: test het dus met een echt inkomend gesprek.
Met een leeg body-sjabloon sturen we deze body, met de punt letterlijk in de veldnaam:
{
"fromNumber": "+31612345678",
"toNumber": "+31201234567",
"personNumber": "+31612345678",
"agentNumber": "+31201234567",
"company.name": "Loodgieter Jansen",
"company.website": "https://www.voorbeeld.nl",
"company.phone": "+31201234567",
"company.email": "info@voorbeeld.nl",
"company.address": ""
}Je systeem antwoordt met een JSON-object, het liefst plat. Elk veld daarin wordt beschikbaar als variabele. Een ander soort antwoord, zoals een lijst of gewone tekst, wordt genegeerd. Heb je meerdere verzoeken vóór het gesprek, dan lopen ze na elkaar en worden de antwoorden samengevoegd.
{ "customerName": "Jan de Vries", "openInvoice": true, "plan": "Comfort" }- In de begroeting van dát gesprek gebruik je de velden direct:
{{customerName}},{{plan}}. - De assistent krijgt de velden tijdens het gesprek vanzelf als context. In de instructies hoef je ze dus niet als variabele te gebruiken; een onbekende variabele blijft daar leeg.
- Na afloop staan dezelfde velden in acties onder
inboundContext:{{inboundContext.customerName}}. In de Inbox zie je ze bij het gesprek onder Technische details.
Een voorbeeld van een begroeting die de context gebruikt:
Goedemiddag {{customerName}}, welkom bij {{company.name}}. Waarmee kan ik je helpen?Antwoord binnen 3 seconden
De beller wacht. Komt er binnen 3 seconden geen antwoord, of geeft je systeem een foutstatus, dan begint het gesprek zonder context en blijven de variabelen leeg. Zorg dus voor een snelle opzoekactie en kies een begroeting die ook zonder naam natuurlijk klinkt.
Meer detail: Inkomende webhook (vóór het gesprek).
Tijdens het gesprek
Tijdens het gesprek wordt het HTTP-verzoek een tool die de assistent zelf inzet zodra de voorwaarde van toepassing is, op elk kanaal. De voorwaarde vul je in bij Wanneer moet de assistent dit gebruiken?. Daarnaast geef je drie extra dingen op:
| Instelling | Betekenis | Standaard |
|---|---|---|
| Parameters die de assistent invult | De gegevens die de assistent uit het gesprek moet halen: naam, type (string, number, boolean), beschrijving en of ze verplicht zijn. Bijvoorbeeld orderNumber, string, "Het ordernummer dat de beller noemt, zes cijfers". In de URL en het body-sjabloon gebruik je ze als {{orderNumber}}. | Geen |
| Toelichting op het antwoord | Vertel de assistent wat het antwoord bevat en hoe hij het gebruikt, bijvoorbeeld "Het antwoord bevat de leverdatum. Lees die voor en vraag of dat schikt." | Leeg |
Aan de telefoon kan de assistent in een paar woorden zeggen dat hij het nakijkt terwijl het verzoek loopt.
Het antwoord van je systeem (JSON of tekst) krijgt de assistent terug en verwerkt hij direct in het gesprek. Hij krijgt maximaal 6.000 tekens, dus houd het antwoord compact: alleen de velden die de assistent nodig heeft. Geeft je systeem een foutstatus, dan hoort de assistent alleen dat dit is gebeurd.
Reken op je parameters
Reken alleen op je parameters en op de variabelen van een campagne of een API-gesprek. Ingebouwde variabelen zoals {{personNumber}} en {{conversationId}} blijven hier leeg, en wat vóór het gesprek is opgezocht normaal gesproken ook. Heb je het nummer van de beller nodig, maak er dan een parameter van.
Bij Bellen en Chatten in Uitproberen wordt het verzoek alleen echt verstuurd als Acties echt uitvoeren aanstaat. Anders krijgt de assistent een gesimuleerd antwoord. Echt bellen is een echt gesprek: het verzoek wordt dan altijd echt verstuurd, en ook acties van na het gesprek lopen.
Voorbeeld van een verzoek voor een orderstatus:
POST https://api.voorbeeld.nl/orders/status
{
"orderNumber": "{{orderNumber}}"
}Het antwoord van je systeem:
{ "status": "verzonden", "deliveryDate": "2026-09-14", "carrier": "PostNL" }Bij Wanneer moet de assistent dit gebruiken? vul je bijvoorbeeld in: "De beller vraagt naar de status van zijn bestelling en noemt een ordernummer." Meer detail: Webhook tijdens het gesprek.
Bevat het antwoord persoonlijke gegevens, zoals een bestelling of klantdossier? Zet Eerst om een code vragen aan. Belt de klant met een zichtbaar nummer, dan is dat nummer genoeg voor een GET-verzoek, dat alleen iets opzoekt, en is er geen code nodig. Een andere methode (POST, PUT, PATCH of DELETE) kan iets wijzigen: dan stuurt de assistent eerst een sms met een code naar het nummer waarmee de klant belt, tenzij zijn provider het nummer heeft bevestigd. Bij een ander nummer, een afgeschermd nummer of in een chat stuurt de assistent eerst een sms met een code naar het nummer van de klant, nadat die ja heeft gezegd, en verstuurt hij het verzoek pas als de klant die code teruggeeft. Zoek het dossier op met {{verifiedPhone}}, het nummer dat de klant heeft bewezen, en niet alleen met een nummer dat de assistent doorgeeft: die variabele vult ons platform in, niet de assistent. Zie Bellerbeveiliging.
Na het gesprek
Na het gesprek stuur je gegevens weg. Dit loopt ook als een sms-, WhatsApp- of webchatgesprek is afgelopen. Bij Onder welke voorwaarde moet dit na het gesprek gebeuren? vul je in gewone taal een voorwaarde in; leeg betekent na elk gesprek. Laat je het body-sjabloon leeg, dan sturen we alle ingebouwde variabelen plus je eigen variabelen (Extra variabelen om te extraheren) als één JSON-object:
{
"personNumber": "+31612345678",
"agentNumber": "+31201234567",
"conversationId": "<gespreks-id>",
"conversationLink": "https://<dashboard-domein>/nl/inbox/<gespreks-id>",
"startTimestamp": "2026-09-11T14:32:10.000Z",
"direction": "inbound",
"channel": "voice",
"durationSeconds": 184,
"disconnectReason": "normal_clearing",
"summary": "Mevrouw De Vries meldt een lekkende kraan in de keuken en wil vandaag teruggebeld worden.",
"plainTranscript": "Assistant: Goedemiddag, ...\nCustomer: ...",
"audioLink": "https://<dashboard-domein>/nl/inbox/<gespreks-id>",
"outcome": "callback_requested",
"assistant": { "name": "Receptie" },
"company": {
"name": "Loodgieter Jansen",
"website": "https://www.voorbeeld.nl",
"phone": "+31201234567",
"email": "info@voorbeeld.nl",
"address": ""
},
"contact": { "name": "A. de Vries", "company": "" },
"inboundContext": { "customerId": "12345" },
"postcode": "1012 AB"
}channelisvoice,sms,whatsappofwebchat.audioLinkis geen audiobestand maar dezelfde link naar het gesprek in het dashboard, en alleen gevuld als er een opname is.company.addressis leeg zolang je bedrijf het adres niet met klanten deelt.- De taal in
conversationLinkenaudioLinkis de taal van je bedrijf.
Wil je een eigen structuur, bijvoorbeeld omdat je CRM een vast formaat verwacht? Vul dan zelf een body-sjabloon in:
{
"phone": "{{personNumber}}",
"note": "{{summary}}",
"source": "Yarla",
"url": "{{conversationLink}}"
}Wat een verzoek na het gesprek heeft gedaan, zie je in de Inbox bij het gesprek, onder Technische details, bij Wat de acties hebben gedaan. Daar staat de statuscode, en bij een fout ook het begin van het antwoord van je systeem.
Meer detail: Webhook na het gesprek.
Recepten voor Make, n8n en Zapier
Je hoeft geen eigen server te bouwen. Automatiseringsplatformen geven je een webhook-URL die je direct in de actie plakt:
- Maak in je platform een webhook-trigger aan: in Make de module Custom webhook, in n8n de node Webhook, in Zapier de trigger Catch Hook. Kopieer de URL.
- Maak in Yarla een actie HTTP-verzoek met Wanneer op Na het gesprek en methode
POST, en plak de URL. Laat het body-sjabloon leeg zodat alle variabelen worden meegestuurd. - Open Uitproberen, kies Chatten en zet Acties echt uitvoeren aan. Voer een kort gesprek en neem afscheid, zodat de assistent het gesprek afsluit: pas dan loopt de actie. Tijdens een gesproken gesprek bij Bellen lopen acties van na het gesprek niet. Laat je platform daarna de structuur van de gegevens herkennen.
- Koppel de velden (
summary,personNumber,outcome, …) aan de volgende stap: een rij in een spreadsheet, een kaart in je projectbord, een bericht in je teamchat.
Voor een verzoek vóór het gesprek moet je scenario ook antwoorden: gebruik in Make de module Webhook response en in n8n de node Respond to Webhook, en laat die een JSON-object teruggeven, binnen 3 seconden. Uitgewerkte scenario's vind je in Make en n8n.