Виджеты для сайта
Встраивайте голосового агента на любой сайт, чтобы посетители могли начать голосовой разговор прямо из браузера. Вкладка Widgets предоставляет embed-коды, опции кастомизации и настройки безопасности доменов.
Callback Widget работает совсем иначе, чем виджеты на этой странице — вместо старта голосового звонка в браузере он собирает номер посетителя, и агент сам перезванивает. См. отдельную страницу Callback Widget.
Типы виджетов
Hanc.AI предлагает четыре типа браузерных виджетов плюс отдельный Callback Widget для телефонных callback:
| Виджет | Имя тега | Описание | Лучше всего для |
|---|---|---|---|
| Floating Widget | hanc-ai-floating-call | Orb-кнопка, плавающая над страницей | Всегда видимый CTA |
| Pill Widget | hanc-ai-pill-call | Компактная пилюлевидная кнопка, встроенная inline | Минимальный footprint в существующем макете |
| Pill Floating Widget | hanc-ai-pill-float-call | Та же компактная форма pill, но плавает со страницей как Floating | Когда нужна эстетика pill, следующая за посетителем при скролле |
| Inline Widget | hanc-ai-inline-call | Полноразмерная кнопка вызова, встроенная в контент | Выделенные секции «Поговорить с нами» |
| Callback Widget | hanc-ai-callback | Форма номера телефона; агент перезванивает | Лидген-страницы, high-intent лендинги — см. Callback Widget |
Общие атрибуты
Все типы виджетов поддерживают ключевые атрибуты:
| Атрибут | Обязательно | Описание | Дефолт |
|---|---|---|---|
agent-id | Да | Уникальный идентификатор агента | — |
voice-service-url | Нет | Переопределить URL голосового сервиса | Автоопределение |
api-base-url | Нет | Переопределить базовый URL API | Автоопределение |
Атрибуты отображения
| Атрибут | Описание | Значения | Дефолт |
|---|---|---|---|
position | Позиция виджета на странице | bottom-right, bottom-left, top-right, top-left, static | bottom-right |
size | Размер виджета в пикселях | Число | 120 |
theme | Имя цветовой темы | См. Цветовые темы | default |
Атрибуты текста кнопки
| Атрибут | Описание | Дефолт |
|---|---|---|
button-start-text | Текст на бездействующей кнопке | "Call" |
button-connecting-text | Текст при соединении | "Connecting..." |
button-end-text | Текст во время активного звонка | — |
Атрибуты Terms
| Атрибут | Описание | Дефолт |
|---|---|---|
terms-enabled | Включить диалог согласия до звонка | false |
terms-content | Markdown-форматированный текст согласия | "" |
terms-url | Ссылка на страницу Terms & Conditions | "https://hanc.ai/terms" |
privacy-url | Ссылка на страницу Privacy Policy | "https://hanc.ai/privacy" |
Terms-атрибуты на HTML-элементе переопределяются настройками виджета агента из API, если только skip-fetch не выставлен в true.
Атрибуты звука
| Атрибут | Описание | Дефолт |
|---|---|---|
sound-enabled | Включить звуки старта/окончания звонка | true |
sound-volume | Громкость звуковых эффектов | 0.25 |
sound-preset | Идентификатор пресета звука | "1" |
Цветовые темы
Кастомизируйте внешний вид виджета — 11 встроенных цветовых тем:
| Тема | Значение |
|---|---|
| Default | default |
| Purple | purple |
| Blue | blue |
| Cyan | cyan |
| Emerald | emerald |
| Amber | amber |
| Tangerine | tangerine |
| Rose | rose |
| Ember | ember |
| Black | black |
| White | white |
У каждой темы — тёмный и светлый варианты. Тема задаётся через атрибут theme в embed-коде или в настройках виджета агента.
Примеры встраивания
Floating Widget
<hanc-ai-floating-call agent-id="YOUR_AGENT_ID"></hanc-ai-floating-call>
<script src="https://unpkg.com/hanc-webrtc-widgets" async type="text/javascript"></script>
Floating Widget с темой и позицией
<hanc-ai-floating-call
agent-id="YOUR_AGENT_ID"
theme="emerald"
position="bottom-left"
size="140"
></hanc-ai-floating-call>
<script src="https://unpkg.com/hanc-webrtc-widgets" async type="text/javascript"></script>
Pill Widget
<hanc-ai-pill-call agent-id="YOUR_AGENT_ID"></hanc-ai-pill-call>
<script src="https://unpkg.com/hanc-webrtc-widgets" async type="text/javascript"></script>
Inline Widget
<hanc-ai-inline-call agent-id="YOUR_AGENT_ID"></hanc-ai-inline-call>
<script src="https://unpkg.com/hanc-webrtc-widgets" async type="text/javascript"></script>
URL скрипта выше всегда грузит последнюю выпущенную версию — сайт автоматически подхватывает улучшения. Если нужно закрепить известно-рабочую версию, явно укажите https://unpkg.com/hanc-webrtc-widgets@1.4.0 (подставьте нужную версию). Тег @latest — дефолт, когда версия не указана.
События виджета
Виджеты генерируют события, которые можно слушать в JavaScript:
| Событие | Описание |
|---|---|
status-changed | При смене статуса звонка |
connecting | Звонок устанавливается |
connected | Звонок активен |
idle | Нет активного звонка |
error | Произошла ошибка |
audio-track | Получен удалённый аудиотрек (для визуализации) |
local-audio-track | Локальный аудиотрек микрофона (для визуализации) |
microphone-enabled | Микрофон включён |
microphone-disabled | Микрофон выключен |
call-start | При успешном старте звонка |
call-end | При завершении звонка |
Пример: слушать события
const widget = document.querySelector('hanc-ai-floating-call');
widget.addEventListener('call-start', () => {
console.log('Call started');
});
widget.addEventListener('call-end', () => {
console.log('Call ended');
});
Технические требования
Виджеты требуют, чтобы браузер посетителя поддерживал:
- WebGL 2.0 — для отрисовки
- Web Audio API — для обработки звука
- WebRTC — для реал-тайм голосовой связи
Все современные браузеры (Chrome, Firefox, Safari, Edge) поддерживают эти технологии.
Ограничения доменов
Контролируйте, какие сайты могут встраивать виджет агента.
Всегда разрешённые домены
Эти домены всегда разрешены, независимо от конфигурации:
hanc.ai(и поддомены)hanc.me(и поддомены)localhost
Allow All Domains
По умолчанию виджет можно встраивать на любой сайт. Переключите «Allow all domains» в настройках виджета, чтобы ограничить.
Ограничение конкретными доменами
При ограничении добавьте каждый разрешённый домен:
- Имена доменов без
https://(например,example.com) - Поддомены — отдельными записями (например,
www.example.com,shop.example.com) - Порты можно указывать (например,
localhost:3000) - Максимум 50 доменов в whitelist
Для продакшен-агентов ограничивайте виджеты своими доменами, чтобы предотвратить несанкционированное встраивание.
Terms & Conditions
Включите диалог согласия до того, как звонящие смогут начать разговор.
Конфигурация
| Настройка | Описание |
|---|---|
| Enable Terms | Переключатель диалога terms |
| Terms Content | Markdown-форматированный текст согласия (макс. 5000 символов) |
| Terms URL | Ссылка на полную страницу Terms & Conditions |
| Privacy URL | Ссылка на страницу Privacy Policy |
Когда включено:
- Пользователи видят диалог согласия до старта звонка
- Должны нажать «Agree» для продолжения
- Согласие хранится локально в браузере
- Кнопка Reset Consent очищает сохранённое согласие для тестов
Форматирование контента
Контент terms поддерживает Markdown:
####для заголовков**bold**для акцента- Переводы строк для читаемости
Связанное
- Callback Widget — phone-callback для посетителей, которым не подходит браузер
- Обзор голосовых агентов
- Settings — настройки агента, включая конфигурацию виджета
- Интеграции — API-ключи и настройка телефонных номеров