ThunderPhone 2.0 è arrivato.Parti in autonomia, da 2¢/min.Leggi l’annuncio

Widget

Componente React

Incorpora il widget vocale ThunderPhone in un

Il componente ThunderPhoneWidget visualizza una barra di chiamata glassmorfica con controlli integrati per disattivare il microfono, terminare la chiamata e mostrare lo stato della connessione. È il modo più rapido per aggiungere l'IA vocale a un'app React.

Installazione

npm install @thunderphone/widget

Utilizzo di base

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
    />
  )
}

Proprietà

Il componente accetta le seguenti proprietà tramite ThunderPhoneWidgetProps:

ProprietàTipoObbligatoriaPredefinitoDescrizione
publishableKeystring--Chiave API pubblicabile (pk_live_...) dalle impostazioni Sviluppatori. L'agente viene risolto automaticamente dalla configurazione del widget della chiave.
theme'light' | 'dark'No'light'Schema di colori. Applica la classe tp--light o tp--dark alla radice del widget.
primaryColorstringNo'#000000' (chiaro) / '#ffffff' (scuro)Stringa di colore CSS usata come colore di accento (pulsante di chiamata, forma d'onda, indicatori attivi).
titlestringNo'Voice assistant'Testo visualizzato nella barra del widget.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'No'bottom-right'Posizione fissa del widget nella viewport.
apiBasestringNo'https://api.thunderphone.com/v1'Sovrascrittura dell'URL di base dell'API.
languagestringNo--Sovrascrittura della lingua per sessione: un codice lingua o una locale come en, es o fr-FR. Se non impostata, viene applicata la lingua configurata dell'agente.
voicestringNo--Sovrascrittura della voce per sessione: un nome voce come maria. Se non impostata, viene applicata la voce configurata dell'agente.
contextstringNo--Contesto fattuale della pagina o del sito per sessione passato all'agente, ad esempio i dettagli della pagina visualizzata dal visitatore. Troncato lato server a 12.000 caratteri.
onConnect() => voidNo--Chiamata quando la sessione vocale si connette correttamente.
onDisconnect() => voidNo--Chiamata quando la sessione termina.
onError(error) => voidNo--Chiamata in caso di errori. L'oggetto error contiene i campi error (codice) e message.
classNamestringNo--Nome di classe CSS aggiuntivo applicato al contenitore del widget.
ringtoneboolean | stringNofalseRiproduce una suoneria durante la connessione. true per la suoneria predefinita oppure una stringa URL per audio personalizzato.

Esempi

Tema scuro con colore personalizzato

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

Posizione personalizzata

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      position="bottom-left"
    />
  )
}

Lingua, voce e contesto per sessione

Le props language, voice e context vengono inoltrate alla richiesta di sessione (POST /widget/session) all'avvio di una chiamata, sovrascrivendo i valori predefiniti configurati per l'agente per quella sessione:

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

Usa context per fornire all'agente conoscenze fattuali sulla pagina visualizzata dal visitatore -- dettagli del prodotto, prezzi o FAQ specifiche della pagina. Il valore viene troncato lato server a 12.000 caratteri.

Con callback degli eventi

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

Con stile personalizzato

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

Consulta la guida allo stile per tutte le classi CSS e le proprietà personalizzate disponibili.

Con suoneria

Riproduci un suono di telefono che squilla durante la connessione:

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function PhoneWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      ringtone={true}
    />
  )
}

Usa una suoneria personalizzata passando l'URL di un file audio:

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

La suoneria viene riprodotta in loop mentre il widget è nello stato connecting e sfuma gradualmente quando l'agente si connette.

Con base API personalizzata

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

Gestione degli errori

Quando viene attivata la callback onError, riceve un oggetto errore con due campi:

CampoTipoDescrizione
errorstringCodice di errore leggibile dalla macchina
messagestringDescrizione dell'errore leggibile dall'utente

I codici di errore comuni includono dominio non consentito, agente non trovato e chiave API non valida.


Passaggi successivi