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-এর মাধ্যমে নিম্নলিখিত প্রপস গ্রহণ করে:
| প্রপ | ধরন | প্রয়োজনীয় | ডিফল্ট | বিবরণ |
|---|---|---|---|---|
publishableKey | string | হ্যাঁ | -- | Developers সেটিংস থেকে প্রকাশযোগ্য API কী (pk_live_...)। কী-এর উইজেট কনফিগারেশন থেকে এজেন্ট স্বয়ংক্রিয়ভাবে নির্ধারিত হয়। |
theme | 'light' | 'dark' | না | 'light' | রঙের স্কিম। উইজেট রুটে tp--light বা tp--dark ক্লাস প্রয়োগ করে। |
primaryColor | string | না | '#000000' (হালকা) / '#ffffff' (গাঢ়) | অ্যাকসেন্ট রঙ হিসেবে ব্যবহৃত CSS রঙের স্ট্রিং (কল বোতাম, ওয়েভফর্ম, সক্রিয় নির্দেশক)। |
title | string | না | 'Voice assistant' | উইজেট বারে প্রদর্শিত টেক্সট। |
position | 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left' | না | 'bottom-right' | উইজেটের জন্য স্থির ভিউপোর্ট অবস্থান। |
apiBase | string | না | 'https://api.thunderphone.com/v1' | API বেস URL ওভাররাইড। |
language | string | না | -- | প্রতি-সেশনের ভাষা ওভাররাইড -- en, es, বা fr-FR-এর মতো একটি ভাষা কোড বা লোকেল। সেট না থাকলে, এজেন্টের কনফিগার করা ভাষা প্রযোজ্য হবে। |
voice | string | না | -- | প্রতি-সেশনের ভয়েস ওভাররাইড -- maria-এর মতো একটি ভয়েস নাম। সেট না থাকলে, এজেন্টের কনফিগার করা ভয়েস প্রযোজ্য হবে। |
context | string | না | -- | প্রতি-সেশনের তথ্যভিত্তিক পৃষ্ঠা বা সাইটের প্রসঙ্গ এজেন্টের কাছে পাঠানো হয় (উদাহরণস্বরূপ, ভিজিটর যে পৃষ্ঠাটি দেখছেন তার বিবরণ)। সার্ভার-সাইডে 12,000 অক্ষরে সংক্ষিপ্ত করা হয়। |
onConnect | () => void | না | -- | ভয়েস সেশন সফলভাবে সংযুক্ত হলে কল করা হয়। |
onDisconnect | () => void | না | -- | সেশন শেষ হলে কল করা হয়। |
onError | (error) => void | না | -- | ত্রুটি হলে কল করা হয়। error অবজেক্টে error (কোড) এবং message ফিল্ড থাকে। |
className | string | না | -- | উইজেট কন্টেইনারে প্রয়োগ করা অতিরিক্ত CSS ক্লাস নাম। |
ringtone | boolean | 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 ব্যবহার করুন -- যেমন পণ্যের বিবরণ, মূল্য, বা পেজ-নির্দিষ্ট FAQ। সার্ভার-সাইডে এটি 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 কলব্যাক চালু হলে, এটি দুটি ফিল্ডসহ একটি ত্রুটি অবজেক্ট গ্রহণ করে:
| ফিল্ড | ধরন | বিবরণ |
|---|---|---|
error | string | মেশিন-পাঠযোগ্য ত্রুটি কোড |
message | string | মানব-পাঠযোগ্য ত্রুটির বিবরণ |
সাধারণ ত্রুটি কোডগুলোর মধ্যে রয়েছে ডোমেইন অনুমোদিত নয়, এজেন্ট পাওয়া যায়নি, এবং অবৈধ API কী।