Встраивание: Внедрите систему в ваше программное обеспечение

Если у вас есть адрес вашего CRM, технической службы или любого веб-приложения, вы можете открыть экраны АТС и веб-телефон внутри вашего интерфейса. Живые звонки, записи звонков, голосовые записи, паузы, автоматические звонки, блокировка номеров и браузерный телефон могут быть встроены таким образом.

PHP не требуется. Работает с обычным HTML, jQuery, React или любым другим фреймворком. Экраны открываются только на доменах, которые вы указали.

Базовый адрес: https://api.buluthat.com

1. Создайте код встраивания

В панели Операции подписки > Коды встраивания (CRM) откройте страницу. Если вы дистрибьютор, сделайте это в Панели дистрибьютора > Встраивание и API страницы, выбрав клиента.

ПолеОписание
Разрешенные доменные именаАдрес вашего CRM, например. https://crm.firmaniz.com. Напишите адрес на каждой строке. https://*.firmaniz.com если вы напишете, охватываются все поддомены. Экран не открывается на сайте, которого нет в списке; это применяет браузер.
ЭкраныЭкранные панели системы, которые будут отображаться. Пользователь может открывать только их.
Входвход в iframe (по умолчанию) или без входа. Подписанная ссылка с сервера работает в обоих режимах.
БрендЕсли бренд партнера открыт, на экранах отображается имя, логотип и цвет партнера.

Ваш код wk_ начинается с. Этот код не является секретным; он виден в источнике вашей страницы. Происходит из списка разрешенных доменных имен и нижеуказанных методов входа.

2. Вставьте код на вашу страницу

Одна строка

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

Простой 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>

Веб-телефон в iframe allow="microphone" обязателен. embed.js он добавляет это сам.

3. Экраны

pageЭкран
live_monitorОтслеживание живых звонков
status_panelСтатус живой АТС
webphoneВеб-телефон (звонок\/ответ из браузера)
report_callsЗаписи звонков и голосовые записи
report_recordingsЗаписи звонков
report_queue_liveМониторинг очереди в реальном времени
breaksУправление перерывами
auto_callsАвтодозвон
mediaАудиофайлы
blocked_numbersБлокировка номеров
voice_otpПодтверждение по телефону
contactsСправочник
voicebot_liveГолосовой помощник, живые звонки
voicebot_sessionsОтчет о звонках голосового помощника
voicebot_inboxЗаметки ассистента
dialer_agentЭкран представителя продаж-автодайлер
dashboardЕжедневный отчет

4. Аутентификация

a) Вход в iframe

Это метод по умолчанию. Пользователь вводит свой адрес электронной почты и пароль в рамку при первом открытии; если включена двухфакторная аутентификация, также запрашивается код. Сессия действительна только для этого встроенного кода и выбранных экранов.

Некоторые браузеры (особенно Safari) полностью блокируют куки с других сайтов в рамках. В этом случае на экране входа Открыть в новом окне ссылка удаляется. Для постоянного решения используйте подписанную ссылку.

Ваш пользователь CRM уже вошёл в свою систему. Ваш сервер Buluthat для этого пользователя 2 минут действителен, одноразовый получает ссылку для входа и iframe' src дает значение. Пользователь также не вводит пароль.

Ключ: На счете клиента API Ключи страницы Встраивание создайте комплексный ключ. Если вы дистрибьютор, перейдите в Панель дистрибьютора > Встраивание и API > API ключ партнера используйте; этот ключ действителен для всех клиентов, связанных с вами. Ключ хранится только на вашем сервере, не попадает в браузер.

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

Запрос с тем же ключом партнера выглядит так:

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"}'
ПолеОбязательноОписание
widgetнетВстраиваемый код (wk_...). Если не указано, используется первый активный код клиента.
user_emailнетВ панели вход осуществляется как пользователь, зарегистрированный по этому электронному адресу. У сотрудников также действуют их полномочия.
user_idнетuser_email может быть использован вместо.
extensionнетВнутренний номер, который будет использовать веб-телефон (например. 1000).
pageнетЭкран откроется. Должен быть разрешен в коде встраивания.
tenant_idдистрибьюторТолько с помощью ключа дистрибьютора: номер клиента, связанного с вами.

Если пользователь не указан, используется пользователь без входа из встроенного кода, если его нет, используется уполномоченный клиент.

Ответ:

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

Пример PHP:

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

Другие конечные точки:

  • GET ?action=widgets: перечисляет коды встраивания. С ключом партнера tenant_id необходимо.
  • GET ?action=ping: проверяет ключ.

c) Режим без входа

Встраиваемый код открывается для выбранного пользователя без пароля. Для этого есть два условия:

  • Запрос должен поступать из разрешенного доменного имени вашего фрейма.
  • Если хотите, можно также потребовать, чтобы это приходило из вашего списка IP.

Предупреждение: wk_ поскольку код находится в исходном коде страницы, этот режим имеет низкую безопасность. Только для экранов в вашей внутренней сети, с ограниченными правами персонал используйте с вашим аккаунтом.

5. JavaScript API и события

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 варианты:

ОпцияОписание
keyВстраиваемый код
pageПервый экран
urlПодписанная ссылка (полученная с сервера url); key используется вместо
heightВысота. Число (px) или значение CSS; по умолчанию 100%
autoHeighttrue если соответствует высоте содержимого фрейма

Пример кликни-ищи (jQuery):

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

Сообщения принимаются только с адреса сервера Buluthat. Buluthat также слушает команды только с ваших разрешенных доменов.

6. Записки по безопасности

  • Код встраивания хранится в отдельном cookie и открывает только выбранные экраны. Экраны подписки, оплаты, пароля и API ключа никогда не открываются при встраивании.
  • Каждый вход и изменение встроенного кода клиента История операций'как написать.'
  • Удаление или отключение встраиваемого кода немедленно закроет экран на всех страницах, где он используется.
  • Не размещайте ваш API ключ в коде браузера, мобильном приложении или общедоступном репозитории. Подробности: Безопасность API.