Skip to main content
ההוק useThunderPhone מעניק לכם שליטה מלאה בממשק המשתמש, בעוד ThunderPhone מנהל את סשן הקול, ניתוב השמע ומצב החיבור. השתמשו בו כאשר אתם רוצים ממשק משתמש מותאם אישית לחלוטין — עם הכפתורים, הפריסות, ההנפשות והמיתוג שלכם — בעוד ThunderPhone מטפל בכל מה שמאחורי הקלעים.

מתי להשתמש בהוק ללא ממשק

הרכיב המובנה ThunderPhoneWidget מתאים לרוב תרחישי השימוש, אך השתמשו בהוק ללא ממשק כאשר אתם זקוקים ל:
  • ממשק שיחה מותאם אישית לחלוטין שתואם למערכת העיצוב של האפליקציה שלכם
  • המחשות חזותיות המגיבות לשמע (צורות גל, כדורים, מחוונים פועמים) המונעות על ידי רמות שמע בזמן אמת
  • תהליכי שיחה מותאמים אישית, כגון טפסים לפני שיחה, סקרים לאחר שיחה או צ’אט מוטמע לצד קול
  • שילוב בספריית רכיבים קיימת (Material UI, Chakra, Radix וכו’)

התקנה

ההוק ללא ממשק אינו מחייב ייבוא של @thunderphone/widget/style.css, מכיוון שאתם מספקים ממשק משתמש משלכם. עם זאת, עדיין עליכם להתקין את אותה חבילת @thunderphone/widget.

שימוש בסיסי

עליכם לרנדר את phone.audio במקום כלשהו בעץ הרכיבים שלכם. זהו רכיב React בלתי נראה שמנהל את חיבור השמע הבסיסי. אם לא תכללו אותו, לא יושמע שמע והסשן לא יפעל.

אפשרויות

העבירו את האפשרויות הבאות אל useThunderPhone באמצעות UseThunderPhoneOptions:
ההוק הוא ללא ממשק: הוא אינו מקבל את מאפייני המראה של ThunderPhoneWidget (theme, primaryColor, title, position, className). העברתם גורמת לשגיאת TypeScript — הממשק החזותי כולו באחריותכם לבנות.

ערך מוחזר

ה-hook מחזיר אובייקט UseThunderPhoneReturn:

ממשק משתמש המגיב לשמע

ה־ref audioLevelRef מספק לכם רמות שמע בקצב פריימים ללא הפעלת רינדורים חוזרים של React, ולכן הוא אידיאלי להפעלת המחשות חלקות של צורת גל, כדורים פועמים או כל הנפשה המקושרת לשיחה. הרמה משקפת את המקור החזק יותר: קול הסוכן או המיקרופון של המבקר.

דוגמה לצורת גל

דוגמה לכדור פועם

דוגמה למחוון דיבור

עבור ממשק משתמש שמרונדר ב־React ומשתנה בהתאם לעוצמת הקול — למשל תג “מדבר” המבוסס על סף — דגמו את audioLevelRef.current במרווח קבוע ושמרו את התוצאה במצב:
קראו תמיד את הרמות מתוך audioLevelRef.current. המספר audioLevel באובייקט ההחזרה הוא מיושן ותמיד 0 — כל לוגיקה המבוססת עליו תקרא אפס ללא הודעה.

מכונת מצבים

המאפיין state פועל לפי מחזור החיים הבא:

דוגמאות

עם בקרת השתקה

עם צלצול

השמיעו צליל צלצול בזמן ההתחברות כדי לדמות שיחת טלפון:
הצלצול מתנגן בלולאה במהלך מצב connecting ונחלש כשהסוכן מתחבר. העבירו את true כדי להשתמש בצלצול ברירת המחדל המובנה, או מחרוזת URL כדי להשתמש בקובץ שמע משלכם.

עם קריאות חוזרות לאירועים

ממשק משתמש מותאם אישית מלא


טיפים

הרכיב phone.audio אינו נראה אך נדרש. מקמו אותו בכל מקום ב-JSX שלכם — הוא אינו מציג DOM נראה לעין, אך מנהל פנימית את חיבור השמע של WebRTC.
מצב connecting יכול להימשך 1–3 שניות. השביתו את כפתור השיחה במהלך מצב זה כדי למנוע ניסיונות חיבור כפולים.
כאשר המצב הוא error, הציגו למשתמשים את phone.error והשאירו את כפתור השיחה שלכם פעיל. ה-hook אינו יוצא ממצב error בעצמו — קריאה נוספת ל-connect() מתחילה ניסיון חדש ומנקה את השגיאה הקודמת.
ה-callbacks onConnect, onDisconnect ו-onError מתאימים במיוחד לאנליטיקה, לרישום לוגים או להפעלת לוגיקה אחרת באפליקציה ללא תשאול של המצב.
audioLevelRef הוא המקור החי היחיד לרמת שמע. קראו את audioLevelRef.current בתוך requestAnimationFrame עבור הנפשות חלקות כמו צורות גל (קריאה מ-ref אינה גורמת לעיבודים מחדש), או דגמו אותו במרווחי זמן ושמרו את התוצאה במצב עבור ממשק משתמש שמרונדר על ידי React. המספר audioLevel הוצא משימוש ותמיד הוא 0 — אל תבנו עליו לוגיקה.