【必見】Experience CloudでLWRを採用すべき決定的な理由

【Agentforce完全ガイド】LWRサイトに「自律型AI」を実装する全手順:DMO・ハイブリッド検索からプロンプト設計まで【新Agentforce Builder UI対応】

Create a high-quality editorial digital illustration of a sophisticated autonomous AI agent at work. The center of the image features a glowing, translucent digital brain or neural core, representing intelligent processing. Surrounding this core are intricate, interlocking metallic and glass gears that symbolize a complex data infrastructure. Streams of glowing data flow between the core and two distinct areas: one filled with floating, holographic document icons representing a deep knowledge base, and another featuring icons of packages and logistics tools representing automated business actions. The background is a sleek, minimalist digital landscape with a cool color palette of deep navy, cyan, and subtle gold accents. The lighting is cinematic, emphasizing the seamless integration of technology and logic. データ・AI連携

この記事はバージョン Summer ’26 2026年8月22日時点において更新しています。
現在の動作と異なる場合がありますので、ご認識おきください。

なお、本記事と同等の実装をするには以下の権限セットライセンスが必要です。
– Agentforce Service Agent User
– Data Cloud

「Agentforce を導入したいが、どこから手を付ければいいか分からない」
「要素が多すぎて、全体像が見えない」

Agentforce は強力ですが、その構造は従来のチャットボットとは比較にならないほど複雑です。
CRMデータ、Data 360、ベクトル検索、そしてLLMへの指示(プロンプト)。これらが精緻な歯車のように噛み合って初めて、AIは「賢く」振る舞います。

この記事では、読者の皆様が迷子にならないよう、実装プロセスを「4つのレイヤー」に分解し、順を追って解説します。
目指すゴールは、「マニュアルを読んで回答し(知識)、注文状況を調べて答える(行動)」ことができる、実用的なカスタマーサポートエージェントの実装です。

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

シナリオ:今回作成する「注文サポートエージェント」

設定を始める前に、このエージェントが「何をするのか」を定義します。 単なる雑談ボットではなく、以下の2つの具体的な業務をこなす Tier 1 サポート担当者 を目指します。

  1. 【知識】テクニカルサポート:
    • ユーザーからの「使い方が分からない」「エラーが出る」という質問に対し、Data 360からナレッジの内容を検索・要約して回答する。
  2. 【行動】注文ステータスの確認:
    • ユーザーが指定した「注文番号」をキーにして、Salesforce内の Order オブジェクトを検索し、配送状況や追跡番号を回答する。

これまでのボットなら数十個のダイアログ設定が必要だったこの要件も、Agentforceなら「サブエージェント」と「アクション」を定義するだけで実現できます。

この図を頭の片隅に置いて、ステップ1から順に進めていきましょう。

Step 1: データ基盤の整備 (Data 360 & Knowledge)

現在地
AIに「知識」を与えるフェーズです。マニュアル(ナレッジ)をAIが読める形式に変換します。

単にナレッジ記事を書くだけでは、Agentforce はそれを読むことができません。Data 360 を介して「ベクトル化(意味を数値化)」する必要があります。

Knowledge オブジェクトのカスタム項目作成(Prepare)

Knowledge オブジェクトに以下のカスタム項目を作成してください。

  1. 本文 Body__c リッチテキストエリア(32768)
  2. サイトURL Site_URL__c 数式 (テキスト)
    以下の数式を持つ項目です。
    $Label.Site_Base_URL & 'article/' & UrlName

※カスタム表示ラベル Site_Base_URL は `https://(あなたの組織のドメイン名).my.site.com/(サイト名)/` のような文字列を格納しています。Experience Cloudサイト上で該当のナレッジページを開くための仕組みです。

ナレッジデータの作成

Data 360に取り込むナレッジデータを事前にご用意ください。

ご希望の方は以下のボタンからサンプルデータをダウンロードできます。データインポートウィザードなどでインポートしてください。

