ThunderPhone 2.0 on nyt julkaistu.Ota käyttöön itse – alkaen 2¢/min.Lue lisää julkistuksesta

Developer cookbook

Puhelukohtaiset muuttujat

Mukauta tallennettu agentti jokaista puhelua varten muuttamatta sen julkaistua kehotetta, työkaluja tai asetuksia.

Lisää paikkamerkit tallennetun agenttisi kehotteeseen ja anna sitten variables- objekti, kun aloitat puhelun. Tallennettu määritys ja versiohistoria pysyvät muuttumattomina. ThunderPhone renderöi tekstin ennen puhelumäärityksen lähettämistä puheajoaikaan.

Kun arvoja ei tarvita, jätä variables pois. Älä lähetä arvoa null (hylätään koodilla 400).

Paikkamerkit ja oletusarvot

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

Nimet erottelevat kirjainkoon ja noudattavat muotoa [A-Za-z_][A-Za-z0-9_]*. Välilyönnit nimen ympärillä ovat sallittuja; |-merkin jälkeinen välilyönti on osa oletusarvoa ja säilytetään. {{name|Friend}} käyttää arvoa Friend, kun name puuttuu tai sen arvo on null; tyhjä merkkijono on nimenomaisesti annettu arvo. Puuttuvat arvot ilman oletusarvoa muuttuvat tyhjiksi merkkijonoiksi, ja niiden nimet näkyvät kentässä unresolved_variables. Kaksoisaaltosulkeiden välissä oleva teksti, joka ei ole kelvollinen paikkamerkki, poistetaan. Kussakin annetussa arvossa olevat kaksoisaaltosulkeissa olevat tekstit poistetaan itsenäisesti; arvo ei voi poistaa ympäröivää kehotetekstiä tai toista arvoa. Myös täsmäämättömät kaksoisaaltosulkeiden erottimet poistetaan. Kehotteissa olevissa JSON-esimerkeissä ei saa käyttää merkintää {{. Arvot ovat pelkkää tekstiä, eikä niitä koskaan arvioida koodina tai laajenneta rekursiivisesti malleina.

Muuttujia voi esiintyä myös kuittauskehotteissa, lähtevissä vastaajaviesteissä ja suostumusilmoituksen tekstissä, kun kyseinen kenttä lähetetään puhelua varten. Agentilla ei ole erillistä first_message-kenttää: lisää sen aloitusohjeet kehotteeseen. Nykyiset vastaajaviestin {agent_name}- ja {org_name}- paikkamerkit toimivat edelleen.

Arvot voivat olla merkkijonoja, numeroita, totuusarvoja tai null; totuusarvot renderöidään arvoina true ja false. Unicode-ohjausmerkit (Cc) lukuun ottamatta rivinvaihtoa (\n), sarkainta (\t) ja rivinvaihtopalautusta (\r), kaikki muotoilumerkit (Cf) sekä korvikealueen (Cs) koodipisteet poistetaan; \r\n normalisoidaan muotoon \n. Kukin arvo rajoitetaan renderöitäessä 2 000 merkkiin. Annetut merkkijonot myös puhdistetaan ja katkaistaan ennen tallennusta. Alkuperäisen objektin on mahduttava 32 KB:n UTF-8 JSON -kokoon; suuremmat objektit palauttavat puhelu-/istuntopyynnöissä koodin 400, kun taas kampanjatuonnit ilmoittavat virheelliset rivit erikseen. Taulukoita ja sisäkkäisiä objekteja ei hyväksytä arvoiksi. Metatietoavaimet, jotka eivät vastaa muotoa (esimerkiksi CSV-otsikko, jossa on välilyönti), säilytetään ja toistetaan, mutta niihin ei voi viitata paikkamerkillä.

Mistä arvot tulevat

Lähtevien puhelujen API

Lähetä variables yhdessä agent_id-kentän kanssa pyynnössä 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"
  }
}

Tämä toimii myös puhelinnumeron oletuslähtevän puheagentin tai rivinsisäisen config.prompt-määrityksen kanssa. Idempotenssiavainta ei voi käyttää uudelleen eri muuttujilla.

Kampanjan CSV

Muut kuin puhelinnumeroita sisältävät CSV-sarakkeet tallennetaan jo yhteystietomuuttujina. Jokainen soitto käyttää niitä nyt automaattisesti. Käytä otsikoita, kuten name, account_id ja appointment_slot, vastaamaan paikkamerkkejäsi. Nykyinen nimikartoitus voi yhdistää etu- ja sukunimisarakkeet muuttujaan name.

