ThunderPhone 2.0 är här.Kom igång själv, från 2 cent/minut.Läs lanseringsnyheten

Developer cookbook

Variabler per samtal

Anpassa en sparad röstagent för varje samtal utan att ändra dess driftsatta prompt, verktyg eller inställningar.

Placera platshållare i din sparade agents prompt och ange sedan ett variables-objekt när du startar ett samtal. Den sparade konfigurationen och versionshistoriken förblir oförändrade. ThunderPhone återger texten innan samtalskonfigurationen skickas till röstkörmiljön.

När inga värden behövs utelämnar du variables; skicka inte null (avvisas med 400).

Platshållare och standardvärden

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

Namn är skiftlägeskänsliga och följer [A-Za-z_][A-Za-z0-9_]*. Blanksteg runt namnet är tillåtna; blanksteg efter | ingår i standardvärdet och bevaras. {{name|Friend}} använder Friend när name saknas eller är null; en tom sträng är ett uttryckligen angivet värde. Saknade värden utan ett standardvärde blir tomma strängar och deras namn visas i unresolved_variables. Text mellan dubbla klamrar som inte är en giltig platshållare tas bort. Text med dubbla klamrar i varje angivet värde tas bort separat; ett värde kan inte ta bort omgivande prompttext eller ett annat värde. Omatchade avgränsare med dubbla klamrar tas också bort. JSON-exempel i prompter får inte använda {{. Värden är vanlig text och utvärderas aldrig som kod eller expanderas rekursivt som mallar.

Variabler kan också visas i bekräftelseprompter, utgående röstmeddelanden och texten för samtyckesmeddelandet när det fältet skickas för ett telefonsamtal. Agenten har inget separat first_message-fält: lägg dess inledande instruktioner i prompten. Befintliga platshållare för röstmeddelanden, {agent_name} och {org_name}, fortsätter att fungera.

Värden kan vara strängar, tal, booleska värden eller null; booleska värden återges som true och false. Unicode-kontrolltecken (Cc) utom nyrad (\n), tabulator (\t) och vagnretur (\r), alla formateringstecken (Cf) och surrogatkodpunkter (Cs) tas bort; \r\n normaliseras till \n. Varje värde är begränsat till 2 000 tecken när det återges. Angivna strängar rensas och trunkeras även före lagring. Det ursprungliga objektet måste rymmas inom 32 KB UTF-8-JSON; större objekt får 400 vid samtals-/sessionsbegäranden, medan kampanjimporter rapporterar ogiltiga rader var för sig. Arrayer och nästlade objekt accepteras inte som värden. Metadatatangenter som inte matchar (till exempel en CSV-rubrik med ett mellanslag) behålls och ekas men kan inte refereras av en platshållare.

Var värden kommer från

Utgående API

Skicka variables tillsammans med agent_id i 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"
  }
}

Det fungerar även med telefonnumrets standardagent för utgående samtal eller med en infogad config.prompt. En idempotensnyckel kan inte återanvändas med andra variabler.

Kampanj-CSV

CSV-kolumner som inte är telefonnummer lagras redan som kontaktvariabler. Varje uppringning använder dem nu automatiskt. Använd rubriker som name, account_id och appointment_slot för att matcha dina platshållare. Den befintliga namnkopplingen kan kombinera kolumner för förnamn och efternamn till variabeln name.

Webhook för dynamisk konfiguration

I sökvägen för den blockerande konfigurationswebhooken returnerar du en sparad agent i din organisation plus eventuella värden per samtal:

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

Svarens nycklar skriver över variabler på begärandenivå, medan övriga nycklar i begäran behålls. Ett svarsvärde på null väljer platshållarens standardvärde. Det sammanslagna objektet måste också rymmas inom 32 KB. Svar för sparade agenter accepterar endast agent_id och variables; returnera en infogad konfiguration när du behöver ersätta prompten eller inställningarna. Ett svar som innehåller prompt använder alltid infogad konfiguration: eventuell agent_id i svaret ignoreras, inklusive null eller metadata som inte är heltal. Den infogade prompten måste fortfarande klara vanlig validering. Infogade webhooksvar kan också innehålla variables. Webhooksvar för sparade agenter använder agentens driftsatta A/B-fördelning för både telefon- och widget-samtal; variabler återges efter val av variant. För inkommande telefonsamtal använder du ett nummer utan tilldelad inkommande agent och konfigurerar dess webhook för telefonnummer eller organisation; widgetnycklar använder mode="webhook". Inkommande aviseringar från endpoint-systemet tillhandahåller inte blockerande konfigurationssvar.

API:er för widget- och Realtime-sessioner

POST /v1/widget/session accepterar ett variables-objekt på toppnivå. Dess publicerbara nyckel väljer den sparade agenten. Nycklar i webhook-läge vidarebefordrar dessa värden till konfigurationswebhooken och slår samman svaret enligt beskrivningen ovan. Widget-/realtime-variables som tillhandahålls av webbläsaren styrs av klienten, vidarebefordras ordagrant i web.incoming efter valideringen och strängrensningen som beskrivs ovan, och återges i avslutswebhooks och samtalshistorik. Behandla dem inte som betrodd identitets- eller auktoriseringsdata.

POST /v1/realtime/sessions accepterar variables tillsammans med agent_id (eller infogad config). Dessa är API-fält för att skapa sessioner. Realtime WebSocket- bryggan vidarebefordrar inte ett alternativ för variabler; ange det direkt till API:et för att skapa sessioner. Widgetklienter måste inkludera variables i den skickade sessionsnyttolasten; SDK-vidarebefordran ingår inte i denna API-ändring. Builder-mikrofonen och simulerade testsamtal löser standardvärden och saknade platshållare men har ingen inmatning för variabler per samtal.

Värden som returneras efter samtalet

GET /v1/calls, GET /v1/calls/{call_id}, telephony.complete och web.complete innehåller de slutliga sammanslagna variables och unresolved_variables. Äldre nyttolaster för slutförande som innehåller data.history inkluderar dem också:

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

Lagra din CRM- eller uppgiftsidentifierare i variabelobjektet för att koppla det slutförda samtalet tillbaka till dess källpost. Dessa fält behålls tillsammans med samtalsposten; skicka endast information som är lämplig att behålla i samtalshistorik och webhooks.

Kompatibilitet med befintliga promptar

Rendering tillämpas även på befintliga promptar för sparade agenter och A/B-varianter, infogade utgående konfigurationer och realtidskonfigurationer samt promptar som returneras av konfigurationswebhooks. Okända platshållare som {{name}} blir tom text, även när inga variables anges. Kontrollera befintliga promptar före lansering, inklusive externt tillhandahållna infogade promptar och webhook-promptar som ThunderPhone inte kan inventera. Byggarens mikrofon- och simuleringssamtal använder samma standardbeteende för tomma värden.