Документація
  • English
  • Українська
  • English
  • Українська
  • Головна

    • Документація ConnectiveOne
  • Підключення каналів

    • Канали (Channels)

      • Інтегратор — Хаб налаштування каналів
      • Інструкції

        • Як налаштувати віджет в Налаштування
        • Як підключити Facebook Messenger та Instagram до ConnectiveOne
        • Як підключити Gmail до ConnectiveOne
        • Як підключити Outlook до ConnectiveOne
        • Як підключити Telegram до ConnectiveOne
        • Як підключити номерні Viber, Telegram та WhatsApp через e-chat
        • Як підключити Viber до ConnectiveOne
        • Як підключити WhatsApp до ConnectiveOne
        • Як кастомізувати кольори віджету
        • Як керувати віджетом з сайту
        • Як передати параметри з сайту до сценарію
        • Як налаштувати відправку SMS через Alpha SMS
        • Як налаштувати відправку Viber/SMS через Infobip
        • Як підключити віджет на сайт
        • Як використовувати Custom Code для віджету
        • Як працювати з віджетом на SPA додатках
  • Обробка звернень

    • Операторська панель (OperatorLine)

      • Оператор — Хаб сценаріїв для OperatorLine
      • Супервайзер — Хаб сценаріїв для OperatorLine
      • Адміністратор — Хаб сценаріїв для OperatorLine
      • Інтегратор — Хаб операторської панелі для OperatorLine
      • Пояснення

        • Про обробку звернень в ConnectiveOne
        • Про авторозподіл діалогів між операторами
        • Про автоматичне підключення вільного оператора до нового діалогу
        • Про підключення чату з оператором через операторську панель
        • Про перерозподіл чатів з оператора
      • Інструкції

        • Змінити статус звернення
        • Створити фільтр
        • Створити папку
        • Створити вихідне звернення
        • Як створити тікет?
        • Як прив'язати тікети між собою?
        • Управляти папками
        • Як редагувати поля тікету?
        • Як керувати спостерігачами тікету?
        • Відстежувати статуси операторів
        • Відкрити звернення
        • Переставити папки
        • Як відповісти клієнту?
        • Позначити тему та теги
        • Використати копілот
        • Використати швидкі відповіді
        • Переглянути список чатів
        • Переглянути чати у таблиці
        • Переглянути чергу звернень
        • Як переглянути логи тікету?
        • Як переглянути SLA метрики тікету?
    • Профіль (Profile)

      • Оператор — Хаб сценаріїв для Profile
      • Адміністратор — Хаб сценаріїв для Profile
      • Інструкції

        • Як змінити мову інтерфейсу?
        • Налаштувати папки
        • Налаштувати сповіщення
        • Налаштувати швидкі відповіді
        • Налаштувати підпис
    • Клієнти (BroadcastUsers)

      • Оператор — Хаб сценаріїв для BroadcastUsers
      • Інтегратор — Хаб сценаріїв для BroadcastUsers
      • Адміністратор — Хаб сценаріїв для BroadcastUsers
      • Інструкції

        • Створити сегмент за фільтрами
        • Редагувати дані клієнта
        • Експортувати дані клієнтів
        • Відфільтрувати клієнтів
        • Управляти підпискою
        • Як знайти клієнта?
        • Шукати клієнтів за файлом
        • Надіслати розсилку обраним клієнтам
        • Як переглянути картку клієнта?
        • Переглянути канали клієнта
  • Розсилки

    • Розсилки (Broadcast)

      • Оператор — Хаб розсилок для Broadcast
      • Інтегратор — Хаб налаштувань для Broadcast
      • Аналітик — Хаб аналітики для Broadcast
      • Інструкції

        • Як активувати заплановану розсилку?
        • Як перевірити статус розсилки?
        • Як налаштувати ліміти розсилок?
        • Як створити розсилку?
        • Як створити тему розсилки?
        • Як деактивувати тему розсилки?
        • Як редагувати чернетку розсилки?
        • Як редагувати тему розсилки?
        • Як експортувати результати розсилки?
        • Як запустити розсилку негайно?
        • Як зберегти розсилку як чернетку?
        • Як переглянути результати розсилки?
        • Як переглянути статистику кліків?
        • Як переглянути статистику доставок?
        • Як переглянути статистику відкриттів?
  • Автоматизація

    • Сценарій

      • Інтегратор — Хаб сценаріїв для Scenario Dialog
      • Інструкції

        • Як додати переклади до сценарію?
        • Як створити новий сценарій бота?
        • Як створити секцію сценарію?
        • Як редагувати існуючий сценарій бота?
        • Як експортувати або імпортувати сценарій?
        • Як використати action в сценарії?
        • Як переглянути та відновити версії сценарію?
    • Action Jail

      • Оператор — Хаб сценаріїв для ActionJail
      • Інструкції

        • Як створити й підтримувати дію в ActionJail (Адміністратор)
        • Як клонувати дію в ActionJail
        • Як швидко знайти дію в ActionJail
        • Як підключити дію ActionJail до сценарію бота (Інтегратор)
    • Інтеграції

      • Інтегратор — Хаб інтеграцій ConnectiveOne
      • Інструкції

        • Як інтегрувати операторську панель як віджету в CRM/ERP
        • Як налаштувати назву продукту для Zoho CRM
        • Як інтегрувати зовнішню систему через Custom Channel
        • Як отримати дані з API за допомогою send_request
        • Як передати дані з ConnectiveOne через send_request
        • Як налаштувати підписку користувача на нотифікації
        • Як запустити сценарій бота через API call_node
        • Як інтегрувати ConnectiveOne з eSputnik
        • Як надіслати розсилку по телефону через route
        • Як використовувати API ConnectiveOne
        • Як налаштувати webhook панелі оператора
      • Довідник

        • API Reference — Довідник по API ConnectiveOne
    • Користувацькі дані (CustomData)

      • Інтегратор — Хаб сценаріїв для Custom Data
      • Адміністратор — Хаб сценаріїв для Custom Data
      • Аналітик — Хаб сценаріїв для Custom Data
      • Інструкції

        • Додати поле до моделі
        • Налаштувати тип поля
        • Створити групу
        • Як створити модель даних?
        • Редагувати модель
        • Експортувати відфільтровані дані
        • Як експортувати дані моделі?
        • Як знайти записи за фільтрами?
        • Імпортувати дані з файлу
        • Сортувати записи
        • Валідувати дані
        • Переглянути записи моделі
    • Менеджер файлів (FileManager)

      • Оператор — Хаб сценаріїв для FileManager
      • Інструкції

        • Як створити завдання в Jira з файлом?
        • Як видалити файл або папку?
        • Як перейти в папку?
        • Як завантажити новий файл?
        • Як переглянути список файлів?
  • Штучний інтелект

    • Fast Line Pro (FastLinePro)

      • Інтегратор — Хаб сценаріїв для FastLinePro
      • Адміністратор — Хаб сценаріїв для FastLinePro
      • Інструкції

        • Активувати KB Plugin
        • Як перевірити відповідь AI-агента в сценарії?
        • Перевірити статус синхронізації
        • Налаштувати промпт агента
        • Як налаштувати змінні агента в FastLinePro?
        • Як налаштувати фрагментацію в базі знань FastLinePro?
        • Налаштувати синхронізацію KB Plugin
        • Налаштувати синхронізацію знань
        • Як підключити базу знань до AI-агента в FastLinePro?
        • Створити агента
        • Як створити чат-бота?
        • Як створити базу знань?
        • Деактивувати KB Plugin
        • Як підготувати файл для бази знань FastLinePro?
        • Запустити синхронізацію KB
        • Оновити файли KB
        • Завантажити файли до KB
        • Як використати дію action_fastline_pro в сценарії?
    • Контроль якості (Quality Assurance)

      • Супервайзер — Хаб сценаріїв для Quality Assurance
      • Адміністратор — Хаб сценаріїв для Quality Assurance
      • Аналітик — Хаб сценаріїв для Quality Assurance
      • Інструкції

        • Як корегувати AI-оцінки критеріїв?
        • Як затвердити оцінку?
        • Оцінити звернення
        • Провести перевірку якості
        • Як створити нову оцінку діалогу?
        • Експортувати оцінки
        • Фільтрувати оцінки
        • Використати чеклист
        • Переглянути деталі оцінки
        • Як переглянути список оцінок та знайти потрібну?
        • Переглянути дашборд якості
        • Переглянути звіти якості
  • Статистика

    • Статистика (Statistics)

      • Супервайзер — Хаб сценаріїв для Statistics
      • Адміністратор — Хаб сценаріїв для Statistics
      • Аналітик — Хаб сценаріїв для Statistics
      • Інструкції

        • Застосувати фільтри до звіту
        • Як налаштувати CSAT (задоволеність клієнтів) в Statistics?
        • Як створити та налаштувати воронку в Statistics?
        • Створити детальний звіт
        • Створити воронку
        • Експортувати звіт
        • Як експортувати дані статистики?
        • Налаштувати цільові метрики
        • Переглянути щоденний звіт
        • Переглянути дашборд
        • Як переглянути дашборди Metabase в модулі Statistics?
        • Як переглянути робочий графік оператора в Statistics?
        • Переглянути змінний звіт
      • Довідник

        • Метрики статистики — довідник
  • Адміністрування

    • Налаштування

      • Супервайзер — Хаб налаштувань операторської панелі
      • Адміністратор — Хаб налаштувань системи
      • Інструкції

        • Як активувати або деактивувати бота?
        • Як налаштувати автентифікацію та управління доступом?
        • Як налаштувати бота?
        • Як налаштувати параметри чатів?
        • Як налаштувати поля картки клієнта?
        • Як налаштувати поля клієнтів?
        • Як налаштувати параметри файлів?
        • Як налаштувати гарячі клавіші?
        • Як налаштувати параметри інстансу?
        • Як налаштувати операторів у чатах?
        • Як налаштувати ролі та права доступу?
        • Як налаштувати стилі та скрипти?
        • Як налаштувати загальні налаштування системи?
        • Як налаштувати параметри тікетів?
        • Як налаштувати таймери для чатів?
        • Як налаштувати поля користувачів?
        • Як створити нового бота?
        • Як переглянути список ботів?
        • Як переглянути список користувачів?
    • Доступ

      • Відновлення доступу — Хаб сценаріїв
      • Інструкції

        • Як увімкнути потік відновлення пароля (Адміністратор)
        • Як згенерувати лінк для скидання пароля вручну (Адміністратор)
        • Як скинути пароль через «Забули пароль?»

