ThunderPhone 2.0 yayında.Kendi başınıza kullanmaya başlayın; dakikada 2¢'den başlayan fiyatlarla.Duyuruyu okuyun

Widget

React Bileşeni

ThunderPhone ses widget

ThunderPhoneWidget bileşeni; sessize alma, aramayı sonlandırma ve bağlantı durumunu görüntüleme için yerleşik kontroller içeren cam efektli bir arama çubuğu oluşturur. Bir React uygulamasına sesli yapay zeka eklemenin en hızlı yoludur.

Kurulum

npm install @thunderphone/widget

Temel Kullanım

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
    />
  )
}

Özellikler

Bileşen, ThunderPhoneWidgetProps aracılığıyla aşağıdaki özellikleri kabul eder:

ÖzellikTürZorunluVarsayılanAçıklama
publishableKeystringEvet--Geliştirici ayarlarındaki yayınlanabilir API anahtarı (pk_live_...). Yapay zeka ajanı, anahtarın widget yapılandırmasından otomatik olarak belirlenir.
theme'light' | 'dark'Hayır'light'Renk şeması. Widget köküne tp--light veya tp--dark sınıfını uygular.
primaryColorstringHayır'#000000' (açık) / '#ffffff' (koyu)Vurgu rengi olarak kullanılan CSS renk dizesi (arama düğmesi, dalga biçimi, etkin göstergeler).
titlestringHayır'Voice assistant'Widget çubuğunda görüntülenen metin.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'Hayır'bottom-right'Widget için sabit görüntü alanı konumu.
apiBasestringHayır'https://api.thunderphone.com/v1'API temel URL'sini geçersiz kılar.
languagestringHayır--Oturum başına dil geçersiz kılması -- en, es veya fr-FR gibi bir dil kodu ya da yerel ayar. Ayarlanmadığında, yapay zeka ajanının yapılandırılmış dili uygulanır.
voicestringHayır--Oturum başına ses geçersiz kılması -- maria gibi bir ses adı. Ayarlanmadığında, yapay zeka ajanının yapılandırılmış sesi uygulanır.
contextstringHayır--Yapay zeka ajanına aktarılan, oturum başına olgusal sayfa veya site bağlamı (örneğin ziyaretçinin görüntülediği sayfanın ayrıntıları). Sunucu tarafında 12.000 karakterle sınırlandırılır.
onConnect() => voidHayır--Sesli oturum başarıyla bağlandığında çağrılır.
onDisconnect() => voidHayır--Oturum sona erdiğinde çağrılır.
onError(error) => voidHayır--Hata oluştuğunda çağrılır. error nesnesinde error (kod) ve message alanları bulunur.
classNamestringHayır--Widget kapsayıcısına uygulanan ek CSS sınıf adı.
ringtoneboolean | stringHayırfalseBağlanırken zil sesi çalar. Varsayılan zil sesi için true, özel ses için ise bir URL dizesi kullanın.

Örnekler

Özel Renkli Koyu Tema

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      theme="dark"
      primaryColor="#8b5cf6"
      title="Talk to our AI"
    />
  )
}

Özel Konum

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      position="bottom-left"
    />
  )
}

Oturum Başına Dil, Ses ve Bağlam

Bir arama başladığında language, voice ve context prop'ları oturum isteğine (POST /widget/session) iletilir ve bu oturum için ajanın yapılandırılmış varsayılanlarını geçersiz kılar:

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function PricingPageWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      language="es"
      voice="maria"
      context="Page: Pricing. Plans: Starter $29/mo, Pro $99/mo. Annual billing saves 20%."
    />
  )
}

context özelliğini, ziyaretçinin bulunduğu sayfa hakkında ajana ürün ayrıntıları, fiyatlandırma veya sayfaya özel sık sorulan sorular gibi olgusal bilgiler sağlamak için kullanın. Bu değer sunucu tarafında 12.000 karakterle sınırlanır.

Olay Geri Çağrılarıyla

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function SupportWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      onConnect={() => {
        console.log('Voice session connected')
        analytics.track('widget_call_started')
      }}
      onDisconnect={() => {
        console.log('Voice session ended')
        analytics.track('widget_call_ended')
      }}
      onError={(error) => {
        console.error(`Widget error: ${error.error} - ${error.message}`)
      }}
    />
  )
}

Özel Stille

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function BrandedWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      primaryColor="#4a90d9"
      className="my-custom-widget"
    />
  )
}
.my-custom-widget .tp-button--end {
  background-color: #e74c3c;
}

Kullanılabilir tüm CSS sınıfları ve özel özellikler için Stil kılavuzuna bakın.

Zil Sesiyle

Bağlantı kurulurken telefon çalma sesi çalın:

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'
 
function PhoneWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      ringtone={true}
    />
  )
}

Bir ses dosyası URL'si ileterek özel zil sesi kullanın:

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  ringtone="https://example.com/my-ringtone.mp3"
/>

Bileşen connecting durumundayken zil sesi döngü halinde çalar ve yapay zeka ajanı bağlandığında yumuşakça azalır.

Özel API Tabanıyla

<ThunderPhoneWidget
  publishableKey="pk_live_your_publishable_key"
  apiBase="https://your-proxy.example.com/v1"
/>

Hata İşleme

onError geri çağrısı tetiklendiğinde, iki alan içeren bir hata nesnesi alır:

AlanTürAçıklama
errorstringMakine tarafından okunabilir hata kodu
messagestringİnsan tarafından okunabilir hata açıklaması

Yaygın hata kodları arasında izin verilmeyen alan adı, bulunamayan ajan ve geçersiz API anahtarı yer alır.


Sonraki Adımlar