会話トランスクリプトを使って作業する

重要

Power Virtual Agents 機能は、生成 AI への多大な投資と Microsoft Copilot 全体の統合の強化により、現在 Microsoft Copilot Studio の一部となっています

ドキュメントやトレーニング コンテンツが更新される間、一部の記事やスクリーンショットで Power Virtual Agents が参照される場合があります。

Power Apps と Microsoft Copilot Studio の両方で、コパイロットとの顧客のやり取りの記録を表示、エクスポート、ダウンロードできます 。 各アプリがエクスポートする情報はわずかに異なります。 この記事では、Power Apps で会話トランスクリプトをダウンロードし、それらを使用して Power BI でレポートを作成する方法について説明します。 Microsoft Copilot Studio のコパイロットのセッション トランスクリプトをダウンロードする

既定では、Power Apps 過去 30 日間の会話トランスクリプトをダウンロードします。 保持期間は変更できます

注意

環境にアクセスできなくなった場合は、Power Platform 管理センターで サポート リクエストを作成する 必要があります。

前提条件

Power Apps ポータルからコパイロットの会話のトランスクリプトを表示してエクスポートする

Power Apps ポータルからコパイロットの会話のトランスクリプトを表示してエクスポートすることも可能です。

まず、資格情報を使用して https://www.powerapps.com にサインインします。

会話トランスクリプトを表示する

  1. サイド ペインで、テーブル ノードを展開します。 上部にある すべて を選択します。

    テーブル ノードで [すべて] が選択されていることを示すスクリーンショット。

  2. 右上の検索テキストボックスに、会話を入力します。 エンティティ 下にある テーブル を選択します。

    選択された会話トランスクリプトを示すスクリーンショット。

  3. ConversationTranscript テーブルのページが開き、表示可能なデータのリストが表示されます。

    アクティブな会話トランスクリプトを展開したスクリーンショット。

会話トランスクリプトをエクスポートする

  1. サイド ペインで、テーブル ノードを展開します。 上部にある すべて を選択します。

    テーブル ノードで [すべて] を選択します。

  2. 右上の 検索 テキストボックスに、会話 を入力します。 エンティティ 下にある テーブル を選択します。

    エクスポートするトランスクリプトを選択します。

  3. 画面上部の エクスポート メニュー項目を展開し、データのエクスポート を選択します。 エクスポート用のデータが作成されるまで、数分かかる場合があります。

    エクスポート メニューからデータのエクスポートを選択します。

  4. エクスポートされたデータのダウンロードを選択し、コンテンツをダウンロードします。

    エクスポートされたデータをダウンロードします。

コパイロットの会話トランスクリプトをダウンロードする

  1. Power Apps ナビゲーション メニューで、Dataverse を選択してから、テーブルを選択します。

  2. すべてを選択します。

  3. 右上隅の検索ボックスで、会話と入力します。

  4. 会話トランスクリプト テーブルを選択します。

    ConversationTranscript テーブルが強調表示された Power Apps テーブル ページのスクリーンショット。

  5. エクスポートを選択し、データのエクスポートを選択します。

    ConversationTranscript テーブルのデータのエクスポート オプションのスクリーンショット。

  6. Power Apps がエクスポート用のデータを準備するまで、数分待ちます。 エクスポートされたデータをダウンロードを選択します。

ファイルはブラウザーのデフォルトのダウンロード場所に zip アーカイブとして保存されます。

会話トランスクリプトを理解する

会話トランスクリプトは、CSV (カンマ区切り値) ファイルです。 以下の表は、会話トランスクリプトでの最も重要なフィールドを示します。

フィールド 説明
コンテンツ JSON 形式のトランスクリプト全体 コンテンツ フィールド セクションを参照してください。
ConversationStartTime 会話が開始した時刻 (データ ストアに書き込まれたトランスクリプト レコードの時刻ではない) 2021-04-19T20:39:09Z
ConversationTranscript Dataverse テーブルの行の一意の識別子 28eccb77-xxxx-4a63-985f-ffaaadd6f391
Metadata コパイロット ID、テナント ID、およびコパイロット名を含む JSON {"BotId": "198eca5f-xxxx-4ae6-8c08-835d884a8688", "AADTenantId": "72f988bf-xxxx-41af-91ab-2d7cd011db47", "BotName": "Test Bot"}
件名 ConversationIdBotIdbatch number の順に作成されるカスタム行の名前。 バッチ番号は、会話に複数の分析セッションがある場合の順序を示します。 クラシック ボットにはバッチ番号は含まれません。 8YYe8iif49ZKkycZLe7HUO-o_198eca5f-xxxx-4ae6-8c08-835d884a8688_0
Bot_ConversationTranscript コパイロット ID 198eca5f-xxxx-4ae6-8c08-835d884a8688
作成日 トランスクリプト レコードが作成された日時 2021-04-20T02:40:13Z

