CDN / oznaka skripte

CDN izgradnja interno uključuje React, pa widget možete upotrebljavati na statičkim stranicama, u WordPressu, Webflowu ili na bilo kojoj stranici na koju možete dodati HTML. Nisu potrebni npm, alat za grupiranje ni radni okvir.

CDN URL-ovi

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

Osnovna upotreba

<!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>

Widget se montira u ciljni element i prikazuje kao traka s fiksnim položajem u kutu prikaza (zadano bottom-right, kontrolira se opcijom position). Element za montiranje samo je korijenski element Reacta -- njegov položaj na stranici ne utječe na mjesto prikaza widgeta.


Opcije montiranja

ThunderPhone.mount() prihvaća iste opcije kao komponenta Reacta, uz svojstvo element:

OpcijaVrstaObaveznoZadanoOpis
elementstring | HTMLElementDa--CSS selektor (npr. '#thunderphone') ili referenca na DOM element.
publishableKeystringDa--Javni API ključ (pk_live_...). Agent se automatski određuje iz konfiguracije widgeta ključa.
theme'light' | 'dark'Ne'light'Shema boja.
primaryColorstringNe'#000000' (svijetla) / '#ffffff' (tamna)CSS niz boje koji se upotrebljava kao naglasna boja.
titlestringNe'Voice assistant'Tekst prikazan na traci widgeta.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'Ne'bottom-right'Fiksni položaj u prikazu.
apiBasestringNe'https://api.thunderphone.com/v1'Nadjačavanje osnovnog URL-a API-ja.
languagestringNe--Nadjačavanje jezika po sesiji -- jezični kôd ili regionalna postavka, poput en, es ili fr-FR. Kada nije postavljeno, primjenjuje se konfigurirani jezik agenta.
voicestringNe--Nadjačavanje glasa po sesiji -- naziv glasa, poput maria. Kada nije postavljeno, primjenjuje se konfigurirani glas agenta.
contextstringNe--Činjenični kontekst stranice ili web-mjesta po sesiji koji se prosljeđuje agentu. Na strani poslužitelja skraćuje se na 12.000 znakova.
onConnect() => voidNe--Poziva se kada se poveže glasovna sesija.
onDisconnect() => voidNe--Poziva se kada sesija završi.
onError(error) => voidNe--Poziva se pri pogreškama. Pogreška ima polja error (kôd) i message.
ringtoneboolean | stringNefalseReproducirajte melodiju zvona tijekom povezivanja. true za zadanu melodiju zvona ili URL niz za prilagođeni zvuk.

Čišćenje

ThunderPhone.mount() vraća instancu widgeta s metodama za čišćenje:

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

unmount() i destroy() rade isto -- prekidaju svaku aktivnu glasovnu sesiju i uklanjaju widget iz DOM-a. Upotrijebite onu koja se bolje uklapa u vaš kôd.


Primjeri

Tamna tema s prilagođenom bojom

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

Prilagođeni položaj

<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 povratnim pozivima događaja

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

S melodijom zvona

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

Upotreba reference elementa DOM-a

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

Integracija s WordPressom / CMS-om

Dodajte ovo u blok Prilagođeni HTML ili podnožje svoje teme:

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

Rješavanje problema

Widget se ne prikazuje

Provjerite jesu li učitane i CSS i JS datoteke. Provjerite postoje li mrežne pogreške u konzoli preglednika. Provjerite postoji li ciljni element u DOM-u prije pozivanja ThunderPhone.mount().

ThunderPhone nije definiran

Skripta se još nije učitala. Provjerite pojavljuje li se oznaka <script> za widget.js prije vašeg poziva za montiranje ili omotajte poziv za montiranje u osluškivač DOMContentLoaded.

Pogreška: domena nije dopuštena

Dodajte svoju domenu na popis dopuštenih domena u postavkama Razvojni programeri na app.thunderphone.com. Imajte na umu da je localhost uvijek dopušten.


Sljedeći koraci