最後に記事を「公開」状態にするのをお忘れなく。

ナレッジデータの取り込み (Ingestion)

次に、Salesforce標準の「ナレッジ (Knowledge)」オブジェクトを Data 360 に取り込みます。

  1. Data Cloud アプリを開き、「データストリーム」を新規作成します。
  2. ソースとして Salesforce CRM を選択します。
  3. オブジェクト一覧から 「Knowledge (kav)」 を選択して取り込みます。
    ※バンドルからKnowledgeを選択してもOKです。今回は取り込み対象をKnowledge__kavのみとするためオブジェクト一覧から選択しています。
  4. 公開状況 EQUALS Online を設定することにより、公開状態のレコードだけを取り込むことを推奨します。
  • 新規データストリーム
  • 検索条件を設定
  • データストリーム準備完了

あらかじめ準備しておいたカスタム項目の取り込みもお忘れなく。私は後からカスタム項目を作成したので画像では「カスタム項目 (0)」となっていますが、もしあればここにカスタム項目が出てきます。

Mapping info between old Article Version and migrated Article Version という項目が長すぎるという理由でエラーが出ることがあります。当該項目のチェックを外してください。

最終実行状況が「成功」になったら準備完了です。

DMO へのマッピング

取り込んだ生データを、AIが理解できる標準的な形(DMO: データモデルオブジェクト)に変換します。

  • マッピング先: Knowledge Article Version DMO (または類似の標準DMO)
  • 重要なマッピング項目:
    • Knowledge Article Version ID (CRM) → Knowledge Article Version ID (DMO)
    • Title (CRM) → Name (DMO)
    • Body__c (CRM) → Article Content (DMO) ※ここが回答のソースになります
    • Summary (CRM) → Description (DMO)
    • Site_URL__c (CRM) → URL (DMO)
    • Publication Status (CRM) → Publication Status (DMO、カスタム)
    • Article Total View Count (CRM) → Article Total View Count (DMO、カスタム)
    • 他の項目は自動的なマッピングに任せます。
  • データマッピング開始
  • DMOを選択
  • データマッピング
  • DMOを確認

データストリームの詳細画面でデータマッピングの「開始」ボタンを押します。

  • オブジェクトの選択
  • Knowledge Article Version

右側のオブジェクト(DMO)が選ばれていません。「オブジェクトの選択」を押します。

マッピング先には Knowledge Article Version DMO を選択します。

DMO側の新規項目として以下の項目を作成しています。
– Publication Status (テキスト)
– Article Total View Count (数値)

取り込んだレコードがDMOに格納されている様子をデータエクスプローラーで確認できます。

検索インデックスの作成 (Vector Search)

ここが RAG (検索拡張生成) の要です。

  1. 「検索インデックス (Search Index)」 タブを開き、新規作成します。
  2. ハイブリッド検索を選択します。
  3. チャンク化: 本文と概要をチャンク化します。
  4. ベクトル化: Multilingual E5 Large Embedding Model を選択します。
  5. 絞り込み: フリーワードで検索する可能性がある項目を選択します。
  6. ランキング: Last Modified Date をランキングに使用します。
  • 検索インデックスを作成
  • 検索インデックスビルダー

「高度な設定」を選びましょう。

  • 検索種別
  • チャンク
  • ベクトル化
  • 絞り込む項目
  • ランキング

検索種別は「ハイブリッド検索」、ソースは Knowledge Article Version。

Article Content と Description がチャンク化の対象です。

Multilingual E5 Large Embedding Model は日本語を含む非ラテン系言語のコンテキスト解釈に使うモデルです。

Language / Article Number / Last Modified Date / Publication Status / URL を選びました。
ここで選択した項目は、レトリーバーの検索条件として指定できるようになります。

POPULARITY で Article Total View Count を選択しています。

Pro’s Note

