Skip to main content
useThunderPhone āķis nodrošina pilnīgu kontroli pār lietotāja saskarni, kamēr ThunderPhone pārvalda balss sesiju, audio maršrutēšanu un savienojuma stāvokli. Izmantojiet to, ja vēlaties pilnībā pielāgotu lietotāja saskarni — savas pogas, izkārtojumus, animācijas un zīmolradi — kamēr ThunderPhone visu pārējo apstrādā fonā.

Kad izmantot bezsaskarnes āķi

Iepriekš izveidotais ThunderPhoneWidget komponents aptver lielāko daļu lietošanas gadījumu, taču izmantojiet bezsaskarnes āķi, ja nepieciešams:
  • Pilnībā pielāgots zvana lietotāja interfeiss, kas atbilst jūsu lietotnes dizaina sistēmai
  • Uz audio reaģējošas vizualizācijas (viļņu formas, lodes, pulsējoši indikatori), ko nodrošina reāllaika audio līmeņi
  • Pielāgotas zvanu plūsmas, piemēram, veidlapas pirms zvana, aptaujas pēc zvana vai iekļauta tērzēšana līdzās balsij
  • Integrācija esošā komponentu bibliotēkā (Material UI, Chakra, Radix u. c.)

Instalēšana

Bezsaskarnes āķim nav jāimportē @thunderphone/widget/style.css, jo jūs nodrošināt savu lietotāja saskarni. Tomēr joprojām jāinstalē tā pati @thunderphone/widget pakotne.

Pamata lietošana

Jums komponentu kokā kaut kur jāatveido phone.audio. Tas ir neredzams React elements, kas pārvalda pamatā esošo audio savienojumu. Ja to neiekļausiet, audio netiks atskaņots un sesija nedarbosies.

Opcijas

Nododiet šīs opcijas useThunderPhone, izmantojot UseThunderPhoneOptions:
Āķis ir bezsaskarnes: tas nepieņem ThunderPhoneWidget izskata rekvizītus (theme, primaryColor, title, position, className). To nodošana rada TypeScript kļūdu — prezentācija ir pilnībā jūsu ziņā.

Atgrieztā vērtība

Āķis atgriež UseThunderPhoneReturn objektu:

Uz audio reaģējošs lietotāja interfeiss

Atsauce audioLevelRef nodrošina audio līmeņus kadru nomaiņas ātrumā, neizraisot React pārzīmēšanu, tāpēc tā ir ideāli piemērota plūstošu viļņformas vizualizāciju, pulsējošu ložu vai jebkuras ar sarunu saistītas animācijas vadībai. Līmenis atspoguļo to, kas ir skaļāks: balss aģenta balss vai apmeklētāja mikrofons.

Viļņformas piemērs

Pulsējošas lodes piemērs

Runāšanas indikatora piemērs

React renderētam lietotāja interfeisam, kas mainās atkarībā no skaļuma — piemēram, slieksnī balstītai “runāšanas” nozīmītei — intervālos nolasiet audioLevelRef.current un saglabājiet rezultātu stāvoklī:
Vienmēr nolasiet līmeņus no audioLevelRef.current. Atgrieztā objekta skaitlis audioLevel ir novecojis un vienmēr ir 0 — jebkura uz tā balstīta loģika nemanāmi nolasīs nulli.

Stāvokļu automāts

Rekvizīts state ievēro šādu dzīves ciklu:

Piemēri

Ar skaņas izslēgšanas vadību

Ar zvansignālu

Savienojuma izveides laikā atskaņojiet zvana signālu, lai imitētu tālruņa zvanu:
Zvansignāls tiek atkārtots stāvoklī connecting un pakāpeniski apklust, kad pieslēdzas balss aģents. Ievadiet true, lai izmantotu iebūvēto noklusējuma zvansignālu, vai URL virkni, lai izmantotu savu audio failu.

Ar notikumu atgriezeniskajām izsaukšanas funkcijām

Pilnībā pielāgota lietotāja saskarne


Padomi

Elements phone.audio ir neredzams, taču obligāts. Novietojiet to jebkur JSX kodā — tas nerenderē redzamu DOM, bet iekšēji pārvalda WebRTC audio savienojumu.
Stāvoklis connecting var ilgt 1–3 sekundes. Šajā stāvoklī atspējojiet zvana pogu, lai novērstu dublētus savienojuma mēģinājumus.
Kad stāvoklis ir error, parādiet lietotājam phone.error un atstājiet zvana pogu iespējotu. Hooks pats neiziet no stāvokļa error — atkārtoti izsaucot connect(), tiek sākts jauns mēģinājums un notīrīta iepriekšējā kļūda.
Atzvanes funkcijas onConnect, onDisconnect un onError ir piemērotas analītikai, žurnālu reģistrēšanai vai citas lietojumprogrammas loģikas aktivizēšanai, neaptaujājot stāvokli.
audioLevelRef ir vienīgais reāllaika audio līmeņa avots. Lai iegūtu vienmērīgas animācijas, piemēram, viļņu formas, lasiet audioLevelRef.current funkcijā requestAnimationFrame (ref nolasīšana neizraisa atkārtotu renderēšanu), vai nolasiet to noteiktos intervālos un saglabājiet rezultātu stāvoklī React renderētajai lietotāja saskarnei. Skaitlis audioLevel ir novecojis un vienmēr ir 0 — neveidojiet uz tā loģiku.