Як використовувати Custom Code для віджету

Custom Code дозволяє додати кастомний JavaScript код, який виконується перед ініціалізацією віджету. Це корисно для інтеграції з третіми сторонами (Google Analytics, Intercom), модифікації параметрів віджету та створення глобальних helper функцій.

Що таке Custom Code?

Custom Code — це JavaScript код, який:

  • Виконується перед ініціалізацією Vue компонентів віджету
  • Має доступ до embed_state, kw_event(), kw_event_trigger()
  • Може модифікувати параметри віджету перед ініціалізацією
  • Підтримує Event Queue для обробки подій, що виникли до завантаження коду

Де налаштувати Custom Code?

  1. Перейдіть в Налаштування → Боти → оберіть бота → Widget
  2. Знайдіть розділ Custom Code
  3. Введіть ваш JavaScript код
  4. Збережіть налаштування

Доступні об'єкти

В Custom Code доступні:

  • embed_state — стан віджету перед ініціалізацією (можна модифікувати)
  • kw_event() — функція для виклику подій
  • kw_event_trigger() — функція для тригеру подій
  • window — глобальний об'єкт браузера

Модифікація параметрів віджету

Змініть параметри віджету перед ініціалізацією:

// Додати параметри на основі URL
embed_state.params_from_site = {
  ...embed_state.params_from_site,
  page_url: window.location.href,
  page_path: window.location.pathname,
  user_agent: navigator.userAgent
};

