Power Apps と Copilot Studio の両方で、お客様とエージェントとのやり取りのトランスクリプトを表示、エクスポート、ダウンロードすることができます。 各アプリがエクスポートする情報はわずかに異なります。
重要
環境作成者 ロール を持つ作成者は、トランスクリプトに自動的にアクセスすることはできません。
この記事では、Power Apps で会話トランスクリプトをダウンロードし、それらを使用して Power BI でレポートを作成する方法について説明します。 トランスクリプトを Copilot Studio で直接ダウンロードするには、会話のトランスクリプトを Copilot Studio でダウンロードするをご覧ください。
既定では、Power Apps は過去 30 日間の会話トランスクリプトをダウンロードします。 保持期間は変更できます。
注意
SharePoint をナレッジ ソースとして使用するエージェントの応答は、会話のトランスクリプトには含まれません。
会話トランスクリプトは、次の目的では作成されません。
- Microsoft Dataverse for Teams 環境
- Dataverse 開発環境
- Microsoft 365 Copilot エージェント
前提条件
- 会話のトランスクリプトを表示するには、 Bot Transcript Viewer セキュリティ ロールが必要です。 Bot Transcript Viewer のセキュリティ ロールを付与できるのは管理者だけです。
Power Apps ポータルから会話のトランスクリプトを表示してエクスポートする
Power Apps にサインインします。
サイド ペインで、テーブル を選択し、すべて を選択します。
検索ボックスに、「会話」と入力します。
会話トランスクリプト テーブルを選択します。
会話トランスクリプト テーブルのページが開きます。
上部にあるメニュー バーで、エクスポート>エクスポート データを選択します。
エクスポート用のデータをまとめるのに数分かかります。
Power Appsがデータをエクスポート準備するまで数分待ってから、「 エクスポート済みデータをダウンロード」を選択します。
ファイルはブラウザの既定のダウンロード場所に ZIP アーカイブとして保存されます。
会話トランスクリプトを理解する
会話の書き起こしはDataverseのテーブルとして存在し、CSV(カンマ区切られた値)ファイルとしてダウンロードできます。 システムがいつどのように会話の書き起こしに情報を記録するかを決定する論理は以下の通りです。
- システムは30分間の非活動後に会話を書き起こし記録に保存します。 非活動時間後に会話が再開されると、システムは新しいアクティビティを同じ
Name値の新しいレコードに保存しますが、ConversationStartTime値も変わります。 - テレフォニーチャンネルに公開されたエージェントの場合、会話終了イベントの3分後に会話がタイムアウトします。
- 各レコードにはトランスクリプト(
Content列)の最大容量が1MBです。 記録がこの上限を超えると、システムは記録を複数のレコードに分割し、すべて同じName・ConversationStartTime値を持ちますが、Metadata.BatchId値は異なります。 - トランスクリプトを 統合 するには、同じ
NameとConversationStartTime値のレコードをすべて取り、BatchId順にソートしてください。
以下の表は、会話トランスクリプトでの最も重要なフィールドを示します。
| Field | プロパティ | 例 |
|---|---|---|
Content |
JSON 形式のトランスクリプト全体 | コンテンツ フィールドを参照してください |
ConversationStartTime |
会話が開始した時刻 (データ ストアに書き込まれたトランスクリプト レコードの時刻ではない) | 2021-04-19T20:39:09Z |
ConversationTranscript |
Dataverse テーブルの行の一意の識別子 | 28eccb77-xxxx-4a63-985f-ffaaadd6f391 |
Metadata |
エージェントID、テナントID、エージェント名、バッチIDを含むJSONです | {"BotId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "AADTenantId": "bbbbcccc-1111-dddd-2222-eeee3333ffff", "BotName": "Test Bot", "BatchId":2} |
Name |
ConversationIdから作成されたカスタム行の名前の後に続くBotId |
8YYe8iif49ZKkycZLe7HUO_198eca5f-1145-4ae6-8c08-835d884a8688 |
Bot_ConversationTranscript |
エージェントの ID | aaaabbbb-0000-cccc-1111-dddd2222eeee |
Created on |
トランスクリプト レコードが作成された日時 | 2021-04-20T02:40:13Z |
コンテンツ フィールド
Content フィールドは、ユーザーがエージェントと行ったすべてのアクティビティの生のログです。 一般的な活動 タイプには、メッセージ と イベント があります。
- メッセージ活動は、会話内に表示されるコンテンツを表します。 メッセージ 活動には、テキスト、スピーチ、インタラクティブカード、バイナリまたは不明な添付ファイルが含まれる場合があります。
- イベント アクティビティは、クライアントまたはチャネルからエージェントにプログラム情報を伝達します。
活動タイプの詳細については、Bot Framework の活動スキーマを参照してください。
次の表では、コンテンツ JSON でのいくつかの主要なフィールドについて説明します:
| 鍵 | プロパティ |
|---|---|
ID |
活動オブジェクトの一意の GUID |
valueType |
アクティビティに保存される値のタイプです。アクティビティが提供する情報を指定します (一般的なアクティビティ値のタイプ) |
timestamp |
活動がエポック形式で生成されたときのタイム スタンプ (UTC 時間で 1970 年 1 月 1 日午前 0 時からの秒数) |
type |
活動のタイプ; たとえば、message、event、または trace |
replyToId |
現在の活動が応答している活動の ID |
from |
フィールド id と role が含まれています:
id は、キャンバスがユーザーの一意の ID を渡す場合、エージェントとインタラクトしているアクティブユーザーの数を計算するために使用できます。 キャンバスが ID を渡さない場合、会話ごとに一意の ID が渡されます。
セキュリティとプライバシーのために、システムはIDを書き起こし前にハッシュ化します。 |
channelId |
アクティビティの発生元となるチャネルのID。例: directline、 msteams、または facebook |
textFormat |
テキストのフォーマット; たとえば、plain、または markdown |
attachments |
活動に関連付けられた動的なリッチ データ; たとえば、AdaptiveCards、HeroCards、または Carousel data |
text |
message 活動のテキスト |
value |
値タイプに基づく活動に固有のフィールド; このフィールドには、ほとんどの有用な情報が存在します |
channeldata |
次のチャネル データが含まれています:
|
name |
イベント活動の名前; 例えば、SetPVAContext |
一般的な活動値タイプ
| 活動値のタイプ | プロパティ |
|---|---|
ConversationInfo |
会話が、Copilot Studio テスト ペイン (isDesignMode) および会話のロケールからのものであるかどうか |
CSATSurveyRequest |
ユーザーには、顧客満足度 (CSAT) 調査が表示されます |
CSATSurveyResponse |
ユーザーは CSAT 調査に回答します |
DialogRedirect |
ユーザーは別のトピックにリダイレクトされます |
ImpliedSuccess |
ユーザーがトピックの質問ノードに到達しました。条件の 1 つが Confirmed Success CSAT システム トピック (クラシック ボットのみ) を指しているか、 会話の終了 システム トピックを呼び出しました |
IntentRecognition |
ユーザーがトピックをトリガーしました |
PRRSurveyRequest |
ユーザーは、トピックが 会話の終わり トピックからの質問に回答したかどうかを尋ねられました |
PRRSurveyResponse |
トピックが 会話の終わり トピックからの質問に回答したかどうかに対するユーザーの応答 |
SessionInfo |
種類 (unengaged または engaged)、結果 (Escalated、 Resolved、 Abandon)、セッションの開始時刻と終了時刻 (startTimeUtc、 endTimeUtc)、およびセッションのターン数 |
VariableAssignment |
値が変数に割り当てられます |
拡張トランスクリプト
エージェントはノードレベルのデータを含む強化トランスクリプトを生成するように設定できます。 このデータは、トピック内の会話の流れを追跡するのに役立ちます。 例えば、注文の管理 トピックでは、ユーザーは新しい注文を送信するか、既存の注文を取得するかを選択できます。 ノードレベルのデータにより、これらのオプション全体でユーザーの行動を分析できます。
拡張トランスクリプトをオンにする
エージェントを開きます。
設定>詳細の順に移動します。
「トランスクリプトを強調」を選択し、その後「トランスクリプトにノードレベルの詳細を含める」をオンにします。
ノードレベルのデータ
強化トランスクリプトをオンにすると、トピックが呼び出す各ノードごとに nodeTraceData アクティビティタイプが記録されます。 次の表で、nodeTraceData アクティビティ値の主要フィールドを説明します。
| 鍵 | プロパティ |
|---|---|
nodeID |
ノード識別子 |
nodeType |
ノードの種類 (例えば、SendActivity、または SearchAndSummarizeContent) |
startTime |
ノードが呼び出されたときのタイムスタンプ |
endTime |
ノードの実行が完了したときのタイムスタンプ |
topicDisplayName |
ノードを呼び出すトピック |
カスタム分析
カスタム変数に基づいて会話をフィルター処理するなど、一部のシナリオでは分析にカスタム アプローチが必要です。 カスタム分析ソリューションを構築するために、顧客は生のトランスクリプトをデータパイプラインに取り込むか、 Copilot Studio Kitのようなアドオンを利用できます。
Copilot Studio Kitの Conversation KPIソリューション は、トランスクリプトを自動的に解析し、集計データをDataverseテーブルに入力します。
既定の保持期間の変更
Power Appsの一括削除ジョブは、30日前のエージェントのトランスクリプトを自動的に削除します。 トランスクリプトをより長く保持するには、既存のジョブをキャンセルして、別のスケジュールで実行される新しいジョブを作成します。
既存の一括削除ジョブをキャンセルする
Power Apps で 設定>高度な設定 を選択します。
Dynamics 365 ポータルが新しいタブで開きます。
設定の横にあるキャレットを選択してください。 システム内で「データ管理」を選択してください。
レコードの一括削除を選択します。
ビュー リストで、定期的な一括削除システム ジョブを選択します。
1 か月以上前の会話のトランスクリプト レコードを一括削除するジョブを選択します。
その他のアクション リストで、キャンセルを選択します。
新しい一括削除ジョブの作成
「 新規 」を選択して一括削除ウィザードを起動してください。 ウィザードで 「次」を選択します。
次の検索条件を設定します。
- 検索リストで、ConversationTranscripts を選択します。
-
ConversationStartTime を X か月以上前に設定して 「12」 にします。
この設定により、12 か月間トランスクリプトが維持されます。 もし望むなら、別の比較や価値を選んでください。 - SchemaTypeを選択し、等しい値を保持し、「powervirtualagents」と入力します。
次へ を選択します。
ジョブの名前を入力し、毎回このジョブを実行するを選択して 1 と入力します。 ジョブを毎日実行したくない場合は、別のスケジュールを選択してください。
次へ を選択し、続いて 送信 を選択します。
ConversationTranscript Power Apps テーブルに自分の会話記録が表示されないのはなぜですか?
管理者は、トランスクリプトの保存を Dataverse に設定することができます。 トランスクリプトの保存方法やアクセス管理の詳細については、「 Control transcript access」をご覧ください。
重要
開発者環境に展開されたエージェントにはトランスクリプトは保存されません。
会話の記録を最大限に活用するためのヒント
変数を使ってエージェントのコンテンツやユーザーに関連するデータを保存 しましょう。 会話の書き起こしから変数とその値を解析することで、変数によってデータをフィルタリングまたはスライスすることができます。
会話のトランスクリプトは、ID のみでコンテンツを参照することができます。 たとえば、Redirect ノードでは、宛先トピックは ID によってのみ参照されます。 このトピックの名前を取得するには、エージェント コンテンツでその ID を検索します。