ThunderPhone 2.0 er lanceret.Selvbetjening fra 2 cent/min.Læs mere om lanceringen

Developer cookbook

Variabler pr. opkald

Tilpas en gemt agent til hvert opkald uden at ændre dens implementerede prompt, værktøjer eller indstillinger.

Indsæt pladsholdere i din gemte agents prompt, og angiv derefter et variables-objekt, når du starter et opkald. Den gemte konfiguration og versionshistorik forbliver uændret. ThunderPhone gengiver teksten, før opkaldskonfigurationen sendes til stemme-runtime.

Når der ikke er behov for værdier, skal du udelade variables og ikke sende null (afvises med 400).

Pladsholdere og standardværdier

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

Navne skelner mellem store og små bogstaver og følger [A-Za-z_][A-Za-z0-9_]*. Mellemrum omkring navnet er tilladt; mellemrum efter | er en del af standardværdien og bevares. {{name|Friend}} bruger Friend, når name mangler eller er null; en tom streng er en eksplicit angivet værdi. Manglende værdier uden en standardværdi bliver til tomme strenge, og deres navne vises i unresolved_variables. Tekst mellem dobbelte krøllede parenteser, der ikke er en gyldig pladsholder, fjernes. Tekst med dobbelte krøllede parenteser i hver angivet værdi fjernes uafhængigt; en værdi kan ikke fjerne omgivende prompttekst eller en anden værdi. Umatchede afgrænsere med dobbelte krøllede parenteser fjernes også. JSON-eksempler i prompter må ikke bruge {{. Værdier er ren tekst og evalueres aldrig som kode eller udvides rekursivt som skabeloner.

Variabler kan også forekomme i bekræftelsesprompter, udgående voicemail- beskeder og teksten til samtykkeerklæringen, når dette felt sendes for et opkald. Agenten har ikke et separat first_message-felt: angiv dens indledende instruktioner i prompten. Eksisterende voicemail-pladsholdere {agent_name} og {org_name} fungerer fortsat.

Værdier kan være strenge, tal, booleske værdier eller null; booleske værdier gengives som true og false. Unicode-kontroltegn (Cc) undtagen linjeskift (\n), tabulator (\t) og vognretur (\r), alle formattegn (Cf) og surrogatkodepunkter (Cs) fjernes; \r\n normaliseres til \n. Hver værdi er begrænset til 2.000 tegn ved gengivelse. Angivne strenge renses og afkortes også før lagring. Det oprindelige objekt skal kunne være inden for 32 KB UTF-8-JSON; større objekter modtager 400 ved opkalds- eller sessionsanmodninger, mens kampagneimporter rapporterer ugyldige rækker enkeltvis. Arrays og indlejrede objekter accepteres ikke som værdier. Metadata-nøgler, der ikke matcher (for eksempel en CSV-overskrift med et mellemrum), bevares og gentages, men kan ikke refereres af en pladsholder.

Hvor værdier kommer fra

Udgående API

Send variables sammen med agent_idPOST /v1/call:

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

Det fungerer også med telefonnummerets standardagent for udgående opkald eller med en indlejret config.prompt. En idempotensnøgle kan ikke genbruges med forskellige variabler.

Kampagne-CSV

CSV-kolonner, der ikke er telefonnumre, gemmes allerede som kontaktvariabler. Hvert opkaldsforsøg bruger dem nu automatisk. Brug overskrifter som name, account_id og appointment_slot til at matche dine pladsholdere. Den eksisterende navnekortlægning kan kombinere kolonner med fornavn og efternavn til variablen name.

Webhook til dynamisk konfiguration

På stien for den blokerende konfigurationswebhook skal du returnere en gemt agent i din organisation samt eventuelle værdier pr. opkald:

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

Svarnøglerne overskriver variabler på anmodningsniveau, mens andre anmodnings- nøgler bevares. En svarværdi på null vælger pladsholderens standardværdi. Det flettede objekt må heller ikke overstige 32 KB. Svar for gemte agenter accepterer kun agent_id og variables; returner en indlejret konfiguration, når du skal erstatte prompten eller indstillingerne. Et svar, der indeholder prompt, bruger altid indlejret konfiguration: ethvert agent_id i det svar ignoreres, herunder null eller metadata, der ikke er heltal. Den indlejrede prompt skal stadig bestå den normale validering. Indlejrede webhooksvar kan også indeholde variables. Webhooksvar for gemte agenter bruger agentens implementerede A/B-opdeling på både telefon- og widgetopkald; variabler gengives efter valg af variant. Ved indgående telefonopkald skal du bruge et nummer uden tildelt indgående agent og konfigurere dets webhook for telefonnummeret eller organisationen; widgetnøgler bruger mode="webhook". Indgående meddelelser fra endpointsystemet leverer ikke blokerende konfigurationssvar.

API'er til widget- og Realtime-sessioner

POST /v1/widget/session accepterer et variables-objekt på øverste niveau. Dets publicerbare nøgle vælger den gemte agent. Nøgler i webhooktilstand videresender disse værdier til konfigurationswebhookpen og fletter svaret som beskrevet ovenfor. Widget-/realtime-variables, der leveres af browseren, styres af klienten, videresendes ordret i web.incoming efter valideringen og strengoprydningen beskrevet ovenfor og gentages i webhookpe for fuldførelse og opkaldshistorik. Behandl dem ikke som betroede data til identitet eller autorisation.

POST /v1/realtime/sessions accepterer variables sammen med agent_id (eller indlejret config). Dette er felter i API'et til oprettelse af sessioner. Realtime WebSocket- broen videresender ikke en variabelindstilling; angiv den direkte til API'et til oprettelse af sessioner. Widgetklienter skal inkludere variables i den sendte sessionsnyttelast; videresendelse fra SDK'et er ikke en del af denne API-ændring. Mikrofonopkald i Builder og simulerede testopkald løser standardværdier og manglende pladsholdere, men har ingen input til variabler pr. opkald.

Værdier returneret efter opkaldet

GET /v1/calls, GET /v1/calls/{call_id}, telephony.complete og web.complete indeholder de endelige flettede variables og unresolved_variables. Ældre nyttelaster for fuldførelse, der indeholder data.history, inkluderer dem også:

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

Gem din CRM- eller opgaveidentifikator i variabelobjektet for at knytte det afsluttede opkald tilbage til dets kilderegistrering. Disse felter bevares sammen med opkaldsregistreringen; send kun oplysninger, der er egnede til at blive bevaret i opkaldshistorik og webhookpe.

Kompatibilitet med eksisterende prompter

Rendering gælder også for eksisterende gemte agent- og A/B-variantprompter, integrerede udgående konfigurationer og realtidskonfigurationer samt prompter, der returneres af konfigurationswebhooks. Ukendte {{name}}-pladsholdere bliver til tom tekst, også når der ikke angives variables. Gennemgå eksisterende prompter før udrulning, herunder eksternt leverede integrerede webhook-prompter, som ThunderPhone ikke kan registrere. Builder-mikrofon- og simuleringsopkald anvender den samme standard-/tom-adfærd.