鮮度も捨てがたい場合: もし「新しい記事も大事にしたい」場合は、ランキング設定で Article Total View Count と Last Modified Date の両方を追加することも可能です。 ただし、Agentforce の挙動としては「人気記事」を優先させた方が、一般的に”ハルシネーション(的外れな回答)”が減る傾向にあります。

鮮度 ≠ 正解: 3年前に書かれた「製品の基本仕様」の記事は、更新されていなくても「正解」であり続けます。日付でソートすると、昨日更新された「些細な不具合のお知らせ」が上位に来てしまい、AIがそれを回答に使ってしまうリスクがあります。

集合知: 多くの人が見ている記事は、それだけ「役に立つ(解決につながる)」可能性が高いです。

レトリーバーの作成 (AI Model)

最後に、作成したDMOを使用してレトリーバーを作成する操作です。

  1. 「AI モデル」 タブを開き、[取得] > [新規レトリーバー] > [個別レトリーバー] > [次へ] を選択します。
  2. データソースにData Cloudを選択し、データモデルと検索インデックスに Knowledge Article Version を選択し、[次へ]。
  3. [返されるドキュメントを絞り込む] を選び、Publication Status = Online となるように設定します。公開済みの記事だけを返す設定です。[次へ]
  4. 返される件数と項目を設定します。[次へ] > [保存]
  5. 最後に、レトリーバーを有効化します。
  • レトリーバー種別を選択
  • 検索条件を定義
  • 返却件数と項目を設定
BESPOKE ONE Note

「動的」にチェックを入れると、実行時に値が指定される検索条件になります。
プロンプトビルダーでは、プロンプトテンプレートでレトリーバーを設定するときに、動的検索条件がプロンプト入力にマッピングされ、実行時に解決されます。たとえば、動的検索条件が「Language = ja」の場合、レトリーバーは日本語の記事のみを返します。

ここで選択肢として表示される項目は、インデックス検索の作成時に「絞り込む項目」として選択した項目です。

これで、図の青色部分 [Step 1: データ基盤] が完成しました。

Step 2: アクションの作成 (Flow)

現在地
AIに「手足」を与えるフェーズです。CRMの注文データを検索する能力を実装します。

次に、AIがSalesforce内のデータを操作するための「道具」を作ります。これには Flow を使用します。

自動起動フローの作成

Agentforce から呼び出すフローは、画面を持たない 「自動起動フロー (Autolaunched Flow)」 である必要があります。

  • フローの目的: 注文番号を受け取り、ステータスを返す。
  • 入力変数: input_Text_OrderNumber (テキスト / 入力で使用可能)
  • 出力変数: output_Text_StatusMessage (テキスト / 出力で使用可能)

フローのロジック構築

  1. レコードを取得 (Get Records):
    • オブジェクト: Order
    • 条件: OrderNumber = {!input_Text_OrderNumber}
  2. 決定 (Decision): 注文レコードが見つかったかどうか?
  3. 割り当て (Assignment):
    • 見つかった場合: 出力変数 output_Text_StatusMessage に「ステータスは {!Get_Order.Status} です。」を代入。
    • 見つからない場合: 「注文が見つかりませんでした。」を代入。
  • レコードを取得
  • 決定
  • 割り当て

注文番号で注文レコードを取得 get_OrderByOrderNumber

注文レコードが見つかった? decision_HasOrderRecordFound

  • 見つかった
  • 見つからなかった

見つかったメッセージを設定 assignment_FoundMessage

見つからなかったメッセージを設定 assignment_NotFoundMessage

これで、図の赤色部分 [Step 2: アクション] が完成しました。

Step 3: エージェントの構築 (Agent Builder)

現在地
AIの「脳」を作るフェーズです。Step 1とStep 2で作った道具を、いつ使うかAIに教えます。

プロンプトテンプレートを作成

