🦔

Copilot Studio の会話履歴が保存される ConversationTranscript テーブルを探る

2024/04/01に公開

はじめに

前回の記事で、Copilot Studio の会話履歴が、Dataverse の ConversationTranscript テーブルに格納されることに触れました。本記事では ConversationTranscript のデータ構造を確認し、Copilot Studio から Azure OpenAI Services (AOAI) に会話履歴を連携するデータソースとして使用することができないかを確認しました。

結論を先に書くと、Copilot Studio から AOAI へのインタラクティブなメッセージ交換処理として、直近の会話履歴を ConversationTranscript から参照することはできません。 確認時点の挙動では Copilot Studio の会話履歴が ConversationTranscript に出力されるまでにタイムラグがあるようです。

記事は 2024 年 4 月 1 日時点の内容を元に執筆しています。常に最新の情報を確認するようにしてください。

ConversationTranscript の格納データを確認する

ConversationTranscript テーブルからデータを確認する方法は、Work with conversation transcripts で説明されています。

簡単に確認してみます。

  1. PowerApps にアクセスします。
  2. 「テーブル」から「すべて」を選択し、右上の検索ボックスで「ConversationTranscript」を入力するとテーブルが確認できます。

    データはこのような感じで格納されています。

    会話履歴は「内容」カラムから確認できますが、以下のように Unicode エスケープシーケンスされて格納されています。内容を確認したい場合には、変換ツールなりを利用してください。

Copilot Studio の会話データ取得に使えそうなカラム

Copilot Studio のシステム変数から「Conversation.Id」を取得できます。

ConversationTranscript のテーブル定義を見ると、Name (名前) カラムが利用できそうです。

実際のデータを見てみます。
以下は Copilot Studio から System.Conversation.Id を Power Automate に渡したログです。id として「d513290e-78d8-412a-b0b7-062c71380e6c」が渡されていることが確認できます。

しかしながら、この id を使用して Dataverse からレコードを取得することができませんでした。。

(しばらく時間を置いて) 改めて Dataverse の ConversationTranscript テーブルからデータを見てみます。
先ほどの id で「名前」カラムを見てみると該当データが出力されていることが確認できます。ただし、「作成日時」カラムと ConversationStartTime との間に時間の乖離が見られます。

まとめ

推測ですが、Copilot Studio の会話が終了した後、会話データが ConversationTranscript テーブルに追加される挙動のように見受けられます。
現状では Copilot Studio と AOAI 間のリアルタイムに行われている会話データを ConversationTranscript テーブルから取得することはできないと考えられます。このテーブルは事後解析などの用途でのみ利用することができそうです。
ということから、現状で Copilot Studio から AOAI に会話履歴を連携させようとすると、前回の記事で書いたようなグローバル変数を使用するか、独自データベース (Dataverse に新規に会話履歴管理用テーブルを作成するか、他の任意のデータベース) を利用するといった感じになりそうです。

GitHubで編集を提案
Microsoft (有志)

Discussion