Dynaamisen määrityksen webhook

Synkronisen määrityswebhookin reitillä palauta organisaatiosi tallennettu agentti sekä puhelukohtaiset arvot:

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

Vastauksen avaimet ylikirjoittavat pyyntötason muuttujat, kun taas muut pyynnön avaimet säilyvät. Vastauksen arvo null valitsee paikkamerkin oletusarvon. Yhdistetyn objektin on myös mahduttava 32 KB:iin. Tallennetun agentin vastaukset hyväksyvät vain agent_id- ja variables-kentät; palauta rivinsisäinen määritys, kun sinun täytyy korvata kehote tai asetukset. prompt-kentän sisältävä vastaus käyttää aina rivinsisäistä määritystä: kaikki vastauksessa olevat agent_id-kentät ohitetaan, mukaan lukien null- tai ei-kokonaislukumuotoiset metatiedot. Rivinsisäisen kehotteen on silti läpäistävä normaali validointi. Rivinsisäiset webhook-vastaukset voivat sisältää myös variables-kentän. Tallennetun agentin webhook- vastaukset käyttävät agentin käyttöönotettua A/B-jakoa sekä puhelin- että widget-puheluissa; muuttujat renderöidään variantin valinnan jälkeen. Saapuvissa puheluissa käytä numeroa, johon ei ole määritetty saapuvien puhelujen agenttia, ja määritä sen puhelinnumeron tai organisaation webhook; widget-avaimet käyttävät mode="webhook". Päätepistejärjestelmän saapuvat ilmoitukset eivät tarjoa synkronisia määritysvastauksia.

Widget- ja Realtime-istuntojen API:t

POST /v1/widget/session hyväksyy ylimmän tason variables-objektin. Sen julkaistava avain valitsee tallennetun agentin. Webhook-tilan avaimet välittävät nämä arvot määrityswebhookiin ja yhdistävät vastauksen yllä kuvatulla tavalla. Selainasiakkaan hallitsemat widget-/realtime-variables-muuttujat välitetään muuttamattomina kohteessa web.incoming yllä kuvatun validoinnin ja merkkijonojen siivouksen jälkeen, ja ne toistetaan valmistumiswebhookeihin ja puheluhistoriaan. Älä käsittele niitä luotettavina identiteetti- tai valtuutustietoina.

POST /v1/realtime/sessions hyväksyy variables-kentän yhdessä agent_id-kentän (tai rivinsisäisen config-määrityksen) kanssa. Nämä ovat istunnon luonti-API:n kenttiä. Realtime WebSocket -silta ei välitä variables-vaihtoehtoa; anna se suoraan istunnon luonti-API:lle. Widget-asiakkaiden on sisällytettävä variables lähetettyyn istuntopyyntöön; SDK-välitys ei kuulu tähän API-muutokseen. Builderin mikrofonilla tehdyt ja simuloidut testipuhelut ratkaisevat oletusarvot ja puuttuvat paikkamerkit, mutta niillä ei ole puhelukohtaisten muuttujien syötettä.

Puhelun jälkeen palautettavat arvot

GET /v1/calls, GET /v1/calls/{call_id}, telephony.complete ja web.complete sisältävät lopulliset yhdistetyt variables- ja unresolved_variables-kentät. Vanhat valmistumisen hyötykuormat, jotka sisältävät data.history, sisältävät myös ne:

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

Tallenna CRM- tai tehtävätunnisteesi muuttujaobjektiin, jotta voit yhdistää valmistuneen puhelun takaisin sen lähdetietueeseen. Nämä kentät säilytetään puhelutietueen yhteydessä; lähetä vain tietoja, jotka on asianmukaista säilyttää puheluhistoriassa ja webhookeissa.

Yhteensopivuus olemassa olevien kehotteiden kanssa

Renderöinti koskee myös olemassa olevia tallennettujen agenttien ja A/B-varianttien kehotteita, upotettuja lähteviä ja reaaliaikaisia määrityksiä sekä määrityswebhookeista palautettuja kehotteita. Tuntemattomat {{name}}-paikkamerkit muuttuvat tyhjäksi tekstiksi, vaikka variables-arvoja ei toimitettaisi. Tarkista olemassa olevat kehotteet ennen käyttöönottoa, mukaan lukien ulkoisesti toimitetut upotetut/webhook-kehotteet, joita ThunderPhone ei voi inventoida. Builderin mikrofonilla tehdyt ja simuloidut puhelut käyttävät samaa oletus-/tyhjäkäyttäytymistä.