💬 Виджет на сайте

Чат с ассистентом через embed.js: кнопка запуска и iframe, которые обращаются к вашему API Gonka SaaS.

✅ Доступно для: всех типов агентов. Ключ и настройки — в кабинете: Агенты → [агент] → Виджет.

Что нужно до вставки кода

ТребованиеПодробности
Агент опубликованАгент создан в Gonka SaaS.
Ключ виджетаВкладка Виджет → «Сгенерировать ключ» → префикс gw_…. Храните как секрет.
Хостинг embed.jsСтатика пакета widget/: embed.js, iframe.html, ассеты — по HTTPS (CDN, поддомен, Render и т.п.).
Публичный APIБраузер посетителя должен достучаться до GET /api/v1/widget/public-config/:agentId и чат-эндпоинтов. В атрибуте data-api-base указывается origin API без слэша в конце.

Универсальный код вставки

Готовый фрагмент копируется из кабинета: Агент → Виджет → Код для вставки. Минимальный вид:

<script
  src="https://YOUR_WIDGET_HOST/embed.js"
  async
  id="gonka-widget-script"
  data-gonka-widget
  data-agent-id="YOUR_AGENT_UUID"
  data-widget-key="gw_YOUR_SECRET_KEY"
  data-api-base="https://YOUR_API_ORIGIN"
  data-theme="ocean"
  data-position="right"
></script>

Атрибуты

АтрибутОбязательныйНазначение
srcДаHTTPS URL к embed.js.
id / data-gonka-widgetЖелательноПомогают loader найти тег скрипта.
data-agent-idДаUUID агента (как в URL кабинета).
data-widget-keyДаКлюч из кабинета после генерации.
data-api-baseПочти всегда*Origin вашего API, например https://api.example.com. Если сайт и API на одном origin — можно опустить (редко).
data-themeНетТема iframe: ocean, sunset и др.
data-positionНетright или left — угол кнопки.

В сниппете кабинета URL скрипта берётся из NEXT_PUBLIC_WIDGET_SCRIPT_URL, origin API — из NEXT_PUBLIC_API_URL (см. деплой фронтенда).

Как это устроено

  1. embed.js читает атрибуты тега <script>.
  2. Запрашивается оформление: GET {apiBase}/api/v1/widget/public-config/{agentId}.
  3. Встраивается iframe со страницей хоста виджета (iframe.html), база задаётся при сборке (VITE_IFRAME_BASE).
  4. В iframe через postMessage передаются ключ, agentId, theme, apiBase.

Проверка после установки

  • Сайт открывается по HTTPS.
  • В Network вкладке embed.js отдаётся с кодом 200.
  • В консоли браузера: fetch('https://ВАШ_API/api/v1/widget/public-config/ВАШ_AGENT_ID').then(r=>r.json()) → success: true.
  • Виджет включён в настройках агента; ключ не отозван.
  • Сообщение из чата видно в Агенты → Диалоги.

Сайт на Tilda

Вставляется тот же блок <script>…</script>. Удобнее один раз на весь сайт.

Вариант A — на все страницы (рекомендуется)

  1. Редактор Tilda → Настройки сайта → Дополнительно.
  2. Поле HTML-код для вставки перед </body> (или аналог по локали Tilda).
  3. Вставьте целиком тег <script …></script>.
  4. Опубликуйте сайт — без публикации изменения не на проде.

Вариант B — только одна страница

  1. Откройте страницу в редакторе.
  2. Добавьте блок T123 «HTML-код» / Embed HTML внизу (например подвал).
  3. Вставьте тот же скрипт. Опубликуйте.
ТемаСовет
HTTPSДомен Tilda или свой домен с SSL; API и виджет тоже по HTTPS.
ДублированиеНе вставляйте скрипт и в настройки сайта, и в блок на той же странице — будет два виджета.
Cookies / согласияСогласуйте с cookie-баннером и политикой ПДн; для юр. текста см. инструкцию по встраиванию виджета.

Если что-то не работает

Кнопки нет

404 на embed.js, неверный URL в src; блокировщик рекламы.

Кнопка есть, чат пустой / ошибка

Неверный data-api-base; CORS — API должен разрешать origin вашего сайта, не только кабинета SaaS.

Не тот агент

Опечатка в data-agent-id; staging vs production ключ.

Полная версия в репозитории: docs/04-resources/widget-embed.md