React घटक

ThunderPhoneWidget कॉम्पोनंट म्यूट करणे, कॉल समाप्त करणे आणि कनेक्शन स्थिती दाखवणे यासाठी अंगभूत नियंत्रणे असलेला ग्लासमॉर्फिक कॉल बार रेंडर करतो. React अॅपमध्ये व्हॉइस AI जोडण्याचा हा सर्वात जलद मार्ग आहे.

स्थापना

npm install @thunderphone/widget

मूलभूत वापर

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
    />
  )
}

प्रॉप्स

कॉम्पोनंट ThunderPhoneWidgetProps द्वारे खालील प्रॉप्स स्वीकारतो:

प्रॉपप्रकारआवश्यकडीफॉल्टवर्णन
publishableKeystringहोय--डेव्हलपर्स सेटिंग्जमधील प्रकाशित करता येणारी API की (pk_live_...). कीच्या विजेट कॉन्फिगरेशनमधून एजंट आपोआप निश्चित केला जातो.
theme'light' | 'dark'नाही'light'रंगसंगती. विजेट रूटला tp--light किंवा tp--dark क्लास लागू करतो.
primaryColorstringनाही'#000000' (हलकी) / '#ffffff' (गडद)अॅक्सेंट रंग म्हणून वापरली जाणारी CSS रंग स्ट्रिंग (कॉल बटण, वेव्हफॉर्म, सक्रिय निर्देशक).
titlestringनाही'Voice assistant'विजेट बारमध्ये दाखवला जाणारा मजकूर.
position'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'नाही'bottom-right'विजेटसाठी स्थिर व्ह्यूपोर्ट स्थान.
apiBasestringनाही'https://api.thunderphone.com/v1'API बेस URL ओव्हरराइड.
languagestringनाही--प्रति-सेशन भाषा ओव्हरराइड -- en, es किंवा fr-FR सारखा भाषा कोड किंवा लोकेल. सेट नसल्यास, एजंटची कॉन्फिगर केलेली भाषा लागू होते.
voicestringनाही--प्रति-सेशन आवाज ओव्हरराइड -- maria सारखे आवाजाचे नाव. सेट नसल्यास, एजंटचा कॉन्फिगर केलेला आवाज लागू होतो.
contextstringनाही--एजंटकडे पाठवला जाणारा प्रति-सेशन तथ्यात्मक पृष्ठ किंवा साइट संदर्भ (उदाहरणार्थ, अभ्यागत पाहत असलेल्या पृष्ठाचे तपशील). सर्व्हर-साइडवर 12,000 वर्णांपर्यंत संक्षिप्त केला जातो.
onConnect() => voidनाही--व्हॉइस सेशन यशस्वीरीत्या कनेक्ट झाल्यावर कॉल केला जातो.
onDisconnect() => voidनाही--सेशन समाप्त झाल्यावर कॉल केला जातो.
onError(error) => voidनाही--त्रुटी आल्यावर कॉल केला जातो. error ऑब्जेक्टमध्ये error (कोड) आणि message फील्ड असतात.
classNamestringनाही--विजेट कंटेनरला लागू होणारे अतिरिक्त CSS क्लास नाव.
ringtoneboolean | stringनाहीfalseकनेक्ट करताना रिंगटोन वाजवा. डीफॉल्ट रिंगटोनसाठी true किंवा सानुकूल ऑडिओसाठी URL स्ट्रिंग.

उदाहरणे

सानुकूल रंगासह गडद थीम

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"
    />
  )
}

सानुकूल स्थान

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function App() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      position="bottom-left"
    />
  )
}

प्रत्येक सेशनसाठी भाषा, आवाज आणि संदर्भ

कॉल सुरू झाल्यावर language, voice, आणि context props सेशन विनंतीकडे (POST /widget/session) पाठवले जातात, ज्यामुळे त्या सेशनसाठी एजंटचे कॉन्फिगर केलेले डीफॉल्ट बदलले जातात:

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 वापरा -- उत्पादन तपशील, किंमत किंवा पृष्ठ-विशिष्ट वारंवार विचारले जाणारे प्रश्न. सर्व्हर-साइडवर ते 12,000 वर्णांपर्यंत संक्षिप्त केले जाते.

इव्हेंट कॉलबॅकसह

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}`)
      }}
    />
  )
}

सानुकूल स्टाइलिंगसह

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

उपलब्ध सर्व CSS क्लासेस आणि सानुकूल गुणधर्मांसाठी स्टाइलिंग मार्गदर्शक पहा.

रिंगटोनसह

कनेक्शन स्थापित होत असताना फोन वाजण्याचा आवाज वाजवा:

import { ThunderPhoneWidget } from '@thunderphone/widget'
import '@thunderphone/widget/style.css'

function PhoneWidget() {
  return (
    <ThunderPhoneWidget
      publishableKey="pk_live_your_publishable_key"
      ringtone={true}
    />
  )
}

ऑडिओ फाइल URL देऊन सानुकूल रिंगटोन वापरा:

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

विजेट connecting स्थितीत असताना रिंगटोन सतत वाजते आणि एजंट कनेक्ट झाल्यावर ती सहजपणे मंद होते.

सानुकूल API बेससह

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

त्रुटी हाताळणी

onError कॉलबॅक ट्रिगर झाल्यावर, त्याला दोन फील्ड असलेला त्रुटी ऑब्जेक्ट प्राप्त होतो:

फील्डप्रकारवर्णन
errorstringमशीन-वाचनीय त्रुटी कोड
messagestringमानव-वाचनीय त्रुटीचे वर्णन

सामान्य त्रुटी कोडमध्ये डोमेनला परवानगी नाही, एजंट सापडला नाही आणि अवैध API की यांचा समावेश होतो.


पुढील पायऱ्या