HTML и JavaScript
Установите, настройте, проверьте и удалите плавающего агента одним публичным скриптом.
Установите, настройте, проверьте и удалите плавающего агента одним публичным скриптом.
Подготовьте сайт#
Откройте настройки Встраивание агента, включите встраивание и добавьте финальный origin страницы-хоста. Разработку и продакшен добавляйте отдельно; http://localhost:3000, https://example.com и https://www.example.com не совпадают друг с другом.
Установите скрипт#
Вставьте загрузчик непосредственно перед закрывающим тегом </body> на каждой странице, где должен показываться загрузчик. Меняйте только публичный slug сайта и необязательные значения оформления.
<script
src="https://makeagent.fast/embed.js?v=20260728-widget-v2"
data-agent="YOUR_SITE_SLUG"
data-position="right"
async
></script>data-agent обязателен. Slug публичен; ключ API в этом теге не нужен. Сохраните параметр ?v= из сниппета панели. Необязательные data-label, data-accent (#RGB / #RRGGBB), data-locale (en | ko | uz | ru) и data-theme (light | dark) описаны в Обзоре встраивания. Опустите их, чтобы унаследовать сохранённый внешний вид и автоматическое поведение темы.
Выберите размещение: на весь сайт или на отдельные страницы#
Для общего серверного шаблона разместите скрипт в глобальном макете/подвале. Для выбранных страниц включайте его только в эти шаблоны. Загружайте один и тот же slug один раз на документ; дубли одного slug игнорируются, но удаление дублей делает владение и снятие предсказуемыми.
Не вставляйте сниппет в санитайзер HTML или поле rich-text, которое вырезает <script>. Убедитесь, что отрендеренный исходный код страницы или панель Elements всё ещё содержит тег.
Удаление и повторный монтаж в SPA#
Удаление скрипта после его выполнения не убирает уже созданный загрузчик. Клиентское приложение с маршрутизацией должно удалить и скрипт, и корень с slug перед повторным монтажом:
const slug = "YOUR_SITE_SLUG";
document.getElementById("maf-agent")?.remove();
document.getElementById(`maf-embed-root-${slug}`)?.remove();Лучше держать один общий корень смонтированным при клиентской навигации, чтобы активный диалог не терялся. Если корень удалён, добавьте свежий скрипт embed.js, чтобы создать его снова.
Проверьте в браузере#
- Откройте развёрнутую страницу в приватном окне.
- Убедитесь, что
embed.jsвозвращает200и не заблокирован CSP/согласием. - Убедитесь, что существует один корень
[data-maf-embed="YOUR_SITE_SLUG"]. - Откройте загрузчик и убедитесь, что iframe
/embed/YOUR_SITE_SLUGзагружается. - Отправьте вопрос и проверьте цепочку в разделе Диалоги.
- Проверьте мобильную ширину и разрешение на микрофон, когда включён голос.
Решение проблем#
| Симптом | Решение |
|---|---|
Консоль предупреждает об отсутствующем data-agent | Поставьте атрибут именно на тег embed.js |
| Скрипт есть, загрузчика нет | Проверьте переключатель встраивания, точный origin, CSP и состояние согласия |
| Работает только на одном хосте | Добавьте каждый фактический scheme/host/port в разрешённый список |
| Стиль отличается от ожидаемого | Проверьте data-accent, data-theme и сохранённый вид сайта |
| Голос не работает внутри iframe | Разрешите микрофон в браузере и в Permissions Policy сайта |
Никогда не проксируйте и не копируйте загрузчик в непроверенный локальный форк; используйте размещённый скрипт, чтобы проверка origin и исправления оставались актуальными.