Copilot Studioのチャットボットで添付ファイルを処理する

Copilot Studioでエージェントを作成すると、簡単にTeams上でチャットボットとして利用することができます。

本記事では、Copilot Studioで作成したエージェントで、Teamsチャットから添付ファイルを処理する方法について解説します。

単純なチャットボットでの動作

Copilot Studioで作成したエージェントは、作成してすぐにTeams上でチャットボットとして利用することができます。

しかし、単純に作成したエージェントでは、Teamsチャット上でファイルを添付しても処理してくれません。

添付ファイルを処理するエージェントの作成

ここでは、Copilot Studioで作成したエージェントで、Teamsチャットに添付したファイルを取り扱う方法を説明します。

トピックの作成

Copilot Studioのエージェントにアクセスし、添付ファイルを取り扱うためのトピックを作成します。

  • トピック名:添付ファイル要約
  • トリガー:エージェントが選択するもの
  • トピックの機能を説明する:添付ファイルを要約するために使用できます

添付ファイルの操作

ループ処理の追加

チャットボットで添付されたファイルの情報は、システム変数のAttachments変数に格納されます。

Attachments変数には複数のデータが格納される可能性があるため、ループ処理を行います。

  1. [コード エディターを開く]をクリックします。
  2. YAML形式でForeachのアクションを記述します。
actions:
    - kind: Foreach
      id: invokeFlowAction_ForEachAttachments (任意の一意の値で構いません。)
      items: =System.Activity.Attachments
      value: Topic.Attachment (こちらの値が変数名となります。)

3. 保存してコード エディターを閉じると、Attachments変数に対するループ処理が追加されます。

値の解析

ループ処理を行う変数に格納されたJSON形式のデータを解析します。

  1. [変数管理] - [値を解析する]のアクションを追加します。
  2. スキーマには以下の通り設定します。
kind: Record
properties:
  Content: File
  ContentType: String
  Name: String
  Value: File

条件分岐の追加

ファイルが添付されている場合のみ後続の処理に進むよう、変数の値で条件分岐します。

  1. [条件を追加する]のアクションを追加し、ファイル情報を格納した変数が空白ではない場合を条件とします。
ファイル名の出力

ここまで来ると変数の値からファイル名を取り出すことができますので、ファイル名を出力するメッセージを出力します。

1 . [メッセージを送信する]のアクションを追加し、ファイル情報を格納した変数からName属性を取り出して出力します。

添付ファイルの要約

OCR用エージェント フローの作成

添付ファイル名を取り扱うところまでできました。ここからは、添付されたファイルをAI BuilderでOCRするフローを作成します。

  1. [ツールを追加する] - [基本ツール] - [新しいエージェント フロー]のアクションを追加します。
  2. フローのデザイナーが開くので、入力パラメーターとしてファイル名を受け取るように設定します。
  3. [パスによるファイル コンテンツの取得]のアクションを追加し、ファイルパスを/Microsoft Teams チャット ファイル/フローの引数で受け取ったファイル名の形式で設定します。

    ※ Teamsのチャットに添付したファイルは、個人のOneDriveに以下のように格納されているため、このパスを指定します。

  4. [画像や PDF ドキュメントのテキストを認識する]のアクションを追加し、前段で取得したファイル コンテンツを設定します。
  5. 最後に、[エージェントに応答する]のアクションを追加し、前段でOCRした結果の全文を設定します。
OCR結果の要約

トピックに戻り、エージェント フローでOCRした結果を要約します。

  1. 先ほど作成したエージェント フローの引数に、ファイル情報を格納した変数からName属性を取り出して設定します。

  2. [ツールを追加する] - [基本ツール] - [新しいプロンプト]のアクションを追加します。

  3. [入力] - [画像またはドキュメント]からファイルの入力を追加し、ファイルの内容を要約する指示を与えて保存をクリックします。

  4. 前段で作成したプロンプトの入力として、エージェント フローでOCRした結果を設定します。

  5. 最後に、プロンプトで要約した結果から、text属性を取り出してメッセージとして出力します。

Teamsでの動作確認

これで、添付ファイルを取り扱うための実装が完了しました。

エージェントを公開し、Teams上で動作を確認してみます。Teamsのチャットから添付ファイルを入力し、メッセージで要約を依頼すると、添付したファイル名と、ファイル名の要約がメッセージとして出力されます。

想定通り動作することが確認できました。

まとめ

今回は、Copilot Studioで作成したエージェントで、Teamsチャットの添付ファイルを取り扱う方法をご紹介しました。

標準機能で対応していないような動作も、今回のようにトピックやフローの処理を組み合わせることで実現が可能です。ぜひ試してみて下さい。

執筆担当者プロフィール
大嶋 柾也

大嶋 柾也(日本ビジネスシステムズ株式会社)

Data&AI事業本部 ソリューション部所属。最近はCopilot Studioの案件を中心に担当。

担当記事一覧