[設定] > [プロンプトビルダー] から「プロンプトビルダー」を開き、プロンプトテンプレートを作成します。

  1. [新規プロンプトテンプレート] ボタンを押す。
  2. プロンプトテンプレート種別に「Flex」を選び、情報を入力して [次へ]
    ※入力値として Customer Question (Customer_Question) を自由テキストで用意します。
  • 新規プロンプトテンプレート
  • 情報を入力

次に、プロンプトを書きましょう。

あなたは {!$Organization.Name} のカスタマーサポートエージェントです。

## 指示
以下の「検索結果」の情報**のみ**を使用して、ユーザーの質問に回答してください。
検索結果に情報がない場合は、正直に「情報が見つかりませんでした」と答えてください。
推測で回答したり、自身の知識で補完したりしないでください。

## 回答のガイドライン
1. 検索結果の情報**のみ**を使用してください。
2. 専門的かつ分かりやすい言葉遣いで回答してください。
3.**回答の最後には、必ず情報の根拠となった記事のURLを記載してください**

## 出力例
```
ご質問ありがとうございます。
「DB_LOCK_WAIT」エラーが表示される場合は以下の手順をお試しください。

1. 社内ネットワーク担当者に連絡し、IPアドレスのホワイトリスト登録状況を確認してください。
2. B2B Order Portal v2.0の管理画面より「セッションのリセット」を実行してください。
3. 解決しない場合は、ログファイル(debug.log)を添付し、チケット#55485としてお問い合わせください。

参考記事: [URL]
```

## 検索結果:
●●●

## ユーザーの質問:
△△△

## 回答:
  1. ●●●の部分を入れ替えます。[リソースを挿入] > [検索] > [Step 1で作成したレトリーバー] を選択して挿入します。
  2. 挿入されたリソースのリンクをクリックするとレトリーバーの設定が開きます。検索テキストに [自由テキスト] > [Customer Question] を選択して挿入します。Agentforceに返却する項目と結果数を選択します。
  3. △△△の部分を入れ替えます。[リソースを挿入] > [自由テキスト] > [Customer Question] を選択して挿入します。
  4. Customer Question を入力してプレビューしてみましょう。
  5. 問題なければ有効化します。
  • ●●●を入れ替え
  • レトリーバー設定
  • △△△を入れ替え
  • プレビュー
BESPOKE ONE Point

AIは曖昧な指示だとサボる

上にテキストで例示したプロンプトと、画面キャプチャ内のプロンプトの違いは何でしょう?実はテキストの方はプロンプトに以下の文言を追加しています。

## 回答のガイドライン
1. 検索結果の情報**のみ**を使用してください。
2. 専門的かつ分かりやすい言葉遣いで回答してください。
3.**回答の最後には、必ず情報の根拠となった記事のURLを記載してください**

## 出力例
```
ご質問ありがとうございます。
「DB_LOCK_WAIT」エラーが表示される場合は以下の手順をお試しください。

1. 社内ネットワーク担当者に連絡し、IPアドレスのホワイトリスト登録状況を確認してください。
2. B2B Order Portal v2.0の管理画面より「セッションのリセット」を実行してください。
3. 解決しない場合は、ログファイル(debug.log)を添付し、チケット#55485としてお問い合わせください。

参考記事: [URL]
```

LLMは「指示されたこと」には忠実に従いますが、「指示されていないこと(リンクを付けるか付けないか)」はその時の確率で判断します。 「必ず記載してください(Always include)」 と明記し、さらに出力例として 「形式(Format)」 を指定することで、AIの迷いを断ち切り、意図通りの出力を安定させることができます。

Agentforce Service Agent を作成

