Acties
Met acties laat je je assistent méér doen dan alleen praten: klantgegevens ophalen voordat het gesprek begint, tijdens het gesprek de voorraad controleren, en na het gesprek een e-mail, sms of webhook versturen. In dit artikel lees je hoe acties werken en welke bouwstenen je tot je beschikking hebt.
Waar je acties vindt
Acties beheer je per assistent, op het tabblad Taken, onder Acties in de editor. Daar maak je ze aan en zet je ze aan of uit. Moet een actie voor meer assistenten gelden, dan stel je die per assistent in.
Een actie aanmaken gaat zo:
- Open de assistent, ga naar het tabblad Taken, open Acties en klik op Nieuw toevoegen.
- Kies het type: E-mail, Sms, HTTP-verzoek, Google Sheets of WhatsApp.
- Geef de actie een naam. Kies bij een HTTP-verzoek of Google Sheets onder Wanneer het moment: Vóór het gesprek (alleen HTTP-verzoek), Tijdens het gesprek of Na het gesprek. E-mail, sms en WhatsApp draaien altijd na het gesprek.
- Vul de instellingen in.
- Voeg eventueel een voorwaarde toe (niet bij een actie vóór het gesprek), en bij een actie na het gesprek eigen variabelen.
Er is geen opslagknop: de actie wordt automatisch opgeslagen zodra de velden kloppen. Zonder naam wordt een actie niet opgeslagen, en ook niet zonder geldige URL bij een HTTP-verzoek of zonder Spreadsheet-id bij Google Sheets. Een WhatsApp-actie heeft ook een Sjabloonnaam en een geldig Teamnummer nodig, en een eigen variabele of parameter een geldige naam. Ontbreekt dat, dan krijg je een foutmelding en blijven je wijzigingen in de assistent onopgeslagen tot je het hebt ingevuld.
Dupliceren op de regel van een actie kopieert die actie met een nieuw id en een naam die eindigt op “(copy)”.
Drie momenten
| Moment | Wat er gebeurt | Beschikbare typen |
|---|---|---|
| Vóór het gesprek | Zodra een inkomend telefoongesprek is opgenomen, nog vóór de begroeting, doet het platform een HTTP-verzoek naar je systeem. Het antwoord wordt context voor de assistent: die weet dan bijvoorbeeld al hoe de beller heet en of er een openstaande factuur is. | HTTP-verzoek, CRM (beller opzoeken) |
| Tijdens het gesprek | De actie wordt een tool die de assistent zelf kan gebruiken zodra de voorwaarde van toepassing is. Denk aan een klant opzoeken, de voorraad controleren of een ticket aanmaken. Het antwoord krijgt de assistent terug en gebruikt hij direct in het gesprek. | HTTP-verzoek, Google Sheets (rijen opzoeken of een rij toevoegen) |
| Na het gesprek | Kort nadat het gesprek is beëindigd, wordt het nabewerkt: de samenvatting en je eigen variabelen worden bepaald en de acties worden na elkaar uitgevoerd. | E-mail, sms, WhatsApp-sjabloon, HTTP-verzoek, Google Sheets (rij toevoegen), CRM (notitie, contact en deal) |
Een HTTP-verzoek vóór het gesprek draait alleen bij inkomende telefoongesprekken, niet bij uitgaande gesprekken, sms, WhatsApp of webchat. Je systeem moet binnen 3 seconden antwoorden met een JSON-object, anders begint het gesprek zonder die context. Meer daarover lees je in HTTP-verzoek. Een CRM-taak vóór het gesprek zoekt de klant ook op bij uitgaande gesprekken, sms en WhatsApp, en in de webchat zodra de klant het nummer met een code heeft bevestigd.
Een sms-, WhatsApp- of chatgesprek eindigt als de assistent het afsluit, als iemand in de Inbox op Gesprek beëindigen klikt, of na een tijd zonder activiteit: bij webchat de Time-out bij inactiviteit van de assistent (standaard 60 minuten), bij sms en WhatsApp 6 uur, en met je team pas 18 uur na het laatste bericht, nooit zolang de klant op een antwoord wacht. Pas dan draaien de acties na het gesprek.
Een WhatsApp-actie stuurt een sjabloonbericht naar een geverifieerd teamnummer, nooit naar de klant, en werkt alleen als WhatsApp bij deze assistent is gekoppeld. Het nummer verifieer je in de actie zelf met een code.
Voorwaarden
Bij een actie tijdens of na het gesprek schrijf je in gewone taal wanneer de actie van toepassing is. Het AI-model leest deze zin en beslist op basis daarvan.
Voor tools tijdens het gesprek heet het veld Wanneer moet de assistent dit gebruiken?. Het beschrijft wanneer de assistent de tool moet inzetten. Laat je het leeg, dan gaat de assistent alleen af op de naam van de actie. Voorbeelden:
- "Als de beller zijn klantnummer noemt."
- "Als de beller vraagt of een onderdeel op voorraad is."
- "Als de beller een storing wil melden en zijn adres heeft gegeven."
Voor acties na het gesprek heet het veld Onder welke voorwaarde moet dit na het gesprek gebeuren?. Het bepaalt of de actie überhaupt wordt uitgevoerd. Laat je het veld leeg, dan draait de actie na elk gesprek. Anders bijvoorbeeld:
- "Alleen als de beller een afspraak wilde maken."
- "Alleen als het om een spoedgeval ging."
- "Alleen als de beller niet is doorverbonden naar een teamlid."
Voor een actie vóór het gesprek wordt de voorwaarde niet gebruikt: die actie draait bij elk gesprek waar ze kan draaien (zie hierboven) zolang ze aanstaat. Het veld blijft wel zichtbaar, met de tekst van een actie na het gesprek, maar wat je daar invult heeft geen effect.
Zet de voorwaarde op de actie, niet in de prompt
Het is verleidelijk om in de prompt te schrijven "stuur een e-mail als …". Dat werkt niet: de prompt bepaalt hoe de assistent praat, de voorwaarde bepaalt of een actie draait. Houd de prompt schoon en leg de logica vast in de voorwaarde van de actie.
Variabelen
In sjablonen (onderwerp, tekst, URL, headers, body, kolommen) gebruik je variabelen die automatisch met gegevens van het gesprek worden gevuld. Deze ingebouwde variabelen zijn beschikbaar in acties na het gesprek:
| Variabele | Betekenis |
|---|---|
personNumber | Het nummer van de beller (of, bij uitgaande gesprekken, van de gebelde). Leeg bij webchat, want de widget en de chatpagina geven geen telefoonnummer door |
agentNumber | Je platformnummer waarop het gesprek binnenkwam of waarmee is gebeld. Leeg bij webchat |
conversationId | Unieke id van het gesprek |
conversationLink | Directe link naar het gesprek in de Inbox |
startTimestamp | Begintijd van het gesprek (ISO 8601, bijvoorbeeld 2026-09-11T14:32:10.000Z) |
direction | inbound (inkomend) of outbound (uitgaand) |
channel | voice (telefoongesprek), sms, whatsapp of webchat |
durationSeconds | Gespreksduur in seconden (0 bij sms, WhatsApp en webchat) |
disconnectReason | Technische code voor de reden waarom het telefoongesprek eindigde, bijvoorbeeld completed, transferred of user_busy. Leeg bij sms, WhatsApp en webchat |
summary | Samenvatting van het gesprek, geschreven door het AI-model |
plainTranscript | Volledig transcript als platte tekst |
audioLink | Link naar het gesprek in de Inbox, waar je de opname beluistert. Dit is geen link naar een audiobestand. Leeg als er geen opname is; opnames worden na 30 dagen verwijderd |
outcome | Uitkomst, als code: resolved (beantwoord), transferred (doorverbonden), appointment_booked (afspraak geboekt), callback_requested (terugbelverzoek), voicemail, abandoned (opgehangen), no_interaction (niets gezegd) of spam |
assistant.name | Naam van de assistent die het gesprek voerde |
company.name | Je bedrijfsnaam |
company.website, company.phone, company.email | Je website en het telefoonnummer en e-mailadres voor klanten. Leeg als je ze niet hebt ingevuld |
company.address | Je adres, alleen als je dat deelt met klanten. Anders leeg |
contact.name | Naam van het contact, als het nummer bij het begin van het gesprek is herkend onder Klanten → Contacten of als het contact uit dit gesprek is aangemaakt. Leeg bij webchat, en bij uitgaande gesprekken naar een nummer dat al een contact is |
contact.company | Bedrijf van het contact, als bekend. Leeg in dezelfde gevallen als contact.name |
inboundContext.<veld> | Elk veld dat je systeem vóór het gesprek terugstuurde, bijvoorbeeld inboundContext.customerId |
Op de andere momenten heb je andere variabelen:
- Vóór het gesprek:
fromNumber,toNumber,personNumber,agentNumberen decompany-variabelen uit de tabel. - Tijdens het gesprek: de waarden die de assistent invult bij Parameters die de assistent invult. Dat veld heb je bij een HTTP-verzoek en bij Rijen opzoeken (tijdens het gesprek) in Google Sheets. Ingebouwde variabelen zoals
personNumberenconversationIdblijven hier leeg. Heb je bijvoorbeeld het nummer van de beller nodig, maak daar dan een parameter van. Een Google Sheets-actie die tijdens het gesprek een rij toevoegt, heeft dit veld niet: in de kolommen werken dan alleen vaste tekst en de variabelen uit een campagne of de API. Wil je gegevens uit het gesprek in de rij, kies dan Na het gesprek.
Bij een gesprek uit een campagne of via de API zijn tijdens en na het gesprek ook de variabelen beschikbaar die daarbij zijn meegegeven.
Eigen variabelen
Wil je iets vastleggen wat niet in de lijst staat, zoals de postcode of het type storing? Definieer dan een eigen variabele op een actie na het gesprek, onder Extra variabelen om te extraheren. Elke eigen variabele heeft:
| Instelling | Betekenis | Standaard |
|---|---|---|
| Naam van de variabele | De naam die je in sjablonen gebruikt, bijvoorbeeld postcode. Begint met een letter en bevat verder alleen letters, cijfers en _ | — |
| Type | string (tekst), number (getal) of boolean (ja/nee) | string |
| Beschrijving voor de assistent | De uitleg waarmee het AI-model de waarde uit het gesprek haalt | — |
Na het gesprek leest het AI-model het transcript en vult het elke eigen variabele op basis van de beschrijving. De waarde kun je daarna gebruiken in alle acties die na dat gesprek draaien. Voorbeeld: naam postcode, type string, beschrijving "De postcode van het adres van de beller".
Tips:
- Schrijf een precieze beschrijving. "Het adres" is vaag; "Alleen de postcode van het adres waar de storing is, in het formaat 1234 AB" levert betere resultaten.
- Gebruik een ingebouwde variabele als die bestaat. Maak dus geen eigen variabele
telefoonnummeraan; gebruikpersonNumber. - Wordt iets niet genoemd in het gesprek, dan blijft de variabele leeg, ook als je verplicht hebt aangevinkt. Zo voorkom je dat het model gaat gokken.
Sjabloonsyntaxis
Een variabele zet je in een sjabloon tussen dubbele accolades: {{summary}}. Geneste velden schrijf je met een punt: {{contact.name}}, {{company.name}}, {{inboundContext.customerId}}. Eigen variabelen werken op dezelfde manier: {{postcode}}.
Onbekende of lege variabelen worden vervangen door een lege tekst; het sjabloon blijft dus altijd werken. Een voorbeeld van een e-mailtekst:
Nieuw gesprek via {{channel}} op {{startTimestamp}}
Beller: {{contact.name}} ({{personNumber}})
Uitkomst: {{outcome}}
Postcode: {{postcode}}
Samenvatting:
{{summary}}
Bekijk het gesprek: {{conversationLink}}Resultaten bekijken
Het resultaat van elke actie na het gesprek wordt bewaard bij het gesprek. Open een gesprek in de Inbox en klap Technische details open. Bij Wat de acties hebben gedaan zie je per actie de naam, met een korte technische regel in het Engels. De naam is rood als de actie is mislukt en groen als er geen fout is opgetreden. Groen betekent dus niet altijd dat er iets is verstuurd, want ook een overgeslagen actie is groen. Kijk daarom ook naar de technische regel:
sent to kantoor@voorbeeld.nlofHTTP 200: de actie is uitgevoerd. Staat er achtersent togeen nummer, dan is er niets verstuurd. Dat gebeurt bij een sms naar de beller na een webchat, omdat daar geen telefoonnummer bekend is.HTTP 401:met het begin van het antwoord: de actie is mislukt en de naam is rood.skipped: ...: er is niets verstuurd. Bijvoorbeeldskipped: condition not metals de voorwaarde niet van toepassing was, maar ookskipped: no recipient,skipped: email sender not configured,skipped: business has no SMS-capable number or sender nameofskipped: empty textals er iets ontbreekt.
Zo controleer je snel of je e-mail is verstuurd, of waarom een webhook een 401 teruggaf. Meer over de Inbox lees je in Inbox en analyse.
Acties vóór en tijdens het gesprek staan niet in deze lijst. Wat er vóór het gesprek is opgehaald, zie je bij Gegevens die voor het gesprek zijn opgezocht. De waarden van je eigen variabelen zie je bij Gegevens uit het gesprek.