Skip to main content
Hooken useThunderPhone giver dig fuld kontrol over brugergrænsefladen, mens ThunderPhone håndterer stemmesessionen, lydrouting og forbindelsestilstand. Brug den, når du vil have et fuldt tilpasset UI — dine egne knapper, layouts, animationer og branding — mens ThunderPhone håndterer alt i baggrunden.

Hvornår du skal bruge headless-hooken

Den færdigbyggede komponent ThunderPhoneWidget dækker de fleste anvendelsestilfælde, men brug headless-hooken, når du har brug for:
  • Et helt tilpasset opkalds-UI, der matcher din apps designsystem
  • Lydreaktive visualiseringer (bølgeformer, kugler, pulserende indikatorer) drevet af lydniveauer i realtid
  • Tilpassede opkaldsforløb såsom formularer før opkaldet, spørgeundersøgelser efter opkaldet eller integreret chat ved siden af stemmen
  • Integration i et eksisterende komponentbibliotek (Material UI, Chakra, Radix osv.)

Installation

Headless-hooken kræver ikke, at du importerer @thunderphone/widget/style.css, da du selv leverer dit UI. Du skal dog stadig installere den samme pakke @thunderphone/widget.

Grundlæggende brug

Du skal gengive phone.audio et sted i dit komponenttræ. Det er et usynligt React-element, der håndterer den underliggende lydforbindelse. Hvis du udelader det, afspilles der ingen lyd, og sessionen fungerer ikke.

Indstillinger

Send disse indstillinger til useThunderPhone via UseThunderPhoneOptions:
Hooken er headless: Den accepterer ikke udseende-props fra ThunderPhoneWidget (theme, primaryColor, title, position, className). Det er en TypeScript-fejl at sende dem — du står helt selv for at bygge præsentationen.

Returværdi

Hooket returnerer et UseThunderPhoneReturn-objekt:

Lydreaktivt brugerinterface

Ref’en audioLevelRef giver dig lydniveauer ved billedfrekvens uden at udloese React-genrenderinger, hvilket goer den ideel til at styre glatte boelgeformsvisualiseringer, pulserende kugler eller enhver animation, der er knyttet til samtalen. Niveauet afspejler den lyd, der er hoejest: agentens stemme eller besoegendes mikrofon.

Eksempel paa boelgeform

Eksempel paa pulserende kugle

Eksempel paa taleindikator

For React-gengivet brugerinterface, der aendrer sig med lydstyrken — som et maerkat for “taler” baseret paa en taerskelvaerdi — skal du maale audioLevelRef.current med et interval og gemme resultatet i state:
Laes altid niveauer fra audioLevelRef.current. Tallet audioLevel paa retur-objektet er foraeldet og altid 0 — al logik, der er bygget paa det, vil stiltiende laese nul.

Tilstandsmaskine

Egenskaben state følger denne livscyklus:

Eksempler

Med lydstyring

Med ringetone

Afspil en ringelyd under forbindelsen for at simulere et telefonopkald:
Ringetonen afspilles i sløjfe under tilstanden connecting og toner ud, når agenten forbindes. Angiv true for den indbyggede standardringetone eller en URL-streng for at bruge din egen lydfil.

Med hændelseskald

Fuldt tilpasset brugerflade


Tips

Elementet phone.audio er usynligt, men påkrævet. Placer det hvor som helst i din JSX — det renderer ingen synlig DOM, men administrerer WebRTC-lydforbindelsen internt.
Tilstanden connecting kan vare 1-3 sekunder. Deaktiver opkaldsknappen i denne tilstand for at forhindre dublerede forbindelsesforsøg.
Når tilstanden er error, skal du vise phone.error til brugeren og holde opkaldsknappen aktiveret. Hooken forlader ikke selv tilstanden error — et nyt kald til connect() starter et nyt forsøg og rydder den forrige fejl.
Callbacksene onConnect, onDisconnect og onError er ideelle til analyse, logføring eller til at udløse anden applikationslogik uden at polle tilstanden.
audioLevelRef er den eneste kilde til live-lydniveauer. Læs audioLevelRef.current inde i requestAnimationFrame for jævne animationer som bølgeformer (at læse en ref medfører ikke genrenderinger), eller udtag prøver med et interval og gem resultatet i state for React-renderet brugergrænseflade. Tallet audioLevel er forældet og altid 0 — byg ikke logik på det.