CDN / skriptisilt

CDN-i build sisaldab Reacti sisemiselt, seega saad vidinat kasutada staatilistel saitidel, WordPressis, Webflow's või mis tahes lehel, kuhu saad lisada HTML-i. npm-i, bundlerit ega raamistikku pole vaja.

CDN-i URL-id

<link rel="stylesheet" href="https://cdn.thunderphone.com/widget/latest/style.css" />
<script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>
<!-- Each stable release also publishes an immutable /widget/vX.Y.Z/ path
     matching the @thunderphone/widget npm version (v1.1.2 at the time of
     writing). If you pin, you own updating the URL for new releases. -->
<link rel="stylesheet" href="https://cdn.thunderphone.com/widget/v1.1.2/style.css" />
<script src="https://cdn.thunderphone.com/widget/v1.1.2/widget.js"></script>

Põhikasutus

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="https://cdn.thunderphone.com/widget/latest/style.css" />
</head>
<body>

  <div id="thunderphone"></div>

  <script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>
  <script>
    ThunderPhone.mount({
      element: '#thunderphone',
      publishableKey: 'pk_live_your_publishable_key',
    })
  </script>

</body>
</html>

Vidina paigaldatakse sihtelementi ja see kuvatakse fikseeritud asukohaga ribana vaateala nurgas (vaikimisi bottom-right, mida juhib suvand position). Paigalduselement on ainult Reacti juurelement -- selle asukoht lehel ei mõjuta vidina kuvamiskohta.


Paigaldussuvandid

ThunderPhone.mount() aktsepteerib samu suvandeid nagu Reacti komponent ning lisaks omadust element:

SuvandTüüpKohustuslikVaikimisiKirjeldus
elementstring | HTMLElementJah--CSS-i selektor (nt '#thunderphone') või DOM-i elemendi viide.
publishableKeystringJah--Avalik API-võti (pk_live_...). Häälagent määratakse võtme vidina konfiguratsiooni põhjal automaatselt.
theme'light' | 'dark'Ei'light'Värviskeem.
primaryColorstringEi'#000000' (hele) / '#ffffff' (tume)Aktsentvärvina kasutatav CSS-i värvistring.
titlestringEi'Voice assistant'Vidinaribal kuvatav tekst.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'Ei'bottom-right'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 see pole määratud, kasutatakse häälagendi seadistatud keelt.
voicestringEi--Seansipõhine hääle ülekirjutus -- hääle nimi, näiteks maria. Kui see pole määratud, kasutatakse häälagendi seadistatud häält.
contextstringEi--Häälagendile edastatav seansipõhine faktiline lehe või saidi kontekst. Serveris kärbitakse see 12 000 tähemärgini.
onConnect() => voidEi--Kutsutakse välja, kui hääleseanss ühendub.
onDisconnect() => voidEi--Kutsutakse välja, kui seanss lõpeb.
onError(error) => voidEi--Kutsutakse välja vigade korral. Vead sisaldavad välju error (kood) ja message.
ringtoneboolean | stringEifalseEsita ühenduse loomise ajal helinat. Vaikimisi helina jaoks kasuta true või kohandatud heli jaoks URL-stringi.

Puhastamine

ThunderPhone.mount() tagastab vidina eksemplari puhastusmeetoditega:

<script>
  var widget = ThunderPhone.mount({
    element: '#thunderphone',
    publishableKey: 'pk_live_your_publishable_key',
  })

  // Later, when you want to remove the widget:
  widget.unmount()

  // Or equivalently:
  widget.destroy()
</script>

Nii unmount() kui ka destroy() teevad sama asja -- katkestavad aktiivse häälseansi ja eemaldavad vidina DOM-ist. Kasuta oma koodis seda, mis loetavam tundub.


Näited

Tume teema kohandatud värviga

<div id="thunderphone"></div>

<link rel="stylesheet" href="https://cdn.thunderphone.com/widget/latest/style.css" />
<script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>
<script>
  ThunderPhone.mount({
    element: '#thunderphone',
    publishableKey: 'pk_live_your_publishable_key',
    theme: 'dark',
    primaryColor: '#8b5cf6',
    title: 'Talk to our AI',
  })
</script>

Kohandatud asukoht

<div id="thunderphone"></div>

<script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>
<script>
  ThunderPhone.mount({
    element: '#thunderphone',
    publishableKey: 'pk_live_your_publishable_key',
    position: 'bottom-left',
  })
</script>

Sündmuste tagasihelistustega

<div id="thunderphone"></div>

<link rel="stylesheet" href="https://cdn.thunderphone.com/widget/latest/style.css" />
<script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>
<script>
  ThunderPhone.mount({
    element: '#thunderphone',
    publishableKey: 'pk_live_your_publishable_key',
    onConnect: function () {
      console.log('Call started')
    },
    onDisconnect: function () {
      console.log('Call ended')
    },
    onError: function (error) {
      console.error('Widget error:', error.error, error.message)
    },
  })
</script>

Helinaga

<div id="thunderphone"></div>

<link rel="stylesheet" href="https://cdn.thunderphone.com/widget/latest/style.css" />
<script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>
<script>
  ThunderPhone.mount({
    element: '#thunderphone',
    publishableKey: 'pk_live_your_publishable_key',
    ringtone: true, // or a custom URL: 'https://example.com/ringtone.mp3'
  })
</script>

DOM-elemendi viite kasutamine

<div id="thunderphone"></div>

<script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>
<script>
  var container = document.getElementById('thunderphone')

  ThunderPhone.mount({
    element: container,
    publishableKey: 'pk_live_your_publishable_key',
  })
</script>

WordPressi / CMS-i integreerimine

Lisa see kohandatud HTML-i plokki või oma teema jalusesse:

<link rel="stylesheet" href="https://cdn.thunderphone.com/widget/latest/style.css" />
<script src="https://cdn.thunderphone.com/widget/latest/widget.js"></script>

<div id="thunderphone-widget"></div>
<script>
  ThunderPhone.mount({
    element: '#thunderphone-widget',
    publishableKey: 'pk_live_your_publishable_key',
  })
</script>

Tõrkeotsing

Vidinat ei kuvata

Veendu, et nii CSS- kui ka JS-failid on laaditud. Kontrolli brauseri konsoolist võrguvigu. Enne ThunderPhone.mount() käivitamist veendu, et sihtelement on DOM-is olemas.

ThunderPhone pole määratletud

Skript pole veel laaditud. Veendu, et widget.js-i <script>-silt asub enne mount-kutset, või mähi mount-kutse DOMContentLoaded kuulaja sisse.

Domeen pole lubatud

Lisa oma domeen lubatud domeenide loendisse app.thunderphone.com jaotise Arendajad seadetes. Pea meeles, et localhost on alati lubatud.


Järgmised sammud