ThunderPhone 2.0 is live.Direct zelf aan de slag, vanaf 2 cent/min.Lees de aankondiging

Developer cookbook

Variabelen per oproep

Personaliseer een opgeslagen agent voor elke oproep zonder de geïmplementeerde prompt, tools of instellingen te wijzigen.

Plaats placeholders in de prompt van je opgeslagen agent en geef vervolgens een variables- object mee wanneer je een oproep start. De opgeslagen configuratie en versiegeschiedenis blijven ongewijzigd. ThunderPhone rendert de tekst voordat de oproepconfiguratie naar de spraakruntime wordt verzonden.

Wanneer er geen waarden nodig zijn, laat je variables weg; stuur geen null (wordt geweigerd met 400).

Placeholders en standaardwaarden

You are calling {{name|Friend}} about account {{account_id}}.
The available appointment is {{ appointment_slot }}.

Namen zijn hoofdlettergevoelig en volgen [A-Za-z_][A-Za-z0-9_]*. Witruimte rond de naam is toegestaan; witruimte na | maakt deel uit van de standaardwaarde en blijft behouden. {{name|Friend}} gebruikt Friend wanneer name ontbreekt of null is; een lege tekenreeks is een expliciet opgegeven waarde. Ontbrekende waarden zonder standaardwaarde worden lege tekenreeksen en hun namen verschijnen in unresolved_variables. Tekst tussen dubbele accolades die geen geldige placeholder is, wordt verwijderd. Tekst tussen dubbele accolades binnen elke opgegeven waarde wordt onafhankelijk verwijderd; een waarde kan geen omringende prompttekst of andere waarde verwijderen. Niet-overeenkomende dubbele-accoladebegrenzingen worden ook verwijderd. JSON-voorbeelden in prompts mogen geen {{ gebruiken. Waarden zijn platte tekst en worden nooit als code geëvalueerd of recursief als templates uitgebreid.

Variabelen kunnen ook voorkomen in bevestigingsprompts, uitgaande voicemailberichten en de tekst van de toestemmingsmelding wanneer dat veld voor een telefoongesprek wordt verzonden. De agent heeft geen afzonderlijk veld first_message: plaats de openingsinstructies in de prompt. Bestaande voicemail-placeholders {agent_name} en {org_name} blijven werken.

Waarden kunnen tekenreeksen, getallen, booleaanse waarden of null zijn; booleaanse waarden worden weergegeven als true en false. Unicode-besturingstekens (Cc) behalve nieuwe regel (\n), tab (\t) en carriage return (\r), alle opmaaktekens (Cf) en surrogaatcodepunten (Cs) worden verwijderd; \r\n wordt genormaliseerd naar \n. Elke waarde is bij weergave beperkt tot 2.000 tekens. Opgegeven tekenreeksen worden ook opgeschoond en afgekapt vóór opslag. Het oorspronkelijke object moet binnen 32 KB UTF-8-JSON passen; grotere objecten ontvangen 400 bij oproep-/sessieverzoeken, terwijl campagne-imports ongeldige rijen afzonderlijk rapporteren. Arrays en geneste objecten worden niet als waarden geaccepteerd. Niet-overeenkomende metadatasleutels (bijvoorbeeld een CSV-header met een spatie) blijven behouden en worden teruggegeven, maar kunnen niet door een placeholder worden gebruikt.

Waar waarden vandaan komen

Uitgaande API

Stuur variables mee met agent_id naar POST /v1/call:

{
  "from_number": "+15551234567",
  "to_number": "+14155550199",
  "agent_id": 12,
  "variables": {
    "name": "Ada",
    "account_id": "A-17",
    "appointment_slot": "Tuesday at 10 AM"
  }
}

Dit werkt ook met de standaard uitgaande agent van het telefoonnummer, of met een inline config.prompt. Een idempotentiesleutel kan niet opnieuw worden gebruikt met andere variabelen.

Campagne-CSV

CSV-kolommen die geen telefoonnummers bevatten, worden al opgeslagen als contactvariabelen. Elke oproep gebruikt ze nu automatisch. Gebruik kopteksten zoals name, account_id en appointment_slot die overeenkomen met je placeholders. De bestaande naammapping kan kolommen voor voor- en achternaam combineren tot de variabele name.

Webhook voor dynamische configuratie

Geef op het pad van de blokkerende configuratiewebhook een opgeslagen agent in je organisatie plus waarden per oproep terug:

{"agent_id": 12, "variables": {"name": "Ada", "account_id": "A-17"}}

De sleutels van het antwoord overschrijven variabelen op aanvraagniveau, terwijl andere aanvraagsleutels behouden blijven. Een antwoordwaarde van null selecteert de standaardwaarde van de placeholder. Het samengevoegde object moet ook binnen 32 KB passen. Antwoorden met opgeslagen agents accepteren alleen agent_id en variables; geef een inline configuratie terug wanneer je de prompt of instellingen moet vervangen. Een antwoord met prompt gebruikt altijd een inline configuratie: elke agent_id in dat antwoord wordt genegeerd, inclusief null- of niet-gehele-metagegevens. De inline prompt moet nog steeds de normale validatie doorstaan. Inline webhookantwoorden kunnen ook variables bevatten. Webhookantwoorden met opgeslagen agents gebruiken de geïmplementeerde A/B-verdeling van de agent voor zowel telefoon- als widgetoproepen; variabelen worden weergegeven na de variantselectie. Gebruik voor inkomende telefoonoproepen een nummer zonder toegewezen inkomende agent en configureer de webhook van het telefoonnummer of de organisatie; widgetsleutels gebruiken mode="webhook". Inkomende meldingen van het endpointsysteem leveren geen blokkerende configuratieantwoorden.

Widget- en Realtime-sessie-API's

POST /v1/widget/session accepteert een variables-object op het hoogste niveau. De publiceerbare sleutel selecteert de opgeslagen agent. Sleutels in webhookmodus sturen deze waarden door naar de configuratiewebhook en voegen het antwoord samen zoals hierboven beschreven. Door de browser aangeleverde widget/realtime-variables worden door de client beheerd, woordelijk doorgestuurd in web.incoming na de hierboven beschreven validatie en opschoning van tekenreeksen, en opgenomen in completion-webhooks en de Oproepgeschiedenis. Behandel ze niet als vertrouwde identiteits- of autorisatiegegevens.

POST /v1/realtime/sessions accepteert variables samen met agent_id (of inline config). Dit zijn API-velden voor het aanmaken van sessies. De Realtime WebSocket- bridge stuurt geen optie voor variabelen door; geef deze rechtstreeks op aan de API voor het aanmaken van sessies. Widgetclients moeten variables opnemen in de geplaatste sessiepayload; SDK-doorsturing maakt geen deel uit van deze API-wijziging. Mic- en gesimuleerde testoproepen in Builder lossen standaardwaarden en ontbrekende placeholders op, maar hebben geen invoer voor variabelen per oproep.

Waarden die na de oproep worden teruggestuurd

GET /v1/calls, GET /v1/calls/{call_id}, telephony.complete en web.complete bevatten de uiteindelijk samengevoegde variables en unresolved_variables. Verouderde completion-payloads die data.history bevatten, bevatten deze ook:

{
  "variables": {"name": "Ada", "account_id": "A-17"},
  "unresolved_variables": ["appointment_slot"]
}

Sla je CRM- of taak-ID op in het variabelenobject om de voltooide oproep terug te koppelen aan het bronrecord. Deze velden worden bewaard bij het oproeprecord; stuur alleen informatie die geschikt is om te bewaren in de Oproepgeschiedenis en webhooks.

Compatibiliteit met bestaande prompts

Rendering geldt ook voor bestaande prompts van opgeslagen agents en A/B-varianten, inline uitgaande en realtime configuraties, en prompts die worden teruggestuurd door configuratiewebhooks. Onbekende {{name}}-placeholders worden lege tekst, zelfs wanneer er geen variables zijn opgegeven. Controleer bestaande prompts vóór de uitrol, inclusief extern aangeleverde inline-/webhookprompts die ThunderPhone niet kan inventariseren. Builder-microfoon- en simulatieoproepen gebruiken hetzelfde standaard-/lege gedrag.