CDN / Oznaka skripta

Različica CDN interno vključuje React, zato lahko gradnik uporabljate na statičnih spletnih mestih, v WordPressu, Webflowu ali na kateri koli strani, kamor lahko dodate HTML. npm, združevalnik ali ogrodje niso potrebni.

URL-ji CDN

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

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

Gradnik se priključi v ciljni element in se izriše kot vrstica s fiksnim položajem v kotu vidnega polja (privzeto bottom-right, nadzorovano z možnostjo position). Element priklopa je le koren React -- njegov položaj na strani ne vpliva na to, kje se gradnik prikaže.


Možnosti priklopa

ThunderPhone.mount() sprejme enake možnosti kot komponenta React ter lastnost element:

MožnostVrstaObveznoPrivzetoOpis
elementstring | HTMLElementDa--Izbirnik CSS (npr. '#thunderphone') ali sklic na element DOM.
publishableKeystringDa--Javni ključ API (pk_live_...). Glasovni agent se samodejno določi iz konfiguracije gradnika ključa.
theme'light' | 'dark'Ne'light'Barvna shema.
primaryColorstringNe'#000000' (svetla) / '#ffffff' (temna)Niz barve CSS, uporabljen kot poudarjena barva.
titlestringNe'Voice assistant'Besedilo, prikazano v vrstici gradnika.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'Ne'bottom-right'Fiksni položaj v vidnem polju.
apiBasestringNe'https://api.thunderphone.com/v1'Preglasitev osnovnega URL-ja API.
languagestringNe--Preglasitev jezika za posamezno sejo -- jezikovna koda ali območna nastavitev, kot so en, es ali fr-FR. Če ni nastavljena, se uporabi konfigurirani jezik agenta.
voicestringNe--Preglasitev glasu za posamezno sejo -- ime glasu, kot je maria. Če ni nastavljeno, se uporabi konfigurirani glas agenta.
contextstringNe--Dejanski kontekst strani ali spletnega mesta za posamezno sejo, posredovan agentu. Na strežniški strani je skrajšan na 12.000 znakov.
onConnect() => voidNe--Pokliče se, ko se glasovna seja poveže.
onDisconnect() => voidNe--Pokliče se, ko se seja konča.
onError(error) => voidNe--Pokliče se ob napakah. Napaka ima polji error (koda) in message.
ringtoneboolean | stringNefalseMed povezovanjem predvaja melodijo zvonjenja. true za privzeto melodijo zvonjenja ali niz URL za zvok po meri.

Čiščenje

ThunderPhone.mount() vrne primerek pripomočka z metodami 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() in destroy() naredita isto – prekineta vsako aktivno glasovno sejo in odstranita pripomoček iz DOM-a. Uporabite tisto, ki se bolje bere v vaši kodi.


Primeri

Temna tema z barvo po meri

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

Položaj po meri

<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 povratnimi klici dogodkov

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

Z zvonjenjem

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

Z uporabo sklica na element DOM

<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 z WordPressom / CMS-jem

To dodajte v blok HTML po meri ali v nogo 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>

Odpravljanje težav

Gradnik se ne prikaže

Prepričajte se, da sta naloženi datoteki CSS in JS. V konzoli brskalnika preverite omrežne napake. Pred klicem ThunderPhone.mount() preverite, ali ciljni element obstaja v DOM-u.

ThunderPhone ni definiran

Skript še ni naložen. Prepričajte se, da je oznaka <script> za widget.js pred vašim klicem za priklop, ali pa klic za priklop ovijte v poslušalnik DOMContentLoaded.

Napaka: domena ni dovoljena

Svojo domeno dodajte na seznam dovoljenih domen v nastavitvah Razvijalci na app.thunderphone.com. Ne pozabite, da je localhost vedno dovoljen.


Naslednji koraki