Einbetten: Integrieren Sie die PBX in Ihre Software

Wenn Sie ein CRM, ein technisches Serviceprogramm oder eine beliebige Webanwendung haben, können Sie die PBX-Bildschirme und das WebPhone in Ihrer Benutzeroberfläche öffnen. Live-Anrufe, Anrufaufzeichnungen, Sprachaufzeichnungen, Pausen, automatisches Wählen, Nummernblockierung und Browser-Telefon können auf diese Weise eingebettet werden.

PHP ist nicht erforderlich. Funktioniert mit reinem HTML, jQuery, React oder jedem anderen Framework. Die Bildschirme öffnen sich nur unter den von Ihnen festgelegten Domainnamen.

Basisadresse: https://api.buluthat.com

1. Erstellen Sie den Einbettungscode

Im Panel Abonnementvorgänge > Einbettungscodes (CRM) öffnen Sie die Seite. Wenn Sie ein Händler sind, erledigen Sie dies im Händlerpanel > Einbetten und API von der Seite, indem Sie den Kunden auswählen.

FeldBeschreibung
Erlaubte DomainnamenDie Adresse Ihres CRM, z.B. https://crm.firmaniz.com. Schreiben Sie eine Adresse in jede Zeile. https://*.firmaniz.com wenn Sie schreiben, werden alle Subdomains abgedeckt. Auf der nicht in der Liste befindlichen Seite wird kein Bildschirm geöffnet; dies wird vom Browser angewendet.
BildschirmeAnzuzeigende PBX-Bildschirme. Der Benutzer kann nur diese öffnen.
AnmeldungAnmeldung im iframe (Standard) oder ohne Anmeldung. Der signierte Link vom Server funktioniert in beiden Modi.
MarkeWenn die Händlermarke aktiviert ist, wird der Name, das Logo und die Farbe des Händlers auf den Bildschirmen angezeigt.

Ihr Embed-Code wk_ beginnt mit. Dieser Code ist nicht geheim; er ist im Quellcode Ihrer Seite sichtbar. Er stammt aus der Liste der erlaubten Domainnamen und den folgenden Anmeldemethoden.

2. Fügen Sie den Code auf Ihrer Seite ein

Einzeilig

<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>

Einfaches 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>

In iframe für WebPhone allow="microphone" ist erforderlich. embed.js fügt es selbst hinzu.

3. Bildschirme

pageBildschirm
live_monitorLive-Anrufverfolgung
status_panelLive-PBX-Status
webphoneWebPhone (Anruf/Antwort über den Browser)
report_callsAnruf- und Sprachaufzeichnungen
report_recordingsSprachaufzeichnungen
report_queue_liveEchtzeitüberwachung der Warteschlange
breaksPausenverwaltung
auto_callsAuto-Call
mediaAudio-Dateien
blocked_numbersRufnummernsperre
voice_otpTelefonverifizierung
contactsTelefonbuch
voicebot_liveSprachassistent, Live-Gespräche
voicebot_sessionsSprachassistent Gesprächsbericht
voicebot_inboxNotizen des Assistenten
dialer_agentVerkauf Dialer Vertreter Bildschirm
dashboardTägliche Zusammenfassung

4. Authentifizierung

a) Anmeldung im iframe

Ist die Standardmethode. Der Benutzer gibt beim ersten Öffnen seine E-Mail und sein Passwort in das Feld ein; wenn die Zwei-Faktor-Authentifizierung aktiviert ist, wird auch nach dem Code gefragt. Die Sitzung gilt nur für diesen Einbettungscode und die ausgewählten Bildschirme.

Einige Browser (insbesondere Safari) blockieren Cookies von anderen Seiten vollständig. In diesem Fall auf dem Anmeldebildschirm In neuem Fenster öffnen Verbindung wird entfernt. Verwenden Sie einen signierten Link für eine dauerhafte Lösung.

Ihr CRM-Benutzer hat sich bereits in Ihrem System angemeldet. Ihr Server hat für diesen Benutzer Buluthat 2 Minuten gültig, einmalig erhält einen Anmeldelink und das iframe's src gibt den Wert an. Der Benutzer gibt außerdem kein Passwort ein.

