ThunderPhone 2.0 באוויר.בשירות עצמי, החל מ-2¢/דקה.קראו את הודעת ההשקה

Widget

רכיב React

הטמיעו את וידג

הרכיב ThunderPhoneWidget מציג סרגל שיחה בעיצוב זכוכיתי עם פקדים מובנים להשתקה, לסיום השיחה ולהצגת סטטוס החיבור. זו הדרך המהירה ביותר להוסיף בינה מלאכותית קולית לאפליקציית React.

התקנה

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'דריסת כתובת ה-URL הבסיסית של ה-API.
languagestringלא--דריסת שפה לכל הפעלה -- קוד שפה או אזוריות כגון en, es או fr-FR. כאשר הערך אינו מוגדר, נעשה שימוש בשפה שהוגדרה עבור הסוכן. דורש את language תחת דריסות דפדפן של המפתח.
voicestringלא--דריסת קול לכל הפעלה -- שם קול כגון maria. כאשר הערך אינו מוגדר, נעשה שימוש בקול שהוגדר עבור הסוכן. דורש את voice תחת דריסות דפדפן של המפתח.
contextstringלא--הקשר עובדתי של דף או אתר לכל הפעלה המועבר לסוכן (לדוגמה, פרטי הדף שבו המבקר צופה). נחתך בצד השרת ל-12,000 תווים. דורש את context תחת דריסות דפדפן של המפתח.
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 מועברים לבקשת הסשן (POST /widget/session) כאשר שיחה מתחילה, ועוקפים את ברירות המחדל שהוגדרו עבור הסוכן באותו סשן. הפעילו כל מאפיין שבו אתם משתמשים תחת עקיפות דפדפן עבור הווידג'ט בלוח הבקרה (או ב-allowed_overrides של המפתח). וידג'טים חדשים אינם מקבלים אף אחד מהם, ובקשת סשן הכוללת מאפיין מושבת נכשלת עם 400 override_not_allowed; ראו עקיפות דפדפן.

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 לא תקין.


השלבים הבאים