それではAgentforceエージェントを作成します。

  1. アプリケーションランチャーからAgentforce スタジオを開く。
  2. [新しいエージェント] を押す。
  3. Agentforce Service Agentのテンプレートを [選択]。
  4. エージェントに名前をつける。新規エージェントユーザーを使用する場合は [新規ユーザー] を、既存ユーザーを使用する場合は [ユーザーを選択] を指定する。
  5. サブエージェント領域の「Agent Router」「Off Topic」「Ambiguous Question」を残してそれ以外を [削除]。
  6. [保存]。
  • 新しいエージェント
  • テンプレートから作成
  • エージェント命名
  • 初期設定
  • サブエージェント削除
  • ルーター編集

スクリプトに切り替えて一括削除が簡単です。

エラーが出ている部分を削除します。

ご参考までに、[エージェントの詳細]、[システム]、[Agent-Level Instructions] の入力例を示します。

▼エージェントの詳細 > 説明
私たち BESPOKE ONE 社は、Salesforce Experience Cloud の技術コンサルティングに加え、公式トレーニング教材、専門書籍、およびオリジナルグッズのオンライン販売を行う企業です。 私たちはオンラインストアを通じて顧客からの注文を受け付け、受注から配送までのフルフィルメント業務を行っています。顧客はポータルサイトを通じて、商品の購入や配送状況の確認を行うことができます。
あなたは BESPOKE ONE 社の親切で知識豊富なカスタマーサポートエージェントです。 あなたの目的は、顧客の「注文状況」を確認して配送予定などを伝えること、および「製品や技術」に関する質問にナレッジベースを使って回答することです。

▼システム > ようこそメッセージ
こんにちは。私は BESPOKE ONE のサポートエージェントです。何かお困りですか?

▼システム > エラーメッセージ
申し訳ございません。問題が発生しているようです。恐れ入りますが時間をおいてもう一度お試しください。

▼Agent-Level Instructions > システム指示
- 自律型AIエージェントとして、顧客からの注文状況の照会に対応したり、ナレッジベースを活用して製品やサービスに関する質問に回答したりすることがあなたの役割です。
- 複雑な問題は人間のエージェントにエスカレーションします。
- 【行動指針】 常に丁寧な「です・ます」調で、共感を持って接してください。
- ナレッジベースやCRMデータにない情報は、推測で答えず、正直に「情報が見つかりませんでした」と伝えてください。
- 顧客の課題解決を最優先し、簡潔かつ的確な回答を心がけてください。

製品サポート用サブエージェント (Knowledge検索用)

先ほど作成したプロンプトテンプレートを呼び出すアクションとサブエージェントを作りましょう。

  • サブエージェント名: Product Support (product_support)
  • 説明: 製品の仕様、機能、使用方法、トラブルシューティング、または返品ポリシーに関する質問に対し、ナレッジベースを活用して正確な情報を提供します。このサブエージェントは、ユーザーが製品に関する具体的な問題や疑問を解決するためのサポートを目的としています。

次に、作成したサブエージェントに対して使用可能なアクションを作成します。

  1. 作成したサブエージェントを選択します。
  2. 推論に使用可能なアクション領域で、[アクションを選択] > [カスタムアクションを作成] をクリック。
  3. 情報を入力して [作成して開く]。
    • アクション名: Generate Knowledge Answer (generate_knowledge_answer)
    • 説明: ナレッジ記事に基づいて、ユーザーの質問に対する回答を生成します。
    • 参照アクション種別: プロンプトテンプレート
    • 参照アクション: Generate Knowledge Answer
  4. 入力と出力を指定します。
    • 入力:
      • Customer Question:
        • 説明: お客様が入力した質問をセットします。
        • アクションを実行するには入力が必要: True
    • 出力:
      • Prompt Response:
        • 説明: The prompt response generated by the action based on the specified prompt and input.
        • 会話に表示: True
  • カスタムアクションを作成
  • アクションを追加
  • 入力と出力を指定

