Gömme: PBX-i Proqramınıza Yerləşdirin
CRM-iniz, texniki xidmət proqramınız ya da hər hansı bir veb tətbiqiniz varsa mərkəz ekranlarını və veb telefonunu öz interfeysinizin içində açabilirsiniz. Canlı zənglər, zəng qeydləri, səs qeydləri, fasilə, avtomatik zəng, nömrə bloklama və brauzer telefonu bu yolla gömülə bilər.
PHP tələb olunmur. Düz HTML, jQuery, React ya da hər hansı bir çatı ilə işləyir. Ekranlar yalnız sizin müəyyən etdiyiniz domenlərdə açılır.
Əsas ünvan: https://api.buluthat.com
1. İnteqrasiya kodu yaradın
Paneldə Abunə İşlemleri > Gömme Kodları (CRM) səhifəsini açın. Distribyutor olsanız bu işi Distribyutor Paneli > Gömme və API səhifəsindən, müştərini seçərək edirsiniz.
| Sahə | İzah |
|---|---|
| İcazəli sahə adları | CRM-inizin ünvanı, misal. https://crm.firmaniz.com. Hər sətirə bir ünvan yazın. https://*.firmaniz.com yazarsanız bütün alt domenlər əhatə olunur. Siyahıda olmayan saytda ekran açılmır; bunu brauzer tətbiq edir. |
| Ekranlar | Göstəriləcək PBX ekranları. İstifadəçi yalnız bunları aça bilər. |
| Giriş | iframe içində giriş (varsayılan) ya da girişsiz. Serverdən imzalı link hər iki modda da işləyir. |
| Marka | Distribyutor markası açıqdırsa ekranlarda distribyutorun adı, loqosu və rəngi görünür. |
Gömme kodunuz wk_ ilə başlayır. Bu kod gizli deyil; səhifənizin mənbəyində görünür. Təhlükəsizlik icazəli sahə adı siyahısından və aşağıdakı giriş metodlarından gəlir.
2. Kodu səhifənizə yapışdırın
Bir sətir
<div id="santral" style="height:720px"></div>
<script src="https://api.buluthat.com/assets/js/embed.js" data-key="wk_..." data-page="live_monitor" data-target="#santral"></script>
jQuery
<script src="https://api.buluthat.com/assets/js/embed.js"></script>
<script>
$(function () {
var santral = $('#santral').buluthat({ key: 'wk_...', page: 'report_calls' }).data('buluthat');
});
</script>
Düz iframe
<iframe src="https://api.buluthat.com/embed.php?w=wk_...&page=live_monitor"
style="width:100%;height:720px;border:0" allow="microphone; autoplay"></iframe>
Web telefonu üçün iframe'də allow="microphone" şartdır. embed.js bunu özü əlavə edir.
3. Ekranlar
page | Ekran |
|---|---|
live_monitor | Canlı zəng izləmə |
status_panel | Canlı mərkəz vəziyyəti |
webphone | Web telefonu (brauzerdən zəng/cavab) |
report_calls | Zəng və səs qeydləri |
report_recordings | Səs qeydləri |
report_queue_live | Kuyruq anlıq izləmə |
breaks | Fasilə idarəsi |
auto_calls | Avtomatik zəng |
media | Səs faylları |
blocked_numbers | Nömrə əngəlləmə |
voice_otp | Telefonla təsdiqləmə |
contacts | Kataloq |
voicebot_live | Səsli köməkçi, canlı görüşlər |
voicebot_sessions | Səsli köməkçi görüşmə hesabatı |
voicebot_inbox | Asistent qeydləri |
dialer_agent | Satış dialer nümayəndə ekranı |
dashboard | Gündəlik xülasə |
4. Kimlik doğrulama
a) iframe içində giriş
Varsayılan üsuldur. İstifadəçi ilk açılışda e-poçt və şifrəsini çərçivənin içinə yazır; iki addımlı təsdiqləmə açıqdırsa, kod da soruşulur. Sessiya yalnız bu gömme koduna və seçilmiş ekranlara keçərlidir.
Bəzi brauzerlər (xüsusilə Safari) başqa saytın çərçivəsindəki çərəzləri tamamilə bloklayır. Bu halda giriş ekranında Yeni pəncərədə aç bağlantısı çıxar. Davamlı həll üçün imzalı link istifadə edin.
b) Serverdən imzalı link (təklif olunan)
CRM istifadəçiniz artıq öz sisteminizdə oturum açmışdır. Serveriniz Buluthat-dan o istifadəçi üçün 2 dəqiqə keçərlidir, tək istifadəlik bir giriş linki alır və iframe'in src dəyərinə verir. İstifadəçi əlavə şifrə daxil etmir.
Açar: Müştəri hesabında API Açarları səhifəsindən Gömülmə əhatəli bir açar yaradın. Distribyutor olsanız Distribyutor Paneli > İnteqrasiya və API > Distribyutor API açarı istifadə edin; bu açar sizə bağlı bütün müştərilər üçün keçərlidir. Açar yalnız serverinizdə qalır, brauzerə getmir.
curl -X POST 'https://api.buluthat.com/api/embed.php?action=session' \
-H 'Authorization: Bearer bt_...' \
-H 'Content-Type: application/json' \
-d '{"widget":"wk_...","user_email":"temsilci@firma.com","extension":"1000","page":"webphone"}'
Distribyutor açarı ilə eyni istək belə edilir:
curl -X POST 'https://api.buluthat.com/api/embed.php?action=session' \
-H 'X-Bt-Partner-Key: bp_...' -H 'Content-Type: application/json' \
-d '{"tenant_id":123,"user_email":"temsilci@musteri.com","page":"live_monitor"}'
| Sahə | Məcburi | İzah |
|---|---|---|
widget | xeyr | Gömülmə kodu (wk_...). Verilməzsə müştərinin ilk aktiv gömme kodu istifadə olunur. |
user_email | xeyr | Paneldə bu e-poçtla qeydiyyatdan keçmiş istifadəçi kimi daxil olunur. Şəxsi isə öz səlahiyyətləri də keçərlidir. |
user_id | xeyr | user_email yerinə istifadə edilə bilər. |
extension | xeyr | Web telefonunun istifadə edəcəyi daxili nömrəsi (məs. 1000). |
page | xeyr | Açılacaq ekran. Gömme kodunda icazəli olmalıdır. |
tenant_id | distribyutor | Yalnız distribyutor anahtarı ilə: sizə bağlı müştərinin nömrəsi. |
İstifadəçi verilməzsə gömme kodundakı girişsiz istifadəçi, o da yoxsa müştəri nümayəndəsi istifadə olunur.
Cavab:
{ "ok": true, "url": "https://api.buluthat.com/embed.php?w=wk_...&sso=...", "expires_in": 120, "user": "temsilci@firma.com" }
PHP nümunəsi:
$ch = curl_init('https://api.buluthat.com/api/embed.php?action=session');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('BULUTHAT_KEY'), 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['widget' => 'wk_...', 'user_email' => $kullanici['email'], 'page' => 'live_monitor']),
]);
$cevap = json_decode(curl_exec($ch), true);
echo '<iframe src="' . htmlspecialchars($cevap['url']) . '" style="width:100%;height:720px;border:0" allow="microphone"></iframe>';
Digər uclar:
GET ?action=widgets: gömme kodlarını siyahıya alır. Distribyutor açarı ilətenant_idlazımdır.GET ?action=ping: açarı sınar.
c) Girişsiz mod
Gömülmə kodu seçdiyiniz istifadəçi olaraq şifresiz açılır. Bunun üçün iki şərt var:
- İstək icazəli sahə adınızın çərçivəsindən gəlməlidir.
- İstəsəniz IP siyahınızdan gəlməsi də tələb oluna bilər.
Xəbərdarlıq: wk_ kod səhifə mənbəyində qaldığı üçün bu mod aşağı təhlükəsizliklidir. Yalnız öz daxili şəbəkənizdəki ekranlar üçün, icazəsi məhdud bir işçi hesabınızla istifadə edin.
5. JavaScript API və hadisələr
var s = Buluthat.mount('#tel', { key: 'wk_...', page: 'webphone' });
s.dial('05321234567'); // web telefonundan ara
Buluthat.dial('05321234567'); // sayfadaki ilk web telefonundan ara
s.go('report_calls'); // ekran değiştir
s.on('call', function (c) {
// c.state: idle | ringing | dialing | incall ; c.number: karşı numara
if (c.state === 'ringing') { musteriKartiniAc(c.number); }
});
s.on('ready', function (d) { /* ekran yüklendi: d.page */ });
s.on('resize', function (d) { /* içerik yüksekliği: d.height */ });
mount seçimlər:
| Seçim | İzah |
|---|---|
key | Gömülmə kodu |
page | İlk ekran |
url | İmzalanmış link (serverdən aldığınız url); key yerinə istifadə olunur |
height | Hündürlük. Rəqəm (px) ya da CSS dəyəri; varsayılan 100% |
autoHeight | true əgər çərçivə içeriğinin hündürlüyünə uyğun gəlir |
Tıkla-ara nümunəsi (jQuery):
$('.musteri-telefon').on('click', function () { Buluthat.dial($(this).text()); });
Mesajlar yalnız Buluthat serverinin ünvanından qəbul edilir. Buluthat da yalnız icazəli domenlərinizdən gələn əmrləri dinləyir.
6. Təhlükəsizlik qeydləri
- Gömme sessiyası ayrı bir çərəzdə saxlanılır və yalnız seçilmiş ekranları açar. Abunə, ödəniş, şifrə və API açarı ekranları gömüldükdə heç vaxt açılmır.
- Hər giriş və gömme kodu dəyişikliyi müştərinin Əməliyyat Tarixi'nə yazılır.'
- Bir yerləşdirmə kodunu silmək və ya bağlamaq, onu istifadə edən bütün səhifələrdə ekranı dərhal bağlayır.
- API açarınızı brauzer koduna, mobil tətbiqə ya da hər kəsə açıq depoya qoymayın. Ətraflı: API Təhlükəsizliyi.
