Reacti komponent

Komponent ThunderPhoneWidget renderdab klaasmorfse kõneriba sisseehitatud juhtelementidega vaigistamiseks, kõne lõpetamiseks ja ühenduse oleku kuvamiseks. See on kiireim viis hääle-AI lisamiseks Reacti rakendusse.

Paigaldamine

npm install @thunderphone/widget

Põhikasutus

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

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

Atribuudid

Komponent aktsepteerib ThunderPhoneWidgetProps kaudu järgmisi atribuute:

AtribuutTüüpKohustuslikVaikeväärtusKirjeldus
publishableKeystringJah--Avalik API-võti (pk_live_...) arendajate seadistustest. Häälagent tuvastatakse võtme vidina konfiguratsiooni põhjal automaatselt.
theme'light' | 'dark'Ei'light'Värviskeem. Rakendab vidina juurelemendile klassi tp--light või tp--dark.
primaryColorstringEi'#000000' (hele) / '#ffffff' (tume)CSS-i värvistring, mida kasutatakse aktsentvärvina (helistamisnupp, lainekuju, aktiivsed indikaatorid).
titlestringEi'Voice assistant'Vidinaribal kuvatav tekst.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'Ei'bottom-right'Vidina fikseeritud asukoht vaatealas.
apiBasestringEi'https://api.thunderphone.com/v1'API baas-URL-i ülekirjutus.
languagestringEi--Seansipõhine keele ülekirjutus -- keelekood või lokaat, näiteks en, es või fr-FR. Kui seda pole määratud, kasutatakse häälagendi seadistatud keelt.
voicestringEi--Seansipõhine hääle ülekirjutus -- hääle nimi, näiteks maria. Kui seda pole määratud, kasutatakse häälagendi seadistatud häält.
contextstringEi--Seansipõhine faktiline lehe- või saidikontekst, mis edastatakse häälagendile (näiteks külastaja vaadatava lehe üksikasjad). Serveri poolel kärbitakse 12 000 märgini.
onConnect() => voidEi--Kutsutakse välja, kui häälseanss ühendub edukalt.
onDisconnect() => voidEi--Kutsutakse välja, kui seanss lõpeb.
onError(error) => voidEi--Kutsutakse välja vigade korral. Objektil error on väljad error (kood) ja message.
classNamestringEi--Vidina konteinerile rakendatav täiendav CSS-klassi nimi.
ringtoneboolean | stringEifalseEsita ühendamisel helinat. Vaikehelina jaoks true või kohandatud heli jaoks URL-string.

Näited

Tume teema kohandatud värviga

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"
    />
  )
}

Kohandatud asukoht

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

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

Seansipõhine keel, hääl ja kontekst

language, voice ja context propid edastatakse kõne alustamisel seansitaotlusele (POST /widget/session), alistades selle seansi jaoks agendi seadistatud vaikeväärtused:

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%."
    />
  )
}

Kasuta context-i, et anda agendile faktilisi teadmisi lehe kohta, mida külastaja vaatab -- tooteteave, hinnad või lehepõhised KKK-d. Serveris kärbitakse see 12 000 tähemärgini.

Sündmuste tagasihelistamistega

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}`)
      }}
    />
  )
}

Kohandatud stiiliga

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;
}

Kõigi saadaolevate CSS-klasside ja kohandatud omaduste kohta vaata stiilimise juhendit.

Helinaga

Esita ühenduse loomise ajal telefoni helinat:

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

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

Kasuta kohandatud helinat, edastades helifaili URL-i:

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

Helin kordub, kuni vidin on olekus connecting, ning vaibub sujuvalt, kui agent ühendub.

Kohandatud API baasaadressiga

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

Vigade käsitlemine

Kui onError tagasihelistamine käivitub, saab see kahe väljaga veaobjekti:

VäliTüüpKirjeldus
errorstringMasinloetav veakood
messagestringInimloetav vea kirjeldus

Levinud veakoodid hõlmavad lubamata domeeni, leidmata agenti ja vigast API-võtit.


Järgmised sammud