コンテンツ フィールド

コンテンツ フィールドは、ユーザーがコパイロットで行ったすべての活動の生のログです。 一般的な活動 タイプには、メッセージ と イベント があります。

  • メッセージ活動は、会話に表示されるコンテンツを表します。 メッセージ 活動には、テキスト、スピーチ、インタラクティブカード、バイナリまたは不明な添付ファイルが含まれる場合があります。
  • イベント活動は、プログラム情報をクライアントまたはチャネルからコパイロットに伝達します。

活動タイプの詳細については、Bot Framework 活動スキーマ を参照してください。

次の表では、コンテンツ JSON でのいくつかの主要なフィールドについて説明します:

キー 説明
ID 活動オブジェクトの一意の GUID
valueType アクティビティに格納される値の型; アクティビティが提供する情報を決定します (一般的な活動値タイプ)
timestamp 活動がエポック形式で生成されたときのタイム スタンプ (UTC 時間で 1970 年 1 月 1 日午前 0 時からの秒数)
type 活動のタイプ; たとえば、messageevent、または trace
replyToId 現在の活動が応答している活動の ID
from フィールド idrole が含まれています:
  • id - 呼び出し元の ID
  • role - 0 または 1 を保持します
    • 0 - 活動はコパイロットからのものです
    • 1 - 活動はコパイロットと対話しているユーザーから来ています
注:
id は、キャンバスがユーザーの一意の ID を渡している場合、コパイロットと対話しているアクティブなユーザーの数を計算するために使用できます。 キャンバスが ID を渡さない場合、会話ごとに一意の ID が渡されます。
セキュリティとプライバシーのため、ID はトランスクリプトに書き込まれる前にハッシュされます。
channelId 活動の発信元の ID; たとえば、directlinemsteams、または facebook
textFormat テキストのフォーマット; たとえば、plain、または markdown
attachments 活動に関連付けられた動的なリッチ データ; たとえば、AdaptiveCardsHeroCards、または Carousel data
text message 活動のテキスト
value 値タイプに基づく活動に固有のフィールド; このフィールドには、ほとんどの有用な情報が存在します
channeldata
  • 次のチャネル データが含まれています:
    • メッセージに対して:
      • DialogTraceDetail
      • DialogErrorDetail
      • VariableDetail (変数に割り当てられた値が含まれます)
      • CurrentMessageDetail
    • イベントに対して:
      • cci_trace_id
      • traceHistory
      • enableDiagnostics
      • clientTimestamp
      • clientActivityId
name イベント活動の名前; 例えば、SetPVAContext

一般的な活動値タイプ

活動値のタイプ 内容
ConversationInfo Microsoft Copilot Studio テスト ウィンドウ (isDesignMode) および会話のロケールからの会話がからのものであるかどうか
CSATSurveyRequest ユーザーには、顧客満足度 (CSAT) 調査が表示されます
CSATSurveyResponse ユーザーは CSAT 調査に回答します
DialogRedirect ユーザーは別のトピックにリダイレクトされます
ImpliedSuccess ユーザーがトピックの質問ノードに到達しました。ここで、条件の 1 つが "確認済みの成功" CSAT システムトピックを指しているか、"会話の終了" システム トピックを呼び出しています
IntentRecognition トピックがユーザーによってトリガーされました
PRRSurveyRequest ユーザーは、トピックが "会話の終わり" トピックからの質問に回答したかどうかを尋ねられました
PRRSurveyResponse トピックが "会話の終わり" トピックからの質問に回答したかどうかのユーザーの応答
SessionInfo タイプ (unengaged または engaged)、結果 (EscalatedResolvedAbandon)、セッションのターン カウント
VariableAssignment 変数に割り当てられた値

会話トランスクリプトからカスタム Power BI レポートをビルドする

会話のトランスクリプトからカスタム レポートを作成するための便利な方法は、処理する必要があるメッセージの数を調べることです。

軽量アプリ

Power BIを Power BI データフローとともに Dataverse に接続します。 他のインフラストラクチャは必要ありません。更新するたびにすべてのレコードが Dataverse から取得されます。

