React komponentas

Komponentas ThunderPhoneWidget pateikia stiklo efekto skambučių juostą su integruotais nutildymo, skambučio baigimo ir ryšio būsenos rodymo valdikliais. Tai greičiausias būdas pridėti balso DI prie React programos.

Diegimas

npm install @thunderphone/widget

Pagrindinis naudojimas

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
    />
  )
}

Savybės

Komponentas priima šias savybes per ThunderPhoneWidgetProps:

SavybėTipasBūtinaNumatytoji reikšmėAprašymas
publishableKeystringTaip--Viešas API raktas (pk_live_...) iš Kūrėjų nustatymų. Agentas automatiškai nustatomas pagal rakto valdiklio konfigūraciją.
theme'light' | 'dark'Ne'light'Spalvų schema. Valdiklio šakniniam elementui priskiria tp--light arba tp--dark klasę.
primaryColorstringNe'#000000' (šviesi) / '#ffffff' (tamsi)CSS spalvos eilutė, naudojama kaip akcento spalva (skambučio mygtukas, bangos forma, aktyvūs indikatoriai).
titlestringNe'Voice assistant'Valdiklio juostoje rodomas tekstas.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'Ne'bottom-right'Fiksuota valdiklio padėtis peržiūros srityje.
apiBasestringNe'https://api.thunderphone.com/v1'API bazinio URL pakeitimas.
languagestringNe--Vienos sesijos kalbos pakeitimas -- kalbos kodas arba lokalė, pvz., en, es arba fr-FR. Kai nenustatyta, taikoma sukonfigūruota agento kalba.
voicestringNe--Vienos sesijos balso pakeitimas -- balso pavadinimas, pvz., maria. Kai nenustatyta, taikomas sukonfigūruotas agento balsas.
contextstringNe--Agentui perduodamas vienos sesijos faktinis puslapio arba svetainės kontekstas (pavyzdžiui, informacija apie puslapį, kurį lankytojas peržiūri). Serverio pusėje sutrumpinama iki 12 000 simbolių.
onConnect() => voidNe--Iškviečiama, kai balso sesija sėkmingai prisijungia.
onDisconnect() => voidNe--Iškviečiama, kai sesija baigiama.
onError(error) => voidNe--Iškviečiama įvykus klaidoms. Objektas error turi laukus error (kodas) ir message.
classNamestringNe--Papildomas CSS klasės pavadinimas, priskiriamas valdiklio konteineriui.
ringtoneboolean | stringNefalseLeisti skambėjimo toną, kol užmezgamas ryšys. true naudoja numatytąjį skambėjimo toną, o URL eilutė -- pasirinktinį garsą.

Pavyzdžiai

Tamsi tema su pasirinkta spalva

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      theme="dark"
      primaryColor="#8b5cf6"
      title="Talk to our AI"
    />
  )
}

Pasirinkta pozicija

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      position="bottom-left"
    />
  )
}

Kalba, balsas ir kontekstas kiekvienai sesijai

Prasidėjus skambučiui, language, voice ir context rekvizitai perduodami sesijos užklausai (POST /widget/session), pakeisdami tam seansui sukonfigūruotas numatytąsias agento reikšmes:

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function PricingPageWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      language="es"
      voice="maria"
      context="Page: Pricing. Plans: Starter $29/mo, Pro $99/mo. Annual billing saves 20%."
    />
  )
}

Naudokite context, kad suteiktumėte agentui faktinių žinių apie puslapį, kuriame yra lankytojas: produkto informaciją, kainodarą ar konkretaus puslapio dažnai užduodamus klausimus. Serverio pusėje jis sutrumpinamas iki 12 000 simbolių.

Su įvykių atgaliniais iškvietimais

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function SupportWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      onConnect={() => {
        console.log('Voice session connected')
        analytics.track('widget_call_started')
      }}
      onDisconnect={() => {
        console.log('Voice session ended')
        analytics.track('widget_call_ended')
      }}
      onError={(error) => {
        console.error(`Widget error: ${error.error} - ${error.message}`)
      }}
    />
  )
}

Su pasirinktu stiliumi

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function BrandedWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      primaryColor="#4a90d9"
      className="my-custom-widget"
    />
  )
}
.my-custom-widget .tp-button--end {
  background-color: #e74c3c;
}

Visas galimas CSS klases ir tinkintas savybes rasite stiliaus vadove.

Su skambėjimo tonu

Kol nustatomas ryšys, leiskite telefono skambėjimo garsą:

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function PhoneWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      ringtone={true}
    />
  )
}

Naudokite pasirinktą skambėjimo toną, perduodami garso failo URL:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  ringtone="https://example.com/my-ringtone.mp3"
/>

Skambėjimo tonas kartojamas, kol valdiklio būsena yra connecting, ir sklandžiai nutyla, kai prisijungia agentas.

Su pasirinkta API baze

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  apiBase="https://your-proxy.example.com/v1"
/>

Klaidų tvarkymas

Suveikus onError atgaliniam iškvietimui, jis gauna klaidos objektą su dviem laukais:

LaukasTipasAprašas
errorstringKompiuterio skaitomas klaidos kodas
messagestringŽmogui suprantamas klaidos aprašas

Dažniausi klaidų kodai apima neleidžiamą domeną, nerastą agentą ir netinkamą API raktą.


Tolesni veiksmai