Sylius에 Asyntai AI 챗봇을 추가하는 방법

Sylius 전자상거래 플랫폼을 위한 단계별 가이드

임베드 코드 받기

1단계: 임베드 코드 가져오기

먼저 Asyntai 대시보드로 이동하여 "임베드 코드" 섹션까지 아래로 스크롤하십시오. 다음과 같은 형태의 고유 임베드 코드를 복사하십시오:

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

참고: 위의 코드는 예시일 뿐입니다. 개인 위젯 ID가 포함된 고유한 임베드 코드를 대시보드에서 복사해야 합니다.

2단계: Twig 레이아웃 템플릿에 추가 (권장)

Sylius는 Symfony를 기반으로 하며 Twig 템플릿 엔진을 사용합니다. 권장 방법은 상점 레이아웃 템플릿을 재정의하여 모든 스토어 페이지에 챗봇을 포함하는 것입니다.

  1. Sylius 프로젝트에서 templates/bundles/SyliusShopBundle/ 디렉토리로 이동합니다 (없으면 생성합니다)
  2. 기본 상점 레이아웃을 재정의하기 위해 layout.html.twig 파일을 생성하거나 편집합니다
  3. 파일이 이미 존재하는 경우, 다음을 찾으십시오 {% block javascripts %} 블록
  4. javascripts 블록을 확장하여 Asyntai 임베드 코드를 추가합니다:
    {% 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. 다음 내용으로 assets/shop/js/asyntai-chatbot.js에 새 JavaScript 파일을 생성합니다:
    (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 방식은 더 많은 설정이 필요하지만 관리자 인터페이스를 통해 챗봇 블록을 유연하게 관리할 수 있습니다. 이 방법을 사용하기 전에 Sylius 프로젝트에 Sonata Block Bundle이 설치되고 구성되어 있는지 확인하세요.

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. 클릭하여 올바르게 열리고 작동하는지 확인하세요

위젯이 보이지 않나요? bin/console cache:clear로 Symfony 캐시를 지웠는지 확인하세요. 템플릿 재정의가 올바른 디렉토리(templates/bundles/SyliusShopBundle/)에 있는지 확인하세요. 브라우저 캐시를 지우거나 시크릿 창에서 확인해 보세요. 브라우저 개발자 콘솔에서 JavaScript 오류를 확인하세요. Webpack Encore를 사용하는 경우, 에셋을 다시 빌드했는지 확인하세요.

Sylius 버전 참고: 템플릿 재정의 경로는 Sylius 버전에 따라 약간 다를 수 있습니다. Sylius 1.x에서 상점 번들 템플릿은 templates/bundles/SyliusShopBundle/ 아래에 있습니다. 다른 버전을 사용하는 경우 올바른 재정의 경로는 Sylius 문서를 확인하세요.