Dataverse から Power BI モデルへのデータの流れを示す図。

長所 デメリット
実装が簡単。 トランスクリプトが増えると、更新時間が長くなる可能性があります。
Dataverse での保管に高いコスト。

標準 Azure Data Lake Storage アプローチ

Dataverse データを Azure Data Lake Storage にエクスポートします。 この方法では、Azure Data Lake Storage アカウントが必要ですが、他の Azure インフラストラクチャは必要ありません。

トランスクリプトでデータを準備するための Power Platform データフローとデータを構造化された形式に抽出します。

Power BI は、データフローからのデータを更新します。 Power Platform と Power BI は、すべてのコンピューティング インフラストラクチャを管理します。 更新のたびに、特定の日のレコードが Dataverse から取得されます。

Dataverse から Azure Data Lake Storage へ流れ、Power Platform と Power BI によって処理されるデータを示す図。

長所 デメリット
Azure Data Lake Storage での低いストレージ コスト。
適度に単純な実装。
Azure Compute は必要ありません。
トランスクリプトが毎日増えると、更新時間が長くなる可能性があります。

Azure Data Lake Storage + Synapse アプローチ

標準 Azure Data Lake Storage アプローチのデータ サイズでは、更新が遅くなったり、その他の操作上の問題が発生したりする可能性があります。 その場合、Azure Synapse Analytics を使用して Power BI に統合できます。

Dataverse から Azure Data Lake へ流れ、Azure Synapse と Power Platform によって処理されるデータの図。

長所 デメリット
更新時間は一定です。
適度に単純な実装。
Azure Data Lake Storage での低いストレージ コスト。
Azure Synapse のコストを計算します。

既定の保持期間の変更

Power Apps 一括削除ジョブは、30 日より古いコパイロットのトランスクリプトを自動的に削除します。 トランスクリプトをより長く保持するには、既存のジョブをキャンセルして、別のスケジュールで実行される新しいジョブを作成します。

既存の一括削除ジョブをキャンセルする

  1. 右上隅の Power Apps で、設定歯車アイコンを選択してから、詳細設定を選択します。

    詳細設定が強調表示されている Power Apps 設定メニューのスクリーンショット。

    Dynamics 365 ポータルが新しいタブで開きます。

  2. 設定の横にあるキャレットを選択してから、システムの下で、データ管理を選択します。

    データ管理で強調表示されている設定メニューのスクリーンショット。

  3. レコードの一括削除を選択します。

    一括レコード削除オプションが強調表示された、データ管理ページのスクリーンショット。

  4. ビュー リストで、定期的な一括削除システム ジョブを選択します。

    定期的な一括削除ジョブのリストのスクリーンショット。

  5. 1 か月以上前の会話のトランスクリプト レコードを一括削除するジョブを選択します。

    最初のジョブが強調表示された一括削除ジョブのリストのスクリーンショット。

  6. その他のアクション リストで、キャンセルを選択します。

    キャンセルが強調表示されたその他のアクション リストのスクリーンショット。

新しい一括削除ジョブの作成

  1. 新規を選択してから、次へを選択して一括削除ウィザードを開始します。

  2. 次の検索条件を設定します。

    • 検索リストで、ConversationTranscripts を選択します。
    • ConversationStartTime を選択し、X か月以上前を選択して 12 と入力します。
      この設定により、12 か月間トランスクリプトが維持されます。 必要に応じて、別の比較と値を選択してください。
    • SchemaType を選択し、等しいのままにして powervirtualagents と入力します。

    一括削除ジョブ検索条件設定のスクリーンショット。

  3. 次へ を選択します。

  4. ジョブの名前を入力し、毎回このジョブを実行するを選択して 1 と入力します。
    ジョブを毎日実行したくない場合は、別のスケジュールを選択してください。

    一括削除ジョブ名および実行設定のスクリーンショット。

  5. 次へ を選択し、続いて 送信 を選択します。

会話の記録を最大限に活用するためのヒント

変数を使用して、コパイロット コンテンツ またはコパイロット ユーザーに関連するデータを保存できます。 会話トランスクリプトから変数とその値を解析すると、変数でデータをフィルタリングまたはスライスできます。

会話のトランスクリプトは、コンテンツを ID で参照している箇所が多く存在します。 たとえば、現在のトピックによってリダイレクトされているトピックの ID は、その ID によってのみ参照されます。 トピックの名前を取得するには、コパイロット コンテンツからその名前を検索します。