この記事では、Salesforce Einstein Bot を作成し、Copilot Studio エージェントに接続する方法について説明します。 これらのプラットフォームを統合することで、両方の機能を組み合わせてエージェントのエクスペリエンスを強化できます。
この統合パターンでは、Einstein Bot はフロントエンドとして機能し、アインシュタインの「困惑トピック」を通じてフォールバック メカニズムとして Copilot Studio を使用します。 2つのプラットフォーム間で意図をマッピングするのではなく、Einstein Botが理解できないユーザーのクエリをすべてCopilot Studioに転送します。 Copilot Studio はクエリを処理し、応答を返します。 この要求/応答モデルは、Copilot Studio がユーザーのクエリに基づいて AI を利用した回答を提供します。
ライブ エージェントへのエージェントのハンドオフは、アインシュタイン ボットによって完全に制御されます。 この実装では、Copilot Studio からのハンドオフ イベントはリッスンしません。 Einstein でエスカレーション トリガーを直接構成し、スレッドを Salesforce Omni-Channel キューにルーティングします。
前提条件
開始する前に、以下の項目があることを確認します:
- Einstein ボットが有効化された Salesforce アカウント。
- Copilot Studio アカウント。
- Salesforce と Microsoft Power Platform の管理者または開発者のアクセス許可。
手順 1: エージェントの Direct Line シークレットを取得する
- Copilot Studio でエージェントを開き 、[設定] に移動します。
- [ セキュリティ>Web チャネル セキュリティ] を選択します。
- [ シークレットとトークン] で、[ シークレット 1 ] または [ シークレット 2] をコピーします。
Important
この統合では、 認証なしで構成された Copilot Studio エージェントのみがサポートされます。 SharePoint などの認証済みのナレッジ ソースは、このアプローチではサポートされていません。
ヒント
自動デプロイ: Salesforce CLI がインストールされている場合は、 自動デプロイ スクリプト を使用して手順 2 から 5 を完了できます。 スクリプトが完了したら、指示に従って Direct Line シークレットを構成します。 次に、「 手順 6: Setup のアインシュタイン ボット」に進みます。 手動で構成する場合は、手順 2 に進みます。
手順 2: Salesforce リモート サイト設定を構成する
- Salesforce のアカウントにサインインします。
- [セットアップ] に移動します。
- クイック検索で、「リモートサイト設定」と入力し、[リモートサイト設定] を選択します。
- 新しいリモート サイトを追加し、「リモート サイト名」に「DirectLine」と入力し、https://directline.botframework.com に「」と入力します。
- 保存を選びます。
Note
その他のリージョンの場合は、DirectLine API の適切な URL を使用します。 リージョン エンドポイントについては、 Direct Line API リファレンスを参照 してください。
ステップ 3: DirectLine API に接続するための Apex クラスを作成する
Salesforce で、[ セットアップ] に移動します。
クイック検索で、「Apex クラス」と入力します。
Salesforce 統合サンプルからソース コードをコピーして、次の Apex クラスを作成します。
-
DL_GetConversation: 新しい Direct Line 会話を開始し、conversationIdを返します。 -
DL_PostActivity: DirectLine API を介してユーザー メッセージを会話に送信します。 -
DL_GetActivity: 非同期応答を処理するための遅延と再試行ロジックが組み込まれたエージェントの応答を取得します。
-
手順 4: セキュリティで保護された認証用に名前付き資格情報を構成する
Apex クラスでシークレットをハードコーディングするのではなく、名前付き資格情報を使用することをお勧めします。 名前付き資格情報は、シークレットを格納するための安全な方法を提供し、コードを変更することなく管理およびローテーションが容易になります。
外部資格情報を作成する
- Salesforce セットアップで、 名前付き資格情報 を検索し、 名前付き資格情報を選択します。
- [ 外部資格情報 ] タブを選択します。
- [ 新規] を選択して構成します。
-
ラベル:
Directline -
名前:
Directline -
認証プロトコル:
Custom
-
ラベル:
- 保存を選びます。
プリンシパルを作成する
- 作成した外部資格情報の [ プリンシパル] で[ 新規] を選択します。
- 構成:
-
パラメーター名:
Directline_Principal -
シーケンス番号:
1 -
ID の種類:
Named Principal
-
パラメーター名:
- 保存を選びます。
- [ 認証パラメーター] で、[ 追加] を選択します。
- 構成:
-
名前:
Token - 値: 手順 1 の Direct Line シークレット
-
名前:
- 保存を選びます。
カスタム ヘッダーを作成する
- 外部資格情報の [ カスタム ヘッダー] で、[ 新規] を選択します。
- 構成:
-
名前:
Authorization -
値:
{!'Bearer ' & $Credential.Directline.Token} -
シーケンス番号:
1
-
名前:
- 保存を選びます。
名前付き認証情報を作成する
- [名前付き資格情報] タブに戻ります。
- 新規>新しい名前付き資格情報を選択します。
- 構成:
-
ラベル:
Directline -
名前:
Directline -
URL:
https://directline.botframework.com - 吹き出し用に有効化: チェック済み
-
外部資格情報: 選択
Directline - 承認ヘッダーの生成: オフ
- HTTP ヘッダーで数式を許可する: オン
-
ラベル:
- 保存を選びます。
手順 5: ボットにアクセス許可を付与する
Einstein ボットには、Apex クラスと外部資格情報にアクセスするための専用の権限セットが必要です。 作成したコンポーネントへのアクセス権をボットに付与する必要があります。
Apex クラスへのアクセスを許可する
- Salesforce セットアップで、 権限セット を検索し、 権限セットを選択します。
-
Chatbot アクセス許可セット (API 名:
sfdc_chatbot_service_permset) を見つけて選択します。 - Apex クラス アクセス>を選択し、編集します。
- 次のクラスを追加します。
DL_GetConversationDL_PostActivityDL_GetActivity
- 保存を選びます。
外部資格情報主体へのアクセスを許可する
- Chatbot アクセス許可セットで、外部資格情報プリンシパル アクセス>を選択し、編集します。
-
Directline - Directline_Principalを追加します。 - 保存を選びます。
手順 6: アインシュタイン ボットを設定する
- Salesforce で、[ セットアップ] に移動します。
- クイック検索で、「アインシュタイン」と入力し、[アインシュタインボット] を選択します。
- Salesforce のドキュメントの手順に従って、新しいアインシュタイン ボットを作成します。
手順 7: アインシュタイン ボットを Copilot Studio に接続する
Xbox ボットで、Copilot Studio に接続するように 2 つのダイアログを構成します。 ウェルカム ダイアログによって Direct Line の会話が開始されます。 [混乱] ダイアログは、認識できないユーザー メッセージを Copilot Studio に転送し、応答を返します。
[ようこそ] ダイアログを構成する
ユーザーがチャットを開始すると、[ようこそ] ダイアログによって Direct Line の会話が初期化されます。
[ようこそ] ダイアログで、あいさつ メッセージ の手順を追加します (省略可能)。
アクション タイプApexとアクション名Start DirectLine Conversation (
DL_GetConversation) のアクションステップを追加します。出力メッセージ 交換 ID を 変数 (たとえば、
ConversationID) にマップします。 この変数は、[混同] ダイアログの後続のアクションで使用されます。[次のステップ] をメイン メニューまたは会話ダイアログに設定します。
[ステップのプロパティ] パネルには、[DirectLine 会話の開始] アクションの変数マッピングが表示されます。
-
入力: 名前付き資格情報:
Directlineに設定します (手順 4 の名前付き資格情報) -
出力:
-
会話 ID:
ConversationID(テキスト): 混乱ダイアログ アクションで使用されます。 -
応答コード:
responseCode(数値): HTTP 状態コード。 -
エラー メッセージ:
errorMessage(テキスト): 呼び出しが失敗した場合のエラーの詳細。
-
会話 ID:
ヒント
このアクションの後に 条件 ステップを追加して、 responseCode 変数を確認します。 値が 200されていない場合は、セットアップ中の接続の問題の診断に役立つエラー メッセージを表示します。
「Confused ダイアログ」を構成する
不明なメッセージ用のダイアログでは、ユーザーのメッセージをEinsteinが認識できない場合、そのメッセージがCopilot Studioに転送されます。
Action Type Apex と Action Name Post Message を含むアクション ステップを Copilot Studio に追加します (
DL_PostActivity)。-
入力:
-
ユーザー メッセージ:
[System] Last Customer Input(必須) - 会話 ID: ウェルカム ダイアログからの変数 (必須)
- ユーザー名、 ユーザー ID、 名前付き資格情報: 省略可能
-
ユーザー メッセージ:
-
出力:
-
応答コード (
responseCode) [数値] -
エラー メッセージ (
errorMessage) [テキスト] -
ウォーターマーク (
watermark) [テキスト]: 次のアクションに渡されます。
-
応答コード (
-
入力:
アクション タイプ Apex とアクション名 Get Copilot Studio Response () を含む
DL_GetActivityステップを追加します。-
入力:
-
会話 ID:
ConversationID: 変数 (必須) -
ウォーターマーク :
watermark: 前のアクションからの変数。 -
最大再試行回数:
5(既定) -
初期遅延 (秒):
5(既定値) -
名前付き資格情報:
Directline
-
会話 ID:
-
出力:
-
応答コード:
responseCode(数値) -
メッセージ:
mcsResponse(テキスト): Copilot Studio エージェントの応答。 -
エラー メッセージ:
errorMessage(テキスト) - ウォーターマーク: 後続の呼び出しのために更新されたウォーターマーク。
- メッセージ数が多い: (ブール値): より多くのメッセージが使用可能かどうかを示します。
- ハンドオフである: (ブール値): Copilot Studio がエージェントのハンドオフを要求しているかどうかを示します。
-
応答コード:
-
入力:
Note
DL_GetActivity クラスには、Copilot Studio からの非同期応答を処理するための遅延と再試行のロジックが組み込まれています。 既定では、最初の試行の 5 秒前に待機し、最大 5 回再試行します。 この動作は、省略可能な delaySeconds と maxRetries 入力パラメーターを使用してカスタマイズできます。
-
変数を使用して、ユーザーに応答を表示する
mcsResponseステップを追加します。 - 会話ループが続行されるように、[ 次のステップ ] を [ 顧客の入力を待機 する] に設定します。
完全な混乱したダイアログ フローは次のようになります。
手順 8: エージェントのハンドオフを処理する
ライブ エージェントのエスカレーションを有効にするには、直接、お使いのアインシュタイン ボットでエスカレーション トリガーを構成します。 この構成を使用すると、ユーザーを適切な Salesforce Omni-Channel キューにルーティングして、人の支援が必要になったときに行うことができます。
詳細については、Salesforce のドキュメント 強化されたボットから会話をルーティングするを参照してください。