この記事はバージョン Summer ’26 において執筆しています。
現在の動作と異なる場合がありますので、ご認識おきください。
ログイン必須のLWRサイトに組み込みメッセージング(MIAW)を配置し、Agentforceによる一次対応から有人オペレーターへのエスカレーションを設計する際、避けて通れないのが「顧客の確実な識別とコンテキストの継承」です。
過去のチャット実装では、フロントエンドのLWCやJavaScript(Pre-Chat API)を用いてユーザーIDを非表示パラメータとして渡す手法が一般的でした。しかし、この手法にはクライアント側で値が改ざんされる「なりすまし(スプーフィング)」の脆弱性が存在します。
本記事では、フロントエンドのスクリプトに依存せず、プラットフォームの標準認証機能とバックエンドのフローを組み合わせた、セキュアで最新の実装アプローチを解説します。
【仕様】ユーザー検証の有効化に必要な2つの設定
Experience Cloud環境において、JavaScriptによるPre-Chat APIは不要です。Salesforceの標準機能である「ユーザー検証」を使用します。この機能を正しく動作させるには、バックエンドとフロントエンドの双方で以下の設定を行う必要があります。
これら2つの設定が揃うことで、プラットフォーム側で以下の処理が自動実行されます。
- セッションの利用: ログインユーザーの
AuthSessionを直接利用して、バックエンドで安全にユーザーを特定します。 - メッセージングユーザーの生成: システムは該当ユーザー用の
MessagingEndUser(メッセージングユーザー)レコードを生成し、システムレベルで認証を行います。
この仕様により、悪意のあるユーザーがブラウザの開発者ツール等で他人のIDに書き換えてチャットを送信するリスクを根本的に排除できます。
ユーザー検証を有効にすると、MIAWは「非同期・永続的メッセージング」として動作し、過去の会話履歴が維持されるようになります。「チャットを終了する」を押すとメッセージングセッションレコードとしては区切られますが、同ユーザーがチャットを再開すると前回の続きから始まるように見えます。

メッセージング設定での定義(バックエンド)
[設定] > [メッセージング設定] から対象のメッセージングチャネルの右にある▼から[編集]を選択し、「ユーザー検証を追加」 を有効化して、認証レイヤーをチャネルに関連付けます。

エクスペリエンスビルダーでの有効化(フロントエンド)
サイト上に配置した組み込みメッセージングコンポーネントの設定項目において、「ログイン情報ベースのユーザー検証の追加」 のチェックボックスをオンにします。

【実装】オムニチャネルフローによる取引先責任者の明示的な紐付け
前述のユーザー検証により、システムは「チャットの主が誰か」を把握していますが、新しく生成される MessagingEndUser(メッセージングユーザー)レコードの ContactId 項目に、その情報が自動でコピー(スタンプ)されるわけではありません。
Agentforceがカスタムアクション内で ContactId を使用したり、有人エスカレーション時にオペレーターの画面に顧客情報をポップアップさせたりするには、ルーティングを司るインバウンドフロー内で明示的なデータ紐付けを行う必要があります。
実装手順例:
- メッセージングセッションの取得: フローの入力変数
recordIdから対象のMessagingSessionを取得します。 - メッセージングユーザーの取得:
MessagingSession.MessagingEndUserIdをキーとしてMessagingEndUserレコードを取得します。 - ユーザーの取得: 取得した
MessagingEndUser.MessagingPlatformKeyには、システムによって検証済みのUserIdを含む文字列が保持されています(例:v2/iamessage/AUTH/SFDC/uid:005xxxxxxxxxxxxxxx)。
この値を数式RIGHT({!get_MessagingEndUser.MessagingPlatformKey}, 18)を使用して右から18桁を切り出した値をキーとしてUserレコードを取得します。 - 取引先責任者の取得:
User.ContactIdをキーに取引先責任者を取得します。 - レコードの更新:
ContactのIDをMessagingSession.ContactIdに割り当て、セッションレコードを更新します。
このステップを「作業をルート」アクションの前に挟むことで、以後の全プロセス(AIも人間も)が安全に顧客コンテキストを参照できるようになります。
【実装】会話体験の最適化(ダミーチャットの回避)
ユーザー検証を有効にすると、MIAWは「非同期・永続的メッセージング」として動作し、過去の会話履歴が維持されます。この環境下において、2回目以降の新しい会話セッションを始める際、デフォルトのAgentforce設定ではUX上の問題が発生します。
ユーザーが最初のメッセージとして送信した際にAgentforceが起動するため、Agentforce自身の「Welcome Message(ようこそメッセージ)」を優先して送信し、ユーザーの最初の発言が処理されずに「ご用件は何ですか?」と聞き返してしまう現象です。

