結果のリストを返す
外部システムでデータを検索し、結果のリストを返すようにエージェントに依頼するのが一般的です。 これを行うには、エージェントは Power Automate フローを呼び出して次のことができます。
- 認証して外部ソリューションに接続する。
- ユーザー入力に基づいてクエリを実行します。
- 結果をフォーマットする。
- 結果をエージェントに返します。
この例では、Dataverse コネクタを Power Automate で使用してアカウントを検索します。 コネクタは、アカウント名、市区町村、アカウント番号を含む結果のリストをエージェントに返します。
前提条件
- Copilot Studio の作成キャンバスから フローを作成 する方法について説明します
- 入出力変数を使った情報の受け渡し
- ご使用の環境で Dataverse 検索を構成する
Dataverse の取引先企業テーブルを設定する
取引先企業テーブルは 標準テーブル で、既定で Power Platform 環境で使用できます。 ただし、取引先企業のデータは付属していません。 エージェントが取引先企業を検索する前に、取引先企業 テーブルに入力する必要があります。
データを含む取引先企業テーブルが既にある場合は、この手順をスキップしてトピックを作成するに移動します。 ただし、後のステップでエージェントをテストするときは、データに関連する検索語を使用することを忘れないでください。
Power Apps ポータル にアクセスします。
ナビゲーション ウィンドウで、テーブル を選択します。
取引先企業テーブルを選択し、テーブルのプロパティ ページで編集を選択します。
テーブルに次の行を追加します:
住所 1: 市区町間 アカウント名 口座番号 世田谷区 Contoso Inc AC0125 サンフランシスコ Contoso Residences AC0255 オリンピア Contoso 食事宅配サービス AC0035
トピックを作成する
Copilot Studio で、エージェントのトピック ページに移動します。
取引先企業の検索という名前のトピックを作成します。
以下のトリガー フレーズを追加:
- 顧客を探しています
- 取引先企業を探しています
- 取引先企業の検索
- 顧客の検索
メッセージ ノードを追加し、「アカウントを探しているようですね。 お手伝いします」とメッセージを入力します。
質問 ノードを追加して、「探しているお客様のお名前は?」というメッセージを入力します。
特定では、組織を選択します。
ユーザーの応答全体 でも機能します。 ただし、組織エンティティを選択すると、エージェントの言語理解機能を利用して、応答から組織名を抽出できます。
ユーザーの応答を名前を付けて保存で、変数の名前を "organization" に変更します。
フローの作成
ノードの下にあるノードの追加アイコン
を選択し、アクションの追加を選択します。
基本アクション タブで、新規 Power Automate フローを選択します。
Power Automate で、フローの名前を選択し、アカウントの検索 に置き換えます。
Copilot からフローを実行するフロー トリガーを選択して、組織という名前のテキスト入力パラメーターを追加します。
Copilot からフローを実行するフロー トリガーの下の追加アイコンを選択します。
アクションの追加で、"Microsoft Dataverse" を検索して、行の検索 アクションを選択します。
このアクションは、あいまい一致を使用して、Dataverse 取引先企業テーブル にある関連する取引先企業を検索します。
検索語句 ボックスにスラッシュ (
/
) を入力し、動的コンテンツの挿入を選択して、組織入力パラメーターを選択します。詳細パラメーターで、すべて表示 を選択し、次の値を設定します。
-
テーブル フィルター項目:
account
-
項目で並べ替え - 1:
search.score desc
-
項目で並べ替え - 2:
name asc
-
テーブル フィルター項目:
フォーマットの結果
行の検索アクションは、JSON データを含む行の一覧変数を返します。 データを使用する前に、JSON の解析 アクションを使用してデータを分析する必要があります。
検索列 アクションの下にある 追加 アイコンを選択します。
アクションを追加するで "データ オペレーション" を検索し、JSON を解析するアクションを選択します。
コンテンツ ボックスにスラッシュ (
/
) を入力し、動的コンテンツの挿入を選択して行の一覧を選択します。次の JSON スキーマをコピーして、スキーマ ボックスに貼り付けます。
{ "type": "array", "items": { "type": "object", "properties": { "@@search.score": { "type": "number" }, "name": { "type": "string" }, "address1_city": { "type": "string" }, "accountnumber": { "type": "string" } }, "required": [ "name" ] } }
JSON の解析 アクションの下にある 追加 アイコンを選択します。
アクションを追加するで "変数" を検索し、変数の初期化アクションを選択します。
名前 ボックスに「ListOfAccounts」と入力します。
タイプに、文字列と入力します。
変数の初期化 アクションの下にある 追加 アイコンを選択します。
アクションを追加するで "コントロール" を検索し、それぞれに適用するアクションを選択します。
前のステップからの出力を選択 ボックスにスラッシュ (
/
) を入力し、動的コンテンツの挿入 を選択してから、Body 変数を JSON 解析の下で選択します。それぞれに適用するアクション内の追加アイコンを選択します。
アクションを追加するで "変数" を検索し、文字列変数の追加アクションを選択します。
名前には、ListOfAccounts を選択します。
次のテキストをコピーし、値ボックスに貼り付けます。
- @{items('Apply_to_each')['accountnumber']}: @{items('Apply_to_each')['name']} - @{items('Apply_to_each')['address1_city']}
スニペットの後に改行を追加して、各結果がそれぞれの行に表示されるようにします。
Copilot に応答するアクションで、テキスト 出力を追加します。
名前に、「FoundAccounts」と入力します。
値は、ボックスにスラッシュ (
/
) を入力し、動的コンテンツの挿入を入力して、ListOfAccounts 変数を選択します。フローを保存して公開します。
Copilot Studio からのフローの呼び出し
Copilot Studio で、質問ノードの下にあるノードの追加アイコン
を選択し、アクションの追加を選択してから、先ほど作成したフロー、アカウント検索を選択します。
フロー入力パラメーターを 質問 ノードから出力変数に設定する: 組織 (文字列) は 組織 変数から値を取得します。
メッセージ ノードを追加し、「検索結果はこちらです」とメッセージを入力します。
2 番目のメッセージ ノードを追加します。 変数の挿入アイコンを選択し、FoundAccounts を選択します。
保存 を選びます。
エージェントをテストする。