Copilot Studio の会話履歴が保存される ConversationTranscript テーブルを探る
はじめに
前回の記事で、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 で説明されています。
簡単に確認してみます。
- PowerApps にアクセスします。
- 「テーブル」から「すべて」を選択し、右上の検索ボックスで「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 に新規に会話履歴管理用テーブルを作成するか、他の任意のデータベース) を利用するといった感じになりそうです。
Discussion