// Змінити заголовок на основі сторінки
if (window.location.pathname === '/products') {
  embed_state.title = 'Питання про товари';
  embed_state.subtitle = 'Наші консультанти допоможуть';
}

Інтеграція з Google Analytics

Відстежуйте події віджету в Google Analytics:

// Перевірка наявності Google Analytics
if (window.gtag) {
  // Відстеження відкриття чату
  window.addEventListener('widgetChatOpened', function() {
    window.gtag('event', 'widget_chat_opened', {
      event_category: 'Widget',
      event_label: 'Chat Opened'
    });
  });

  // Відстеження закриття чату
  window.addEventListener('widgetChatClosed', function() {
    window.gtag('event', 'widget_chat_closed', {
      event_category: 'Widget',
      event_label: 'Chat Closed'
    });
  });
}

Інтеграція з Intercom

Інтегруйте віджет з Intercom:

// Перевірка наявності Intercom
if (window.Intercom) {
  window.addEventListener('widgetChatOpened', function() {
    window.Intercom('trackEvent', 'widget-chat-opened');
  });
}

Використання Event Queue

Обробляйте події, що виникли до завантаження Custom Code:

// Встановити обробник подій
window.__kw_custom_handler_ready = true;

// Обробити накопичені події
if (window.__kw_event_queue && window.__kw_event_queue.length > 0) {
  window.__kw_event_queue.forEach(function(event) {
    // Ваша обробка події
    console.log('Обробка події:', event.event_name, event.event_data);
  });
  
  // Очистити чергу
  window.__kw_event_queue = [];
}

