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.
EkranlarGö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.
MarkaDistribyutor 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

pageEkran
live_monitorCanlı zəng izləmə
status_panelCanlı mərkəz vəziyyəti
webphoneWeb telefonu (brauzerdən zəng/cavab)
report_callsZəng və səs qeydləri
report_recordingsSəs qeydləri
report_queue_liveKuyruq anlıq izləmə
breaksFasilə idarəsi
auto_callsAvtomatik zəng
mediaSəs faylları
blocked_numbersNömrə əngəlləmə
voice_otpTelefonla təsdiqləmə
contactsKataloq
voicebot_liveSəsli köməkçi, canlı görüşlər
voicebot_sessionsSəsli köməkçi görüşmə hesabatı
voicebot_inboxAsistent qeydləri
dialer_agentSatış dialer nümayəndə ekranı
dashboardGü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.

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
widgetxeyrGömülmə kodu (wk_...). Verilməzsə müştərinin ilk aktiv gömme kodu istifadə olunur.
user_emailxeyrPaneldə bu e-poçtla qeydiyyatdan keçmiş istifadəçi kimi daxil olunur. Şəxsi isə öz səlahiyyətləri də keçərlidir.
user_idxeyruser_email yerinə istifadə edilə bilər.
extensionxeyrWeb telefonunun istifadə edəcəyi daxili nömrəsi (məs. 1000).
pagexeyrAçılacaq ekran. Gömme kodunda icazəli olmalıdır.
tenant_iddistribyutorYalnı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_id lazı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
keyGömülmə kodu
pageİlk ekran
urlİmzalanmış link (serverdən aldığınız url); key yerinə istifadə olunur
heightHündürlük. Rəqəm (px) ya da CSS dəyəri; varsayılan 100%
autoHeighttrue ə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.