useThunderPhone hook’u, ThunderPhone ses oturumunu, ses yönlendirmesini ve bağlantı durumunu yönetirken kullanıcı arayüzü üzerinde tam denetim sağlar. ThunderPhone arka planda her şeyi yönetirken kendi düğmeleriniz, düzenleriniz, animasyonlarınız ve markalamanızla tamamen özel bir kullanıcı arayüzü istediğinizde kullanın.
Arayüzsüz Hook Ne Zaman Kullanılmalı
HazırThunderPhoneWidget bileşeni çoğu kullanım durumunu kapsar, ancak aşağıdakilere ihtiyacınız olduğunda arayüzsüz hook’u kullanın:
- Uygulamanızın tasarım sistemine uyan tamamen özel bir arama kullanıcı arayüzü
- Gerçek zamanlı ses seviyelerine dayalı, sese duyarlı görselleştirmeler (dalga formları, küreler, titreşimli göstergeler)
- Arama öncesi formlar, arama sonrası anketler veya sesin yanında satır içi sohbet gibi özel arama akışları
- Mevcut bir bileşen kitaplığıyla entegrasyon (Material UI, Chakra, Radix vb.)
Kurulum
Kendi kullanıcı arayüzünüzü sağladığınız için arayüzsüz hook,
@thunderphone/widget/style.css içe aktarımını gerektirmez. Ancak yine de aynı @thunderphone/widget paketini yüklemelisiniz.Temel Kullanım
Seçenekler
Bu seçenekleriUseThunderPhoneOptions aracılığıyla useThunderPhone için iletin:
Hook arayüzsüzdür:
ThunderPhoneWidget görünüm prop’larını (theme, primaryColor, title, position, className) kabul etmez. Bunları iletmek bir TypeScript hatasıdır — sunumu tamamen siz oluşturursunuz.Dönüş Değeri
Hook, birUseThunderPhoneReturn nesnesi döndürür:
Sese Duyarlı UI
audioLevelRef ref’i, React yeniden oluşturmalarını tetiklemeden kare hızı düzeyinde ses seviyeleri sunar; bu da onu akıcı dalga biçimi görselleştirmeleri, titreşen küreler veya konuşmaya bağlı herhangi bir animasyonu çalıştırmak için ideal kılar. Seviye, yapay zeka ajanının sesi ya da ziyaretçinin mikrofonundan hangisi daha yüksekse onu yansıtır.
Dalga Biçimi Örneği
Titreşen Küre Örneği
Konuşma Göstergesi Örneği
Ses düzeyiyle değişen React ile işlenen bir kullanıcı arayüzü için — eşik tabanlı bir “konuşuyor” rozeti gibi —audioLevelRef.current değerini düzenli aralıklarla örnekleyin ve sonucu durumda saklayın:
Durum Makinesi
state özelliği şu yaşam döngüsünü izler:
Örnekler
Sessize Alma Denetimi ile
Zil Sesi ile
Telefon aramasını simüle etmek için bağlanırken bir zil sesi çalın:connecting durumu sırasında döngü halinde çalar ve ajan bağlandığında kademeli olarak azalır. Yerleşik varsayılan zil sesi için true, kendi ses dosyanızı kullanmak için ise bir URL dizesi iletin.
Olay Geri Çağrıları ile
Tam Özel Arayüz
İpuçları
phone.audio'yu her zaman render edin
phone.audio'yu her zaman render edin
phone.audio öğesi görünmez ancak gereklidir. JSX’inizde herhangi bir yere yerleştirin — görünür bir DOM render etmez, ancak WebRTC ses bağlantısını dahili olarak yönetir.Bağlanırken düğmeyi devre dışı bırakın
Bağlanırken düğmeyi devre dışı bırakın
connecting durumu 1-3 saniye sürebilir. Yinelenen bağlantı denemelerini önlemek için bu durum sırasında arama düğmesini devre dışı bırakın.Hata durumunu sorunsuz şekilde yönetin
Hata durumunu sorunsuz şekilde yönetin
Durum
error olduğunda, kullanıcıya phone.error değerini gösterin ve arama düğmenizi etkin tutun. Hook, error durumundan kendiliğinden çıkmaz — connect() işlevini yeniden çağırmak yeni bir deneme başlatır ve önceki hatayı temizler.Yan etkiler için geri çağrıları kullanın
Yan etkiler için geri çağrıları kullanın
onConnect, onDisconnect ve onError geri çağrıları; durumu yoklamadan analitik, günlük kaydı veya diğer uygulama mantıklarını tetiklemek için idealdir.Ses seviyelerini audioLevelRef'ten okuyun
Ses seviyelerini audioLevelRef'ten okuyun
audioLevelRef, tek canlı ses seviyesi kaynağıdır. Dalga formları gibi akıcı animasyonlar için audioLevelRef.current değerini requestAnimationFrame içinde okuyun (bir ref’i okumak yeniden render işlemine neden olmaz) veya bunu belirli aralıklarla örnekleyip sonucu React tarafından render edilen kullanıcı arayüzü için durumda saklayın. audioLevel sayısı kullanımdan kaldırılmıştır ve her zaman 0 değerindedir — bunun üzerine mantık oluşturmayın.