Створення helper функцій

Створіть глобальні функції для спрощення інтеграції:

// Створити helper функцію для відкриття чату з продуктом
window.openProductChat = function(productId, productName) {
  kw_event('kwsetparamsfromsite', {
    params_from_site: {
      product_id: productId,
      product_name: productName,
      action: 'product_inquiry'
    }
  });
  kw_event('command', {
    title: 'Питання про товар',
    subtitle: productName
  });
  kw_event('emitevent', {
    event: 'alias',
    alias: 'product-inquiry'
  });
  kw_event('openchat', 1);
};

// Використання на сайті
// <button onclick="openProductChat('12345', 'iPhone 15')">Запитати про товар</button>

Динамічна конфігурація на основі URL

Налаштуйте віджет залежно від поточної сторінки:

// Аналіз URL та зміна конфігурації
const path = window.location.pathname;
const searchParams = new URLSearchParams(window.location.search);

// Зміна заголовка залежно від сторінки
if (path.startsWith('/products')) {
  embed_state.title = 'Питання про товари';
} else if (path.startsWith('/support')) {
  embed_state.title = 'Технічна підтримка';
} else {
  embed_state.title = 'Допомога';
}

// Додавання параметрів з URL
if (searchParams.has('utm_source')) {
  embed_state.params_from_site = {
    ...embed_state.params_from_site,
    utm_source: searchParams.get('utm_source'),
    utm_campaign: searchParams.get('utm_campaign')
  };
}

Обробка помилок

Custom Code обгортається в IIFE, тому помилки не ламають віджет:

try {
  // Ваш код
  if (window.someExternalService) {
    window.someExternalService.init();
  }
} catch (error) {
  console.error('Помилка в Custom Code:', error);
  // Помилка не вплине на роботу віджету
}

Обмеження

  • Код завантажується тільки якщо widget_custom_code: true та вказано engine_url при ініціалізації
  • Код виконується синхронно перед ініціалізацією Vue компонентів
  • Якщо параметр вже встановлений в kw('init', {...}), значення з embed_state може бути перезаписане
  • Рекомендується використовувати унікальні назви для глобальних функцій (з префіксом)

Пов'язані статті

  • Що таке віджет
  • JavaScript API для керування віджетом
  • Налаштування віджету в Налаштування
  • Керування віджетом з сайту
Prev
Як підключити віджет на сайт
Next
Як працювати з віджетом на SPA додатках