次にサブエージェントの推論指示を書きます。
このとき文中に @ を使用して、先ほど作成したアクションを埋め込むようにします。

  • 回答の生成: @Generate Knowledge Answer を実行し、その結果に基づいて回答を作成してください。検索結果にない情報は回答に含めないでください。
  • トーン: 専門的かつ分かりやすい言葉遣いで回答してください。
  • 不明な場合: 関連する情報が見つからない場合は、正直に「情報が見つかりませんでした」と答えてください。

ここまで完了したら保存します。

注文管理用サブエージェント (Flow実行用)

次は、Step 2 で作ったフローを呼び出すサブエージェントです。

  • サブエージェント名: Order Management (order_management)
  • 説明: 注文の配送状況、ステータス、到着予定日、または注文内容に関する問い合わせに対応し、注文番号を基にシステムから最新の情報を取得して提供します。このサブエージェントは、ユーザーの注文に関する状況確認や詳細情報の提供を専門としています。

次に、作成したサブエージェントに対して使用可能なアクションを作成します。

  1. 作成したサブエージェントを選択します。
  2. 推論に使用可能なアクション領域で、[アクションを選択] > [カスタムアクションを作成] をクリック。
  3. 情報を入力して [作成して開く]。
    • アクション名: Retrieve Order Data (retrieve_order_data)
    • 説明: 注文番号から注文データレコードを取得します。
    • 参照アクション種別: フロー
    • 参照アクション: 注文データを検索
  4. 入力と出力を指定します。
    • 入力:
      • input_Text_OrderNumber:
        • 説明: 顧客から得た注文番号。
        • アクションを実行するには入力が必要: True
    • 出力:
      • output_Text_StatusMessage:
        • 説明: 注文の進捗状況や詳細。
        • 会話に表示: True
  • カスタムアクションを作成
  • アクションを追加
  • 入力と出力を指定

次にサブエージェントに指示を書きます。このとき文中に @ を使用して、先ほど作成したアクションを埋め込むようにします。

  • 必須情報の確認: このサブエージェントのアクション「注文データを検索」を実行するには「注文番号」が必須です。ユーザーの発言に注文番号が含まれていない場合は、アクションを実行する前に必ず「注文番号を教えていただけますか?」と尋ねてください。
  • アクションの実行: 注文番号が得られたら、速やかに Retrieve Order Data アクションを実行し、その結果(ステータスや配送日)をユーザーに丁寧に伝えてください。
  • 結果の報告: アクションの結果(ステータスや配送日)を、ユーザーに丁寧に伝えてください。

ここまで完了したら保存して、さらにバージョンを確定します。

BESPOKE ONE Point

Agent Scriptはコンパイル言語としての性質を持っており、エージェントのバージョンを確定する(コミットする)と、背後でスクリプトがAtlas推論エンジンの解釈できる低レベルのメタデータへとコンパイルされる仕組みになっています。コンパイルすることではじめて明らかになる不具合も存在します。

思わぬ編集が入って元に戻せなくなるのを避けるため、ある程度の区切りのよいタイミングで定期的にバージョンを確定しておくことをお勧めします。

各バージョンに名称と説明を付与することができます。

エージェントの動作確認をする

それでは作成したエージェントをプレビューで動作させてみましょう。

BESPOKE ONE Point

— 重要 —
エージェントがアクションを実行する際に、注文 Order オブジェクトとナレッジ Knowledge__kav への参照権が必要です。
EinsteinServiceAgent User といった氏名になっているユーザーに「Agentforce エージェント XXX の権限」という権限セットがあらかじめ付与してあります。
この権限セットで 注文 Order オブジェクトとナレッジ Knowledge__kav オブジェクトへの参照権限を付与し、必要な項目へ参照権を付与しておきましょう。また、今回のようにナレッジを使用する場合は、アプリケーション権限の「ナレッジの参照を許可」を有効化する必要があります。

製品サポートの問いかけをしてみる

ナレッジに登録しておいたデータに基づいて、うまく回答を返してくれました。

▼エージェント
こんにちは。私は BESPOKE ONE のサポートエージェントです。何かお困りですか?

