【必読】なぜ今、Aura ではなく LWR を選ぶべきなのか?

外部サイトMIAWとAgentforceの多言語対応:JWT認証環境における言語情報の連携アーキテクチャ

A high-tech architectural visualization representing a secure, multilingual AI communication system. In a dark, sophisticated digital environment, a central glowing sphere of light serves as an intelligent core. Two distinct streams of data—one shimmering with warm gold and the other with cool cyan—flow from opposite sides toward a translucent, protective shield surrounding the core. The background features subtle, abstract patterns suggestive of global connectivity and digital nodes. The atmosphere is clean, professional, and futuristic, using a cinematic depth of field and soft, ambient lighting to highlight the seamless flow of information through a secure gateway. データ・AI連携

前回の記事『Agentforce連携における安全なユーザー識別:Experience Cloudでの個人認証とコンテキスト継承』では、外部サイトに配置したMIAWにおけるJWTベースのユーザー検証について解説しました。本記事ではその後続として、認証されたセッションにおいて、Agentforce Service Agentを多言語(日英)で対応させるためのアーキテクチャと実装手順を整理します。

外部サイト側で切り替えた言語情報(例:日本語と英語)をAgentforceへ渡す際、非認証チャットであれば非表示事前チャット項目(Hidden Pre-chat)を利用可能です。しかし、JWTによるユーザー検証を有効にした環境では、アーキテクチャ上の制約により標準のPre-chat機能がバイパスされます。本記事では、この制約を回避して正確にコンテキストを引き継ぐ方法を解説します。

LWRって何?どんなメリットがあるの?
そんな疑問を解決するにはまずは以下の記事をご覧ください。
Salesforce LWRとは? Experience Cloudの次世代ランタイムを徹底解説

1. 外部サイト側(フロントエンド)の実装

JWT認証環境下では setHiddenPrechatFields によるデータの送信が破棄されるため、MIAWの基本設定オブジェクトを通じて言語ロケールをSalesforceへ送信します。

公式仕様

  • MIAWウィジェットの初期設定オブジェクト embeddedservice_bootstrap.settings.language に言語コード(jaen_US など)を指定することで、UIの表示言語が切り替わると同時に、クライアントのロケール情報としてSalesforce組織へ送信されます。
  • 画面リロードを伴う言語切り替え(URLパラメータによる制御など)の場合、初期化関数 embeddedservice_bootstrap.init が実行される前にこの値を設定しておく必要があります。

構成したサンプルコード
今回想定した外部サイトは、画面内の言語切り替えボタンを押すとその言語向けの画面を表示するため再描画(リロード)する仕組みです。そこで、URLパラメータ ?lang=en を解析し、MIAWの初期化前に動的に言語コードを割り当てるスクリプトを構成します。

<script>
    // URLのクエリ文字列からlangパラメータを取得します
    const urlParams = new URLSearchParams(window.location.search);
    const langParam = urlParams.get('lang');

    // デフォルトの言語を日本語に設定します
    let uiLanguageCode = 'ja';

    // パラメータが'en'に指定されている場合は英語で上書きします
    if (langParam === 'en') {
        uiLanguageCode = 'en_US';
    }
</script>

<script type='text/javascript'>
    function initEmbeddedMessaging() {
        try {
            // 解析した言語コードをMIAWのUI言語および送信ロケールとして設定します
            embeddedservice_bootstrap.settings.language = uiLanguageCode; 

            // MIAWウィジェットを初期化します
            embeddedservice_bootstrap.init(
                '00Dxx0000000000',
                'Messaging_Deployment_Name',
                '[https://your-domain.my.site.com/ESWMessaging123456789](https://your-domain.my.site.com/ESWMessaging123456789)',
                {
                    scrt2URL: '[https://your-domain.my.salesforce-scrt.com](https://your-domain.my.salesforce-scrt.com)'
                }
            );
        } catch (err) {
            console.error('Error loading Embedded Messaging: ', err);
        }
    };
</script>
<script type='text/javascript' src='[https://your-domain.my.site.com/ESWMessaging123456789/assets/js/bootstrap.min.js](https://your-domain.my.site.com/ESWMessaging123456789/assets/js/bootstrap.min.js)' onload='initEmbeddedMessaging()'></script>

2. Salesforce側:メッセージング設定の変更

フロントエンドから渡されたロケール情報をレコードとして保存するため、メッセージングチャネルの設定を変更します。

