ThunderPhone 2.0 ir klāt.Sāciet patstāvīgi — no 2 ¢/min.Lasīt paziņojumu

Developer cookbook

Testējiet balss aģentu no sākuma līdz beigām (API)

Palaidiet vienreizējas simulācijas, paralēlas scenāriju paketes un laidienu vārtu testu komplektus, izmantojot ThunderPhone API, lai balss aģenta regresijas tiktu atklātas, pirms tās pamana klienti.

AI aģenta pilnveidošana nozīmē tā uzvednes, rīku un malu gadījumu apstrādes iteratīvu uzlabošanu. Simulāciju API veic reālus zvanus aģentam, izmantojot jūsu norādītu scenārija uzvedni. Mērķējot uz aģentu, tiek izveidots bota–bota izpildījums; mērķējot uz tālruņa numuru, tiek izveidots SIP atgriezeniskās cilpas izpildījums. Katrs izpildījums izveido reālu zvanu žurnālu ar transkriptu, vērtējumu un norēķiniem, lai jūs precīzi redzētu, kā aģents darbojas un cik tas maksā.

Izmantojiet to šādiem mērķiem:

  • Ātrajām pārbaudēm pirms izvietošanas pēc katra uzvednes labojuma
  • Regresijas komplektiem, kas savienoti ar CI (piesaistiet test-call.completed tīmekļa āķi → neizlaidiet būvējumu, ja vērtējums samazinās)
  • Vienlaicības ierobežojumu slodzes testēšanai

Vienreizējs izpildījums: viena palaišana

curl -X POST https://api.thunderphone.com/v1/simulations \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_type":     "agent",
    "target_id":       12,
    "direction":       "outbound",
    "scenario_prompt": "You are a polite caller asking about refund policy for order 12345.",
    "consent_to_charge": true
  }'

Lauki:

LauksTipsObligātsApraksts
target_typevirknejāagent vai phone_number
target_idvesels skaitlisjāBalss aģenta ID (vai tālruņa numura ID)
directionvirknenēoutbound (noklusējums; testa zvanītājs zvana) vai inbound (testa zvanītājs atbild)
scenario_promptvirknenēNosaka, ko saka testa bots
language / primary_languagevirknenēTesta zvanītāja valoda; neatbalstīti kodi tiek noraidīti
simulator_productvirknenētesting (noklusējums) vai spark, lai simulētais zvanītājs būtu cilvēciskāks, piemēram, siltās pārsūtīšanas konsultācijas testos
consent_to_chargeBūla vērtībajāJābūt true. Aprēķins iekasē maksu gan par atlasīto balss aģentu, gan simulēto zvanītāju pēc vienotas minūtes likmes, kā arī par jebkuru telefonijas savienojumu
target_numbervirknenēE.164 aizstāšana attālajai pusei; pretējā gadījumā tiek izmantots platformas testa numurs

mode ir tikai lasāms un tiek atvasināts no target_type: agent izveido mode="bot", savukārt phone_number izveido mode="sip".

Atbilde ir simulācijas izpildījuma objekts ar status="queued". Veiciet aptauju, līdz status kļūst par completed vai failed; kad ir iestatīts call_id, ielādējiet transkriptu, izmantojot GET /v1/calls/{call_id}/transcript.

Paketes: paralēli scenāriji

Vienlaikus palaidiet N scenārijus — noderīgi regresijas komplektiem, kas paralēli pārbauda katru zināmo malu gadījumu:

curl -X POST https://api.thunderphone.com/v1/simulations/batches \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target_type":     "agent",
    "target_id":       12,
    "direction":       "outbound",
    "run_count":       5,
    "stagger_seconds": 2,
    "scenario_prompts": [
      "Ask about refund policy.",
      "Ask for hours of operation.",
      "Complain about a delayed shipment.",
      "Ask to speak with a human.",
      "Ask an unrelated trivia question."
    ],
    "consent_to_charge": true
  }'

Atbildē ir pakārtoto izpildījumu ID saraksts run_ids. Iegūstiet paketes statusu:

curl https://api.thunderphone.com/v1/simulations/batches/{batch_id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

run_count maksimālā vērtība ir 20; stagger_seconds nosaka palaišanas intervālus, lai nepārslogotu aģentu (0–60 s).

Pievienojiet to CI

Izveidojiet laidiena vārtejas komplektu lapā Simulācijas (/dashboard/simulations) — izvēlieties balss aģentu, manuāli pievienojiet scenārijus vai noklikšķiniet uz Ģenerēt scenārijus ar MI, lai izveidotu tos no balss aģenta uzvednes (ar izvēles robežgadījumu pārbaudi), un grupējiet tos komplektā. Komplekts fiksē tā scenārijus un balss aģentu, kā arī minimālo izturēšanas rādītāju un izvēles noteikumu par nulli kritisku kļūmju. Sekmīgi izpildījumi kļūst par pieņemto bāzlīniju; vēlākas pārejas no izturēta uz neizturētu rezultātu tiek atgrieztas kā regresijas.