これを解消し、ユーザーの最初の発言に即座に回答させるには、チャネル設定とAgentforce設定の役割分担を行います。
推奨される構成
Agentforceの挨拶バイパス
エージェントビルダーの [システムメッセージ] を開き、[ようこそメッセージ] フィールドを完全に空白(未設定)にします。
system:
instructions: "私たち DXforce.site 社は、..."
messages:
welcome: "" ←空白にする
error: "申し訳ございません。問題が..."
【仕様】 公式ドキュメントの記載どおり、Agentforceのようこそメッセージを空白にすることで、オムニチャネルから会話を引き継いだ際のウェルカムメッセージがバイパスされます。
これにより、ユーザーはAgentforceを起こすための無意味な挨拶を送信する必要がなくなり、最初のメッセージから直ちにAIによる課題解決プロセスを開始させることが可能になります。

オムニチャネルフローでの [会話メッセージを送信] アクション
前項の対応によって2回目以降の会話開始の問題はクリアできますが、1回目の会話が無言で開始になってしまいます。これに対処するため、オムニチャネルフロー(インバウンドフロー)で初回セッションかどうかを判定してメッセージを送信する仕組みを作ります。
メッセージングコンポーネントを作成
[設定] > [メッセージングコンポーネント] で「通知」種別のメッセージングコンポーネントを作成します。
- プレーンテキスト数式: (例:
{!$Parameters.MessagingSession.MessagingEndUser.Contact.FirstName}さん、はじめまして。私は DXforce のサポートエージェントです。何かお困りですか?) - 画像: 任意の画像(表示しません)

オムニチャネルフローを編集
続いてAgentforceにルーティングしているオムニチャネルフローを編集します。
- 関連メッセージングセッションを取得:
MessagingEndUser.Idに関連する、かつrecordIdと一致しないMessagingSessionを取得します。 - 取得件数を記録: 関連メッセージングセッションの件数を数値変数に割り当てます。
- 分岐(メッセージングユーザーの会話は初回?): 関連メッセージングセッションの件数が1件以上なら処理をスキップしてAgentforceに転送します。それ以外(現在処理中のレコードのみ)なら次の処理を行います。
- 送信先コレクション追加:
MessagingEndUser.Idをテキストコレクション変数にセットします。次の要素で使用します。 - 会話メッセージを送信: メッセージングユーザー(テキストコレクション)に対して通知メッセージングコンポーネントの内容を送信します。

この設定により、初回の会話の時にだけ「○○さん、はじめまして。私は DXforce のサポートエージェントです。何かお困りですか?」というメッセージが送られるようになります。

上記の方法で実現する場合に「会話メッセージを送信」アクションによって即時終了するメッセージングセッションレコード(ユーザーが開始したレコードとは別)が生成されます。このレコードを削除したい場合はメッセージングセッションレコードのトリガーフローを作成し、以下の条件でエントリさせた後に「スケジュール済みパス」で削除処理を行います。「スケジュール済みパス」は、トリガー元となるメインのトランザクションから完全に切り離された、独立したトランザクションとして非同期に実行されます。
エントリ条件:Status 次の文字列と一致する EndedEndedByType 次の文字列と一致する System
※数式条件にして StartTime と EndTime が同値であることの評価を後続の判定に挟むと、より安全です。
まとめ
Experience Cloudにおける組み込みメッセージング(MIAW)とAgentforceの連携において、セキュアなユーザー識別とスムーズなUXを両立するための要点は以下の通りです。
- バックエンドとフロントエンドの連携設定: [メッセージング設定]での「ユーザー検証を追加」と、エクスペリエンスビルダーでの「ログイン情報ベースのユーザー検証」の両方を有効化します。これにより、プラットフォーム基盤での安全な認証が行われます。
- オムニチャネルフローによる確実なデータ紐付け: システムが保持する
ContactIdを、ルーティングフロー内で明示的にMessagingEndUserに設定します。これにより、後続の有人オペレーターへのエスカレーションにおいて、正確な顧客コンテキストの参照が可能になります。 - ウェルカムメッセージのバイパス: Agentforceの [ようこそメッセージ] を空白にし、チャネル側の自動レスポンスと組み合わせることで、履歴が保持される環境下でもユーザーの初回入力(本題)を妨げない自然な対話フローを実現します。
これらの設定と実装を組み合わせることで、なりすましのリスクを排除しつつ、AIと有人オペレーターが連携する実戦的なカスタマーサポート基盤を構築できます。
参考URL
ログイン情報ベースのユーザー検証の設定
Agentforce アクションへのユーザー ID の追加
メッセージングチャネルでの自動レスポンスのカスタマイズ
Agentforce サービスエージェントに進行中の会話を渡すときの歓迎メッセージのバイパス
メッセージングコンポーネントの種類と形式
[会話メッセージを送信] アクション



読者の声