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

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

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

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

Пошаговое руководство для платформы электронной коммерции Sylius

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

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

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

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

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

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

Sylius построен на Symfony и использует шаблонизатор Twig. Рекомендуемый подход — переопределить шаблон макета магазина, чтобы включить чат-бот на всех страницах витрины.

  1. В вашем проекте Sylius перейдите в директорию templates/bundles/SyliusShopBundle/ (создайте её, если она не существует)
  2. Создайте или отредактируйте файл layout.html.twig, чтобы переопределить стандартный макет магазина
  3. Если файл уже существует, найдите {% block javascripts %} блок
  4. Добавьте код вставки Asyntai, расширив блок javascripts:
    {% block javascripts %} {{ parent() }} <script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script> {% endblock %}
  5. Замените YOUR_WIDGET_ID на ваш реальный ID виджета из панели управления
  6. Сохраните файл

Совет: By using {{ parent() }} inside the block, you preserve all existing JavaScript includes from the parent template while appending the chatbot script at the end, ensuring it loads after the page content.

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

Sylius предоставляет мощную систему событий шаблонов, позволяющую внедрять контент в определённые части макета без переопределения целых шаблонов. Это можно использовать для добавления виджета чат-бота в футер.

  1. Создайте новый файл шаблона по пути templates/bundles/SyliusShopBundle/Event/asyntai_widget.html.twig со следующим содержимым:
    <script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
  2. Зарегистрируйте событие шаблона в файле конфигурации config/packages/sylius_ui.yaml:
    sylius_ui:
        events:
            sylius.shop.layout.after_body:
                blocks:
                    asyntai_chatbot:
                        template: "@SyliusShop/Event/asyntai_widget.html.twig"
                        priority: 0
  3. Замените YOUR_WIDGET_ID на ваш реальный ID виджета
  4. Очистить кэш Symfony (см. Шаг 3 ниже)

Примечание: Подход с событиями шаблона — наименее инвазивный метод. Он не требует переопределения существующих шаблонов и чисто интегрируется с архитектурой Sylius. Значение priority управляет порядком рендеринга, если для одного события зарегистрировано несколько блоков.

Альтернативный способ 2: Через Webpack Encore

Если ваш проект Sylius использует Webpack Encore для управления ресурсами, вы можете интегрировать скрипт чат-бота через конвейер сборки JavaScript.

  1. Создайте новый JavaScript-файл по пути assets/shop/js/asyntai-chatbot.js со следующим содержимым:
    (function() {
        var script = document.createElement('script');
        script.async = true;
        script.src = 'https://asyntai.com/static/js/chat-widget.js';
        script.setAttribute('data-asyntai-id', 'YOUR_WIDGET_ID');
        document.body.appendChild(script);
    })();
  2. Импортируйте этот файл в точку входа вашего магазина (например, assets/shop/entry.js или assets/shop/js/app.js):
    import './js/asyntai-chatbot';
  3. Пересоберите ресурсы, выполнив:
    yarn encore dev

    Или для продакшена:

    yarn encore production
  4. Замените YOUR_WIDGET_ID на ваш реальный ID виджета

Совет: Использование Webpack Encore гарантирует, что скрипт чат-бота будет включён в общий пакет ресурсов и воспользуется кэшированием и оптимизацией инструмента сборки.

Альтернативный способ 3: Через Sonata Block Bundle

Если ваша установка Sylius использует Sonata Block Bundle (входит по умолчанию в некоторые конфигурации Sylius), вы можете создать пользовательский блочный сервис для отображения виджета чат-бота.

  1. Создайте новый класс блок-сервиса в вашем проекте, например src/Block/AsyntaiChatbotBlockService.php:
    <?php

    namespace App\Block;

    use Sonata\BlockBundle\Block\BlockContextInterface;
    use Sonata\BlockBundle\Block\Service\AbstractBlockService;
    use Symfony\Component\HttpFoundation\Response;

    class AsyntaiChatbotBlockService extends AbstractBlockService
    {
        public function execute(BlockContextInterface $blockContext, Response $response = null): Response
        {
            return $this->renderResponse('block/asyntai_chatbot.html.twig', [
                'block' => $blockContext->getBlock(),
            ], $response);
        }
    }
  2. Создайте шаблон блока по пути templates/block/asyntai_chatbot.html.twig:
    <script async src="https://asyntai.com/static/js/chat-widget.js" data-asyntai-id="YOUR_WIDGET_ID"></script>
  3. Зарегистрируйте сервис блока в config/services.yaml:
    services:
        app.block.asyntai_chatbot:
            class: App\Block\AsyntaiChatbotBlockService
            arguments:
                - '@twig'
            tags:
                - { name: sonata.block, context: footer }
  4. Разместите блок в контексте футера через панель администратора Sonata или добавив его в конфигурацию макета
  5. Замените YOUR_WIDGET_ID на ваш реальный ID виджета

Важно: Подход с Sonata Block требует более сложной настройки, но обеспечивает гибкость управления блоком чат-бота через административный интерфейс. Перед использованием этого метода убедитесь, что Sonata Block Bundle установлен и настроен в вашем проекте Sylius.

Шаг 3: Очистка кэша и проверка

После внесения изменений необходимо очистить кэш Symfony и проверить установку:

  1. Очистите кэш Symfony, выполнив следующую команду из корневой директории проекта:
    bin/console cache:clear
  2. Если вы в продакшн-среде, также прогрейте кэш:
    bin/console cache:clear --env=prod
    bin/console cache:warmup --env=prod
  3. Откройте витрину Sylius в новой вкладке браузера или режиме инкогнито
  4. Кнопка виджета чата должна появиться в правом нижнем углу
  5. Нажмите на нее, чтобы убедиться, что она открывается и работает корректно

Виджет не отображается? Убедитесь, что вы очистили кэш Symfony с помощью bin/console cache:clear. Проверьте, что переопределение шаблона находится в правильном каталоге (templates/bundles/SyliusShopBundle/). Попробуйте очистить кэш браузера или открыть сайт в режиме инкогнито. Проверьте консоль разработчика браузера на наличие ошибок JavaScript. Если используется Webpack Encore, убедитесь, что активы пересобраны.

Примечание о версии Sylius: Пути переопределения шаблонов могут немного отличаться в зависимости от версии Sylius. В Sylius 1.x шаблоны пакета магазина находятся в templates/bundles/SyliusShopBundle/. Проверьте документацию Sylius для правильного пути переопределения, если вы используете другую версию.