CI izmantojiet organizācijas API atslēgu. Šis skripts aktivizē komplektu, aptaujā līdz vērtēšana un salīdzināšana ir pabeigta, un tiek pārtraukts ar rezultātu, kas nav nulle, ja vien spriedums nav pass:

#!/usr/bin/env bash
set -euo pipefail
 
: "${THUNDERPHONE_API_KEY:?Set THUNDERPHONE_API_KEY}"
: "${THUNDERPHONE_ORG_ID:?Set THUNDERPHONE_ORG_ID}"
: "${THUNDERPHONE_SUITE_ID:?Set THUNDERPHONE_SUITE_ID}"
 
base="https://api.thunderphone.com/v1/orgs/${THUNDERPHONE_ORG_ID}/suites/${THUNDERPHONE_SUITE_ID}"
auth="Authorization: Bearer ${THUNDERPHONE_API_KEY}"
 
run_id="$(curl --fail --silent --show-error -X POST "${base}/run" \
  -H "$auth" -H "Content-Type: application/json" -d '{}' | jq -r '.id')"
 
deadline=$((SECONDS + 1800))
while (( SECONDS < deadline )); do
  result="$(curl --fail --silent --show-error \
    "${base}/runs/${run_id}" -H "$auth")"
  status="$(jq -r '.status' <<<"$result")"
  if [[ "$status" == "completed" ]]; then
    jq . <<<"$result"
    [[ "$(jq -r '.verdict' <<<"$result")" == "pass" ]]
    exit
  fi
  sleep 10
done
 
echo "ThunderPhone suite timed out" >&2
exit 1

POST /v1/orgs/{org_id}/suites/{suite_id}/run atgriež 202 ar izpildījuma ID. GET /v1/orgs/{org_id}/suites/{suite_id}/runs/{run_id} atgriež status, verdict, pass_rate, critical_failure_count un bāzlīnijas regressions sarakstu. Abi galapunkti saista URL organizāciju ar API atslēgas organizāciju.

Palaidiet komplektu pēc grafika

Atveriet balss aģenta cilni Simulēt, atlasiet Laidiena vārtejas komplekti un izveidojiet vai rediģējiet komplektu. Ieslēdziet Palaist pēc grafika, izvēlieties Biežums un Laika josla, pēc tam iestatiet Minūte pēc stundas, Vietējais laiks vai Diena, kā parādīts. Atlasiet Saglabāt komplektu. Noņemot atzīmi no Palaist pēc grafika, tiek noņemts informācijas paneļa grafiks.

Izmantojot API

Nosūtiet PATCH pieprasījumu komplektam, lai pievienotu vai aizstātu tā grafiku. Pilnu komplekta objektu un galapunktus skatiet sadaļā Komplekti (laidiena vārtejas).

curl -X PATCH https://api.thunderphone.com/v1/suites/{suite_id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "schedule": {
      "enabled": true,
      "frequency": "daily",
      "timezone": "America/Chicago",
      "hour": 6,
      "minute": 30
    }
  }'

frequency var būt hourly, daily vai weekly. Izmantojiet IANA laika joslu. Stundu grafikos tiek izmantots minute; dienas grafikos tiek izmantoti hour un minute; nedēļas grafikos tiek izmantots arī weekday, kur pirmdiena ir 0 un svētdiena ir 6. Komplekta atbilde ietver next_run_at un last_run_at.

Laiki seko atlasītās laika joslas vasaras laika izmaiņām. Ieplānotie izpildījumi tiek parādīti komplekta izpildījumu vēsturē un izmanto tā pašreizējo balss aģentu, scenārijus, kritērijus un pieņemto bāzlīniju. Katrs ģenerētais testa zvans izvada test-call.completed; komplekta līmeņa pabeigšanas tīmekļa aizķeres nav. Par ieplānotajiem zvaniem tiek piemērota tāda pati simulācijas maksa kā par manuāliem komplekta izpildījumiem, un komplekta izpildījumā tiek reģistrēts trigger: "schedule".

Lai apturētu grafiku, nemainot tā laiku, nosūtiet PATCH pieprasījumu ar pilnu esošo grafika objektu un "enabled": false. frequency ir obligāts; izlaistie laika joslas un laika lauki tiek atiestatīti uz noklusējuma vērtībām, tāpēc iekļaujiet esošās vērtības. Nosūtiet "schedule": null, lai noņemtu grafiku.

Modeļi

Regresijas korpuss katrai uzvednei

Uzturiet JSON failu ar {name, scenario_prompt, expected_outcome} trijniekiem. Pēc katras uzvednes izmaiņas palaidiet visu kopu partijā; salīdziniet atšifrējumus un vērtējumus ar iepriekšējo palaišanu.

Dūmu tests katrai versijai

Viena piecu veiksmīgu scenāriju partija, ko palaižat pēc katras izvietošanas. Tā ir jutīga pret latentumu, tāpēc saglabājiet stagger_seconds: 0.

Latentuma etalonmērīšana

Palaidiet identiskus scenārijus dažādos produktu līmeņos (spark, bolt, storm-base). Salīdziniet call.graded vērtējumus un duration_seconds no katra iegūtā zvanu žurnāla.


Nākamās darbības