Назад к панели управления

Документация

Узнайте, как использовать Asyntai

Как добавить ИИ-чат-бот Asyntai в SilverStripe

Пошаговое руководство для SilverStripe CMS

Получить код встраивания

Шаг 1: Получите код встраивания

Сначала перейдите на Панель управления Asyntai и прокрутите вниз до раздела «Код для встраивания». Скопируйте уникальный код, который выглядит так:

<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>

Примечание: Код выше — всего лишь пример. Вы должны скопировать свой уникальный код для встраивания с вашей Панели управления, так как он содержит ваш персональный идентификатор виджета.

Шаг 2: Добавьте в шаблон SilverStripe (рекомендуется)

Самый простой способ добавить чат-бот на ваш сайт на SilverStripe — напрямую отредактировать главный файл шаблона темы:

  1. Откройте файл шаблона вашей темы (например, themes/yourtheme/templates/Page.ss)
  2. Добавьте код вставки непосредственно перед закрывающим тегом </body>:
<script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script> </body> </html>
  1. Сохраните файл и очистите кэш SilverStripe, добавив ?flush=1 к URL вашего сайта

Совет: SilverStripe использует шаблонные файлы .ss с системой наследования шаблонов. Размещение скрипта в базовом шаблоне Page.ss обеспечивает появление чат-бота на каждой странице сайта. Если ваша тема использует папку Includes, скрипт можно разместить в общем include-файле.

Альтернативный метод 1: использование класса Requirements в контроллере

SilverStripe предоставляет класс Requirements для программного управления зависимостями JavaScript и CSS. Это рекомендуемый подход для разработчиков:

  1. Откройте app/src/PageController.php (или файл вашего контроллера страниц)
  2. В методе init() используйте Requirements::customScript() для динамической загрузки виджета:
use SilverStripe\View\Requirements; class PageController extends \SilverStripe\CMS\Controllers\ContentController { protected function init() { parent::init(); Requirements::customScript(<<<JS var script = document.createElement('script'); script.src = 'https://asyntai.com/static/js/chat-widget.js'; script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID'); script.async = true; document.head.appendChild(script); JS); } }
  1. Сохраните файл и очистите кэш, перейдя по адресу yourdomain.com?flush=1

Примечание: Класс Requirements — это стандартный способ SilverStripe для подключения скриптов и таблиц стилей. Использование Requirements::customScript() выводит встроенный JavaScript. Этот метод обеспечивает загрузку виджета на каждой странице, обрабатываемой вашим PageController.

Альтернативный метод 2: использование Requirements в шаблоне

Вы также можете использовать синтаксис шаблонов SilverStripe для подключения JavaScript-файлов напрямую в шаблоне .ss:

  1. Откройте файл шаблона вашей темы (например, themes/yourtheme/templates/Page.ss)
  2. Добавьте следующее в нижней части шаблона, перед </body>:
<% require javascript("https://asyntai.com/static/js/chat-widget.js") %> <script> document.addEventListener('DOMContentLoaded', function() { var scripts = document.querySelectorAll('script[src*="chat-widget.js"]'); scripts.forEach(function(s) { s.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID'); }); }); </script> </body>

Совет: Синтаксис <% require %> — это стандартный способ подключения ресурсов в шаблонах SilverStripe. Обратите внимание, что этот метод не поддерживает добавление пользовательских атрибутов данных к тегу скрипта, поэтому мы добавляем небольшой фрагмент инициализации для установки ID виджета.

Альтернативный метод 3: использование конфигурации SilverStripe (YAML)

Для конфигурационного подхода можно использовать YAML-конфигурацию SilverStripe для добавления глобальных зависимостей:

  1. Откройте или создайте файл app/_config/app.yml
  2. Добавьте конфигурацию для подключения виджета через пользовательское расширение или настройку контроллера:
# app/_config/app.yml --- Name: asyntai-chatbot After: '#rootroutes' --- SilverStripe\Core\Injector\Injector: AsyntaiChatbotExtension: class: App\Extensions\AsyntaiChatbotExtension
  1. Создайте файл расширения app/src/Extensions/AsyntaiChatbotExtension.php:
namespace App\Extensions; use SilverStripe\Core\Extension; use SilverStripe\View\Requirements; class AsyntaiChatbotExtension extends Extension { public function onAfterInit() { Requirements::customScript(" var script = document.createElement('script'); script.src = 'https://asyntai.com/static/js/chat-widget.js'; script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID'); script.async = true; document.head.appendChild(script); "); } }
  1. Примените расширение к вашему PageController в app/_config/app.yml:
PageController: extensions: - App\Extensions\AsyntaiChatbotExtension
  1. Выполните ?flush=1 для пересборки кэша конфигурации

Примечание: Использование конфигурации YAML и расширений — наиболее модульный подход для SilverStripe. Это позволяет отделить интеграцию чат-бота от основной логики контроллера и легко включать или отключать её без изменения кода.

Шаг 3: Проверка установки

После добавления кода и очистки кэша SilverStripe откройте сайт в новой вкладке браузера. Вы должны увидеть кнопку виджета чата в правом нижнем углу. Нажмите на неё, чтобы убедиться, что всё работает.

Виджет не отображается? Убедитесь, что вы очистили кэш, добавив ?flush=1 к URL вашего сайта. Проверьте, что вы заменили YOUR_WIDGET_ID на фактический ID виджета из панели управления. Очистите кэш браузера или откройте сайт в режиме инкогнито. Откройте консоль браузера (F12) для проверки ошибок JavaScript. При использовании класса Requirements убедитесь, что метод init() вашего PageController вызывается корректно.