エージェントでMicrosoft Copilotをカスタマイズする

Power Apps の Microsoft Copilot では、ユーザーはカスタム エージェントと対話して、Copilot で実行できる機能を拡張できます。 エージェントをカスタマイズすることで、組織のビジネス プロセスとデータに合わせて調整されたエクスペリエンスを作成できます。 詳細については、「Microsoft Copilotでのエージェントの使用」を参照してください。

この記事では、Power AppsでMicrosoft Copilot用に構築できるエージェントの種類について説明し、シナリオに適したアプローチを選択するのに役立ちます。

エージェントの種類を選択する

次の表では、ビルドできるエージェントの種類を比較します。

エージェントの種類 説明 一般的なユース ケース
宣言型エージェント Microsoft Copilotの一般的なシナリオを簡単に設定するための低コードのツールとテンプレートを使用して構築されています。 定期的なタスクを自動化し、FAQ に回答し、ガイド付きワークフローを提供します。
カスタム エンジン エージェント ビジネスに合わせて調整された高度な機能のためのカスタム ロジックと統合を使用して構築されます。 複雑なビジネス プロセス、カスタム データ統合、特殊な自動化。
Copilot Studio エージェント 会話エクスペリエンスのための Teams とMicrosoft 365との統合により、Microsoft Copilot Studioで構築および管理されます。 Microsoft 365 アプリ内の対話型チャットボット、チームコラボレーション、パーソナライズされたサポート。

組織に最適なオプションを見つけるには、次のリソースを使用します。

モデル駆動型アプリの宣言型エージェントを作成する 1 つの方法は、アプリでMicrosoft Copilotを直接有効にすることです。 詳細については、「アプリを Microsoft Copilot 用に有効にする」を参照してください。

既定のエージェントとXrm.Copilot.* API を組み合わせることで、Power Appsで独自のアプリ固有のエージェント モードを作成できます。 既定のエージェントは、ユーザーに対して開かれるカスタマイズされた Microsoft Copilot エクスペリエンスを定義し、API によってアプリと Microsoft Copilot 間の双方向接続が作成されます。

既定のエージェントを設定する

モデル駆動型アプリのコンパニオンとしてカスタム エージェントを構築する場合は、既定のエージェントとして設定して、アプリとMicrosoft Copilotサイド ウィンドウが開いたときに自動的に読み込まれるようにすることができます。 これにより、エージェントがエクスペリエンスの開始点となり、独自のエージェント モードを構築する最初の部分になります。

既定のエージェントを設定する場合:

  • エージェントは、ユーザーからの操作なしで選択されます。
  • ユーザーは、アプリ用に設計したカスタマイズされたエクスペリエンスに直接移動します。
  • アプリ固有のワークフローとガイダンスは、Microsoft Copilotを開くとすぐに準備が整います。

既定のエージェントは、アプリのコア エクスペリエンスを拡張し、ユーザーに提供したいアプリ固有の Microsoft Copilot エクスペリエンスへのフロント ドアとして機能する、シナリオに重点を置いたエージェントに特に役立ちます。

モデル駆動型アプリでMicrosoft Copilotの既定のエージェントを設定する方法を示すスクリーンショット。

Xrm.Copilot API

Xrm.Copilot.* クライアント API を使用すると、開発者はMicrosoft Copilotをモデル駆動型アプリ エクスペリエンスに直接統合できます。 これらの API を使用すると、アプリはMicrosoft Copilotのサイド ウィンドウと直接対話し、Microsoft Copilotドリブン アクションに応答できるため、より豊富なエンド ツー エンドのエージェント シナリオを作成できます。

これらの API を既定のエージェントと共に使用すると、エージェント モード パターンを完成させます。エージェントは開始点であり、アプリはプロンプトとコンテキストを Microsoft Copilot に送信でき、Microsoft Copilot はアプリ内のアクションを呼び出すことができます。

完全な API サーフェスについては、モデル駆動型アプリの Xrm.Copilot (クライアント API リファレンス) を参照してください。

これらの API を使用すると、次の手順を実行できます。

  • Microsoft Copilotにプロンプトを送信します。 sendPromptToM365Copilotを使用して、アプリからMicrosoft Copilot対話を開始します。
  • Microsoft Copilotのサイド ウィンドウを開いて制御します。 openM365CopilotPanelを使用して、必要に応じてMicrosoft Copilot ペインが表示されるようにします。
  • アプリ コンテキストをMicrosoft Copilotに渡します。 updateContext (プレビュー) を使用して、アプリから追加の接地信号を送信します。
  • エージェントを操作します。 getCurrentAgentを使用して、アクティブなエージェントを確認します。
  • アプリでMicrosoft Copilotのアクションを処理します。 addActionHandlerを使用して、Microsoft Copilot応答から送信されたアクションを処理するカスタム ハンドラーを登録します。

これらの API を組み合わせることで、アプリ UI とエージェントの間に真の双方向エクスペリエンスが作成されるため、エージェントは UI の更新を推進したり、ワークフローをトリガーしたり、カスタム ビジネス ロジックを実行したりできます。

addActionHandler を使用してMicrosoft Copilotアクションを処理する

Microsoft Copilot が出力する構造化アクションをアプリで処理する必要がある場合は、addActionHandler API を使用します。

アクション ペイロードをビルドする場合:

  • typeを PowerApps に設定して、Power Apps ホストを対象とします。
  • action (たとえば、MyNamespace.MyMessage) を、addActionHandlerに登録する actionId に設定します。
  • コードで処理され、Power Apps ホストに渡されるペイロードには、actionDataを使用します。

次のセクションでは、サポートされている 2 つのシナリオを示します。

アダプティブ カード

Microsoft Copilot応答には、Power Apps ホストにアクション メッセージを送信するAction.Submit ボタンを含むアダプティブ カードを含めることができます。

Example:

{
  "type": "AdaptiveCard",
  "$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.5",
  "body": [
    {
      "type": "TextBlock",
      "text": "Click Go and I will send data to the host to process.",
      "wrap": true,
      "id": "txtSendMessage"
    },
    {
      "type": "ActionSet",
      "actions": [
        {
          "type": "Action.Submit",
          "title": "Go",
          "id": "btnGo",
          "data": {
            "type": "PowerApps",
            "action": "MyNamespace.MyMessage",
            "actionData": {
              "foo": "bar"
            }
          }
        }
      ]
    }
  ]
}

MCP アプリ

Microsoft Copilot応答には、Power Apps ホストにアクション メッセージを送信する HTML を含めることができます。

Example:

<Button
  appearance="outline"
  icon={<ArrowLeft24Regular />}
  onClick={() => {
    try {
      const message = {
        eventName: 'powerapps.copilot.chat.action',
        action: 'MyNamespace.MyMessage',
        actionData: {
          foo: 'bar'
        },
      };
      window.parent.parent.postMessage(message, '*');
    } catch (error) {
      // eslint-disable-next-line no-console
      console.error('Error posting HOST_ACTION message to parent window:', error);
    }
  }}
>
  Test
</Button>

Limitations

  • 作成したエージェントは、アプリ内ユーザー コンテキストを使用して応答を調整することはできません。
  • 既定のエージェントを設定すると、エージェントからのスタート プロンプトは表示されません。