ダッシュボードに戻る

ドキュメント

Asyntaiの使い方を学ぶ

Asyntai AIチャットボットをSyliusに追加する方法

Sylius eコマースプラットフォーム向けのステップバイステップガイド

埋め込みコードの取得

ステップ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. JavaScriptブロックを拡張して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アプローチはより多くのセットアップが必要ですが、管理画面を通じてチャットボットブロックを管理する柔軟性を提供します。この方法を使用する前に、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. 新しいブラウザタブまたはシークレットウィンドウでウェブサイトを開きます
  4. 右下にチャットウィジェットボタンが表示されるはずです
  5. クリックして正しく開いて動作することを確認してください

ウィジェットが表示されませんか? bin/console cache:clearでSymfonyキャッシュをクリアしたことを確認してください。テンプレートのオーバーライドが正しいディレクトリ(templates/bundles/SyliusShopBundle/)にあることを確認してください。ブラウザのキャッシュをクリアするか、シークレットウィンドウで表示してみてください。ブラウザの開発者コンソールでJavaScriptエラーがないか確認してください。Webpack Encoreを使用している場合は、アセットを再ビルドしたことを確認してください。

Syliusバージョンに関する注意: テンプレートのオーバーライドパスは、Syliusのバージョンによって若干異なる場合があります。Sylius 1.xでは、ショップバンドルテンプレートはtemplates/bundles/SyliusShopBundle/の下にあります。異なるバージョンを使用している場合は、Syliusのドキュメントで正しいオーバーライドパスを確認してください。