公式仕様

  • 「設定」>「メッセージング設定」から対象のチャネルを開き、「メッセージングユーザーの希望言語を特定」チェックボックスを有効にします。
    この設定により、フロントエンドから送信された言語情報が、チャット開始時に紐づくメッセージングユーザーオブジェクトの言語項目 MessagingEndUser.Language に自動で保存されます。

3. オムニチャネルフローによるデータ連携

Agentforceが応答言語を判断するためのコンテキスト変数(`MessagingSession.EndUserLanguage`)へ、取得した言語情報を引き渡す処理が必要です。

このバックエンドにおけるフロー構築の詳細なステップについては、Experience Cloud向けアーキテクチャの解説記事である「MIAWとAgentforceの多言語対応アーキテクチャ:コンテキスト継承とメッセージ自動送信」を参照してください。

4. Agentforceと多言語ナレッジの準備

ひとつの言語だけで構成されたナレッジでもAgentforceやプロンプトテンプレートが適切に翻訳してくれるため、基本的には日本語のナレッジ記事だけを執筆すれば事足りる場合もあります。しかしながらエンタープライズのQA対応では、言語ごとに厳密に定義されたナレッジを用意しLLMによる自動翻訳の揺らぎを避けることが推奨されます。

公式仕様

  • Salesforce Knowledgeの「複数言語のサポート」機能を有効化し、主言語(日本語)の記事に対して翻訳版(英語:en_US)の記事を作成します。
  • Data Cloudの検索インデックスには、日本語版と英語版がそれぞれ独立したレコードとして、言語情報(メタデータ)付きで取り込まれます。

多言語対応RAGの作り方は以下記事を参照ください。

これにより、外部サイトでの言語切り替え操作が、MIAWのUI表示、Agentforceのシステムメッセージ、そして生成回答の基盤となるナレッジ記事の選定まで、一貫して連動する状態が構築されます。

結果

サイト上で選択した言語によってメッセージ開始ボタンやチャット領域の言語が切り替わっているのがわかります。
また、ユーザーがあらかじめ選択した言語を識別してAgentforceが応答する言語を使い分けています。

日本語

英語

まとめ

本記事では、JWTによるユーザー検証を有効にした外部サイトのMIAW環境において、Agentforceへユーザーの言語設定を安全かつ確実に連携するアーキテクチャを整理しました。

公式仕様

  • JWT認証を有効にしたチャットでは、仕様により非表示事前チャット項目(Hidden Pre-chat)がシステム側でバイパスされ、パラメータとして利用できません。
  • 「メッセージングユーザーの希望言語を特定」機能を用いることで、外部サイトのMIAW初期化時に指定したロケール情報をSalesforce組織(MessagingEndUser)へ自動連携させることが可能です。

DXforceの見解

  • 標準機能では取得した言語情報が直接Agentforceのコンテキスト MessagingSession.EndUserLanguage に反映されないため、本記事で示したオムニチャネルフローを介したデータのリレー処理を組み込む構成が不可欠です。
  • また、Data Cloudの検索インデックスとSalesforce Knowledgeの複数言語サポートを連動させる構成をとることで、LLMの自動翻訳に依存しない、厳密な回答精度が求められるユースケースに耐えうる多言語エージェントを実現できます。

セキュアな認証と多言語対応を両立するAgentforce導入の際の技術的なリファレンスとして活用してください。

参考URL

Agentforce連携における安全なユーザー識別:Experience Cloudでの個人認証とコンテキスト継承

Streamline User Interactions with Auto-Populated Language Data

Agentforce 言語のサポート

Guide to Understanding Multi-Language Support in Agentforce

複数言語のナレッジ記事のサポート

DXforceの管理人

福島 瑛二

2013年にJavaエンジニアとしてのキャリアをスタート。2019年にSalesforceと出会い、Salesforceエンジニアの道へ。

デザインや UI/UX の観点からもシステムを捉え、ユーザーにとって心地よい体験を実装することにやりがいを感じています。

CRM(顧客データ)や Data Cloud と連携した高度なサイトを目に見える形で表現できる Experience Cloud に大きな可能性を見出しており、バックエンドのデータ構造とフロントエンドの表現力を極めることがこれからの Salesforce エンジニアに求められるスキルだと確信しています。

Trailblazer: efukushima

福島 瑛二をフォローする

読者の声

タイトルとURLをコピーしました
DXforce 案内エージェント