Schlüssel: Kundenkonto API-Schlüssel von der Seite Einbetten erstellen Sie einen umfassenden Schlüssel. Wenn Sie ein Händler sind, gehen Sie zu Händlerpanel > Einbettung und API > Händler-API-Schlüssel verwenden Sie; dieser Schlüssel gilt für alle Ihre verbundenen Kunden. Der Schlüssel bleibt nur auf Ihrem Server und geht nicht an den Browser.

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"}'

Die Anfrage mit dem Händler-Schlüssel wird wie folgt gestellt:

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"}'
FeldPflichtfeldBeschreibung
widgetneinEinbettungscode (wk_...). Wenn nicht angegeben, wird der erste aktive Einbettungscode des Kunden verwendet.
user_emailneinIm Panel wird als Benutzer mit dieser E-Mail-Adresse angemeldet. Das Personal hat ebenfalls seine eigenen Berechtigungen.
user_idneinuser_email kann anstelle verwendet werden.
extensionneinDie interne Nummer, die das WebPhone verwenden wird (z.B. 1000).
pageneinBildschirm wird geöffnet. Im Einbettungscode muss es erlaubt sein.
tenant_idHändlerNur mit dem Händler-Schlüssel: die Nummer des Kunden, der Ihnen zugeordnet ist.

Wenn kein Benutzer angegeben ist, wird der nicht angemeldete Benutzer im Einbettungscode verwendet, andernfalls wird der Kundenvertreter verwendet.

Antwort:

{ "ok": true, "url": "https://api.buluthat.com/embed.php?w=wk_...&sso=...", "expires_in": 120, "user": "temsilci@firma.com" }

PHP-Beispiel:

$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>';

Andere Endpunkte:

  • GET ?action=widgets: listet die Einbettungscodes auf. Mit dem Händler-Schlüssel tenant_id erforderlich.
  • GET ?action=ping: testet den Schlüssel.

c) Modus ohne Anmeldung

Der Einbettungscode wird als ausgewählter Benutzer ohne Passwort geöffnet. Dafür gibt es zwei Bedingungen:

  • Die Anfrage muss von dem Rahmen Ihrer erlaubten Domain kommen.
  • Wenn Sie möchten, kann auch gefordert werden, dass es von Ihrer IP-Liste kommt.

Warnung: wk_ da der Code im Seitenquelltext bleibt, ist dieser Modus von geringer Sicherheit. Nur für Bildschirme in Ihrem internen Netzwerk, mit eingeschränkten Berechtigungen. Personal verwenden Sie mit Ihrem Konto.

5. JavaScript API und Ereignisse

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 Optionen:

OptionBeschreibung
keyEinbettungscode
pageErster Bildschirm
urlSignierter Link (den Sie vom Server erhalten haben) url); key wird anstelle verwendet
heightHöhe. Zahl (px) oder CSS-Wert; Standard 100%
autoHeighttrue passt sich der Höhe des Inhaltsrahmens an

Klicken und Anrufen Beispiel (jQuery):

$('.musteri-telefon').on('click', function () { Buluthat.dial($(this).text()); });

Nachrichten werden nur von der Adresse des Buluthat-Servers akzeptiert. Buluthat hört auch nur auf Befehle von Ihren genehmigten Domains.

6. Sicherheitsnotizen

  • Die Embed-Sitzung wird in einem separaten Cookie gespeichert und öffnet nur die ausgewählten Bildschirme. Abonnement-, Zahlungs-, Passwort- und API-Schlüssel-Bildschirme werden beim Einbetten niemals geöffnet.
  • Jeder Zugang und jede Einbettungscode-Änderung des Kunden Transaktionsverlauf'wie geschrieben.'
  • Das Löschen oder Deaktivieren eines Embed-Codes schließt sofort die Anzeige auf allen Seiten, die ihn verwenden.
  • Setzen Sie Ihren API-Schlüssel nicht in den Browser-Code, die mobile App oder in ein öffentliches Repository. Details: API-Sicherheit.