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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Xrm.Copilot API

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

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

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

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

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

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

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

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

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

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

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

アダプティブ カード

Microsoft 365 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 365 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

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