ThunderPhone 2.0 er lansert.Kom i gang selv, fra 2 ¢/min.Les mer om lanseringen

Developer cookbook

Variabler per samtale

Tilpass en lagret agent for hver samtale uten å endre den distribuerte ledeteksten, verktøyene eller innstillingene.

Plasser plassholdere i prompten til den lagrede stemmeagenten, og oppgi deretter et variables-objekt når du starter en samtale. Den lagrede konfigurasjonen og versjonshistorikken forblir uendret. ThunderPhone gjengir teksten før samtalekonfigurasjonen sendes til stemmekjøretiden.

Når ingen verdier trengs, utelat variables; ikke send null (avvises med 400).

Plassholdere og standardverdier

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

Navn skiller mellom store og små bokstaver og følger [A-Za-z_][A-Za-z0-9_]*. Mellomrom rundt navnet er tillatt; mellomrom etter | er en del av standardverdien og beholdes. {{name|Friend}} bruker Friend når name mangler eller er null; en tom streng er en eksplisitt oppgitt verdi. Manglende verdier uten standardverdi blir tomme strenger, og navnene deres vises i unresolved_variables. Tekst mellom doble krøllparenteser som ikke er en gyldig plassholder, fjernes. Tekst med doble krøllparenteser i hver oppgitte verdi fjernes uavhengig; en verdi kan ikke fjerne omkringliggende prompttekst eller en annen verdi. Umatchede skilletegn med doble krøllparenteser fjernes også. JSON-eksempler i prompter må ikke bruke {{. Verdier er ren tekst og evalueres aldri som kode eller utvides rekursivt som maler.

Variabler kan også vises i bekreftelsesprompter, utgående telefonsvarermeldinger og teksten i samtykkeerklæringen når dette feltet sendes for en telefonsamtale. Agenten har ikke et eget first_message-felt: legg inn åpningsinstruksjonene i prompten. Eksisterende telefonsvarersplassholdere {agent_name} og {org_name} fortsetter å fungere.

Verdier kan være strenger, tall, boolske verdier eller null; boolske verdier gjengis som true og false. Unicode-kontrolltegn (Cc) unntatt linjeskift (\n), tabulator (\t) og vognretur (\r), alle formateringstegn (Cf) og surrogatkodepunkter (Cs) fjernes; \r\n normaliseres til \n. Hver verdi er begrenset til 2 000 tegn når den gjengis. Oppgitte strenger renses og avkortes også før lagring. Det opprinnelige objektet må få plass i 32 KB med UTF-8-JSON; større objekter får 400 i samtale-/øktforespørsler, mens kampanjeimporter rapporterer ugyldige rader enkeltvis. Matriser og nestede objekter godtas ikke som verdier. Metadatanøkler som ikke samsvarer (for eksempel en CSV-overskrift med et mellomrom) beholdes og gjengis, men kan ikke refereres av en plassholder.

Hvor verdiene kommer fra

Utgå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"
  }
}

Dette fungerer også med telefonnummerets standard agent for utgående samtaler, eller med en innebygd config.prompt. En idempotensnøkkel kan ikke gjenbrukes med andre variabler.

Kampanje-CSV

CSV-kolonner som ikke er telefonnumre, lagres allerede som kontaktvariabler. Hver oppringing bruker dem nå automatisk. Bruk overskrifter som name, account_id og appointment_slot for å samsvare med plassholderne dine. Den eksisterende navnekoblingen kan kombinere kolonner for fornavn og etternavn i variabelen name.

Webhook for dynamisk konfigurasjon

I banen for den blokkerende konfigurasjonswebhooken returnerer du en lagret agent i organisasjonen din samt eventuelle verdier per samtale:

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

Svarnøklene overskriver variabler på forespørselsnivå, mens andre forespørselsnøkler beholdes. En svarverdi på null velger plassholderens standardverdi. Det sammenslåtte objektet må også være innenfor 32 KB. Svar for lagrede agenter godtar kun agent_id og variables; returner en innebygd konfigurasjon når du trenger å erstatte prompten eller innstillingene. Et svar som inneholder prompt, bruker alltid innebygd konfigurasjon: enhver agent_id i det svaret ignoreres, inkludert null eller metadata som ikke er heltall. Den innebygde prompten må fortsatt bestå vanlig validering. Innebygde webhook-svar kan også inkludere variables. Webhook-svar for lagrede agenter bruker agentens utrullede A/B-fordeling for både telefon- og widget-samtaler; variabler gjengis etter valg av variant. For innkommende telefonsamtaler bruker du et nummer uten en tilordnet innkommende agent og konfigurerer webhooken for telefonnummeret eller organisasjonen; widget-nøkler bruker mode="webhook". Innkommende varsler fra endepunktsystemet leverer ikke blokkerende konfigurasjonssvar.

API-er for widget- og Realtime-økter

POST /v1/widget/session godtar et variables-objekt på øverste nivå. Den publiserbare nøkkelen velger den lagrede agenten. Nøkler i webhook-modus videresender disse verdiene til konfigurasjonswebhooken og slår sammen svaret som beskrevet ovenfor. Widget-/realtime-variables som leveres av nettleseren, styres av klienten, videresendes ordrett i web.incoming etter valideringen og oppryddingen av strenger som er beskrevet ovenfor, og gjentas i webhooker for fullføring og samtalehistorikk. Ikke behandle dem som pålitelige identitets- eller autorisasjonsdata.

POST /v1/realtime/sessions godtar variables sammen med agent_id (eller innebygd config). Dette er felt for API-et som oppretter økter. Realtime WebSocket- broen videresender ikke et variabelalternativ; oppgi det direkte til API-et som oppretter økten. Widget-klienter må inkludere variables i den postede øktnyttelasten; videresending via SDK er ikke en del av denne API-endringen. Byggerens mikrofon- og simulerte testanrop løser standardverdier og manglende plassholdere, men har ingen inndata for variabler per samtale.

Verdier som returneres etter samtalen

GET /v1/calls, GET /v1/calls/{call_id}, telephony.complete og web.complete inkluderer de endelige sammenslåtte variables og unresolved_variables. Eldre nyttelaster for fullføring som inkluderer data.history, inkluderer dem også:

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

Lagre CRM- eller oppgaveidentifikatoren din i variabelobjektet for å koble den fullførte samtalen tilbake til kilderegistreringen. Disse feltene beholdes sammen med samtaleregistreringen; send bare informasjon som er egnet for lagring i samtalehistorikk og webhooker.

Kompatibilitet med eksisterende prompter

Rendering gjelder også for eksisterende lagrede agent- og A/B-variantprompter, innebygde utgående konfigurasjoner og sanntidskonfigurasjoner, samt prompter returnert av konfigurasjonswebhooks. Ukjente {{name}}-plassholdere blir til tom tekst, også når ingen variables oppgis. Kontroller eksisterende prompter før utrulling, inkludert eksternt leverte innebygde prompter og webhook-prompter som ThunderPhone ikke kan kartlegge. Mikrofon- og simuleringsanrop i Builder bruker samme standard-/tom-atferd.