▼自分
教えてください。
私のMac bookでB2B Order Portalを使っているんだけど、いつも通信状況が悪くて接続が切れるのをどうにかできませんか。

▼エージェント
MacでB2B Order Portalを利用中に通信状況が悪く接続が切れる場合、以下の対応策が推奨されています。

1. 社内ネットワーク管理者に連絡し、ご自身のIPアドレスが許可リスト(allowlist)に正しく登録されているか確認してください。
2. B2B Order Portal v2.0の管理コンソールから「Reset Session(セッションのリセット)」を実行してください。
3. それでも問題が解決しない場合は、サポートチケット(#82961)を作成し、logファイル(debug.log)を添付してサポートに依頼してください。

これらの対応で解決しない場合、現時点で他のMac特有の切断原因に関する情報は見つかりませんでした。
詳細は下記の参考記事もご覧ください。
https://xxxx-dev-ed.develop.my.site.com/mysite/article/trouble-1467cd2a

他に困っていることや具体的なエラーメッセージがあれば教えてください。
注文状況の確認をしてみる

ちゃんと注文番号を聞き出してからステータスを調べて返答していますね。

▼エージェント
こんにちは。私は BESPOKE ONE のサポートエージェントです。何かお困りですか?

▼自分
私の注文の状況を教えてください。

▼エージェント
注文状況をお調べするために、注文番号を教えていただけますか?

▼自分
00000100

▼エージェント
注文番号「00000100」の状況は「Draft(下書き)」です。
ご不明な点や他に確認したい注文があれば教えてください。

問題なさそうなので、最後にエージェントを有効化します。

Step 4: LWRサイトへの実装 (Experience Cloud)

現在地
最後に、完成したエージェントをWebサイト(LWR)に配置します。

サービスチャネルの定義

[設定] > [オムニチャネル] > [サービスチャネル] へ移動します。

デフォルトで Messaging のチャネルが存在するはずですが、もし存在しなければオブジェクトに「メッセージングセッション」を指定して作成してください。

プレゼンス状況の設定

[設定] > [オムニチャネル] > [プレゼンス状況] にて、例えば「Online」や「Available」といったステータスを作成します。
先ほど確認したチャネルを「選択済み」チャネルに含めるのを忘れないでください。

最後に、エージェントユーザーに割り当てている権限セットの「サービスプレゼンス状況のアクセス権」で該当のステータスを有効にしましょう。

  • プレゼンス状況を作成
  • 権限セットに付与

拡張オムニチャネルルーティング

[設定] > [オムニチャネル設定] から「オムニチャネル設定」を開きます。
[オムニチャネルの有効化] と[拡張オムニチャネルルーティング]をそれぞれオンにしましょう。

ルーティング設定

ルーティングが機能するためには、Salesforce 内部で作業負荷を管理するための設定も必要です。

  1. [設定] > [ルーティング設定] で新規作成。
  2. 設定名: Agentforce Service Agent
  3. ルーティング優先度: 1
  4. ルーティングモデル: 対応余力が最大
  5. 業務量種別: 継承
  6. 業務量単位: 2.00
  7. 保存

キューを作成

AIエージェントがエラーで停止した場合や、システム障害時にメッセージを受け取るための「人間のエージェント用キュー」を指定します。

  1. [設定] > [キュー] で新規作成。
  2. ルーティング設定: 上で作成したルーティング
  3. 選択されたオブジェクト: メッセージングセッション
  4. キューメンバーとしてエージェント以外のユーザーをセット
  5. 保存

オムニチャネルフロー(Omni-Flow)の設計と実装

「会話を Agentforce サービスエージェントにルーティング」というテンプレートがあります。
こちらを使用して簡易にフローを作成できます。

「作業を転送」の要素をクリックして、エージェントとキューを指定しましょう。
欄が出てこない時は一度サービスチャネル(Messaging)の値を削除して、もう一度 Messaging を選択すると表示されます。

  • テンプレートを選択
  • エージェントとキューを指定
  • フローを保存&有効化

ラベル:会話を Agentforce サービスエージェントにルーティング
API参照名:RoutingToAgentforceServiceAgent

組み込みメッセージング (MIAW) の設定

従来のチャットボットとは接続方式が異なります。

作業の前に、あらかじめデジタルエクスペリエンスを有効にしておいてください(サイトの有無は問いません)。

  1. [設定] > [メッセージング設定] で「新規チャネル」を作成。
    ※MIAW用の利用なのでメッセージングのトグルをオンにする必要はありません。
    参考:Service Cloud: メッセージング設定が有効化できない
  2. ネイティブチャネル種別: 拡張チャット。
  3. チャネルに名前を付ける
    • チャネル名: Agentforce Service Agent Channel
    • リリース種別: web
    • ドメイン: (mydomain).my.site.com
  4. チャネルルーティング: あらかじめ作成した Agentforce Service Agent とキューを割り当てます。
  5. 保存
  • メッセージング設定
  • チャネルに名前を付ける
  • チャネルルーティング

組み込みサービスリリースを公開

[設定] > [組み込みサービスリリース] で、先ほど作成したチャネルと同じ名称のリンクをクリックします。右上の [V2に切り替える] を押してUIを最新化してから、画面右上の [公開] を押して公開しましょう。

エージェントとの接続が完了

ここまでの設定を完了すると、インバウンドルーティングとしてオムニフローが接続されてAgentforce Service Agentが呼び出される状態になっています。

BESPOKE ONE Point

今回の設定は人間の担当者に転送(エスカレーション)しないエージェントを作成しています。
実際の現場ではエージェントが解決できない会話をエスカレーションできるように、ビルダーでエスカレーションのサブエージェントを作成することが求められます。人間への転送手順は以下の記事をご覧ください。

ビルダーへの配置

  1. Build Your Own (LWR)テンプレートで作成したLWRサイトのビルダーを開きます。
  2. コンポーネントパネルから 「Embedded Messaging (組み込みメッセージング)」 を検索し、画面上のフッターのセクション内にドラッグ&ドロップします。
  3. プロパティで、作成した「組み込み Web リリース」を選択します。
BESPOKE ONE Point

フッターに配置することで、ユーザーがサイト内のどのページ(トップページ、記事詳細、マイページなど)に移動しても、チャットウィンドウの状態が維持され、会話が途切れることなく継続されます。

続いて、サイトのセキュリティポリシー (CSP) の調整をします。

  1. LWRサイトのビルダーの左側にある歯車 > セキュリティーとプライバシーを開きます。
  2. コンテンツセキュリティポリシー (CSP) のセキュリティレベルを「厳格な CSP」から「緩和された CSP」に変更します。

上記の設定が完了したら、右上の [公開] をクリックします。

セキュリティ (CORS)

[設定] > [CORS] にて、サイトのドメインが許可リストに存在することを確認します。

まとめ:要素がつながった瞬間

おつかれさまでした。これで全てのピースが埋まりました。
[設定] > [すべてのサイト] で、公開済みのサイトのURLをクリックしてサイトを開きます。チャットで話しかけてみてください。

  • 「△△について教えて」と言えば、Data 360 (Step 1) から知識を引き出し、
  • 「注文状況を知りたい」と言えば、Agent (Step 3) が判断して番号を聞き返し、Flow (Step 2) が検索して答えてくれるはずです。

これが、LWR × Agentforce が実現する、次世代の顧客体験です。 一つ一つの設定は複雑ですが、このガイドを地図にして、ぜひ実装に挑戦してみてください。

BESPOKE ONEの管理人

福島 瑛二

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

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

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

Trailblazer: efukushima

福島 瑛二をフォローする

読者の声

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