Share via


Download conversation transcripts in Power Apps

You can view, export, and download transcripts of customer interactions with your agent in both Power Apps and Copilot Studio. The information that each app exports is slightly different.

Important

Makers with the Environment maker role don't automatically have access to transcripts.

This article covers downloading conversation transcripts in Power Apps and using them to create reports in Power BI. To download transcripts directly in Copilot Studio, see Download conversation transcripts in Copilot Studio.

By default, Power Apps downloads conversation transcripts from the last 30 days. You can change the retention period.

Note

Agent responses that use SharePoint as a knowledge source aren't included in conversation transcripts.

Conversation transcripts aren't written for:

  • Microsoft Dataverse for Teams environments
  • Dataverse developer environments
  • Microsoft 365 Copilot agents

Prerequisite

View and export conversation transcripts from the Power Apps portal

  1. Sign in to Power Apps.

  2. In the side pane, select Tables, and then select All.

    Screenshot showing All selected on the Tables node.

  3. Enter "conversation" in the Search box.

  4. Select the ConversationTranscript table.

    A page for the ConversationTranscript table opens.

  5. On the top menu bar, select Export > Export data.

    It takes a few minutes for the data to be compiled for export.

    Screenshot showing the Export menu with the Export data option.

  6. Allow a couple of minutes for Power Apps to prepare the data for export, and then select Download exported data.

    The file is saved as a ZIP archive to your browser's default download location.

Understand conversation transcripts

The conversation transcript is a CSV (comma-separated values) file. The following table describes the most important fields in your conversation transcripts.

Field Description Example
Content The entire transcript in JSON format See Content field
ConversationStartTime The time the conversation started (not the time the transcript record was written to the data store) 2021-04-19T20:39:09Z
ConversationTranscript The unique identifier of the row in the Dataverse table 28eccb77-xxxx-4a63-985f-ffaaadd6f391
Metadata JSON that includes the agent ID, tenant ID, and agent name {"BotId": "aaaabbbb-0000-cccc-1111-dddd2222eeee", "AADTenantId": "bbbbcccc-1111-dddd-2222-eeee3333ffff", "BotName": "Test Bot"}
Name The name of the custom row created from ConversationId followed by BotId followed by a batch number. The batch number indicates the order when there are multiple analytic sessions for the conversation. Classic bots don't include the batch number. 8YYe8iif49ZKkycZLe7HUO-o_198eca5f-xxxx-4ae6-8c08-835d884a8688_0
Bot_ConversationTranscript The agent ID aaaabbbb-0000-cccc-1111-dddd2222eeee
Created on The date and time the transcript record was created 2021-04-20T02:40:13Z

Content field

The Content field is a raw log of all the activities that users had with the agent. Common activity types include message and event:

  • Message activities represent the content shown in a conversation. Message activities can contain text, speech, interactive cards, and binary or unknown attachments.
  • Event activities communicate programmatic information from a client or channel to the agent.

For more information on activity types, see Bot Framework Activity schema.

The following table describes some of the key fields in the content JSON:

Key Description
ID The unique GUID of the activity object
valueType The type of value stored in the activity; dictates what information the activity is providing (Common activity value types)
timestamp The timestamp of when the activity was generated, in Epoch format (the number of seconds since midnight UTC January 1, 1970)
type The type of activity; for example, message, event, or trace
replyToId The ID of the activity that the current activity is responding to
from Contains fields id and role:
  • id - the ID of the invoker
  • role - holds 0 or 1
    • 0 - the activity is coming from the agent
    • 1 - the activity is coming from the user interacting with the agent
Notes:
The id can be used to calculate the number of active users that are interacting with the agent if the canvas is passing in a unique ID of the user. If the canvas doesn't pass an ID, a unique ID per conversation is passed.
For security and privacy, the ID is hashed before it's written to the transcript.
channelId The ID of the channel where the activity is coming from; for example, directline, msteams, or facebook
textFormat The format of the text; for example, plain or markdown
attachments Dynamic rich data associated with the activity; for example, AdaptiveCards, HeroCards, or Carousel data
text The text for message activities
value Fields specific to the activity based on the value type; this field is where most of the useful information exists
channeldata Contains channel data:
  • for messages:
    • DialogTraceDetail
    • DialogErrorDetail
    • VariableDetail (contains the value assigned to a variable)
    • CurrentMessageDetail
  • for events:
    • cci_trace_id
    • traceHistory
    • enableDiagnostics
    • clientTimestamp
    • clientActivityId
name The name of the event activity; for example, SetPVAContext

Common activity value types

Activity value type Description
ConversationInfo Whether the conversation is from the Copilot Studio test pane (isDesignMode) and the locale of the conversation
CSATSurveyRequest The user is presented with a customer satisfaction (CSAT) survey
CSATSurveyResponse The user responds to a CSAT survey
DialogRedirect The user is redirected to another topic
ImpliedSuccess The user reached a question node in the topic, where one of the conditions points to the Confirmed Success CSAT system topic (classic bots only) or calls the End of Conversation system topic
IntentRecognition The user triggered a topic
PRRSurveyRequest The user was asked if the topic answered their question from the End of Conversation topic
PRRSurveyResponse The user's response to whether the topic answered their question from the End of Conversation topic
SessionInfo The type (unengaged or engaged), outcome (Escalated, Resolved, Abandon), and the turn count of the session
VariableAssignment A value is assigned to a variable

Enhanced transcripts

Agents can be configured to generate enhanced transcripts that include node-level data. This data helps track the flow of a conversation within a topic. For example, in a manage orders topic, users might choose between submitting a new order or retrieving an existing one. Node-level data enables analysis of user behavior across these options.

Turn on enhanced transcripts

  1. Open your agent.

  2. Go to Settings > Advanced.

  3. Select Enhance Transcripts, then turn on Include node-level details in transcripts.

Screenshot showing the Enhanced Transcripts settings page.

Node-level data

When enhanced transcripts are turned on, a nodeTraceData activity type appears in the transcript for each node that was invoked by a topic. The following table describes the key fields in the nodeTraceData activity value.

Key Description
nodeID The node identifier
nodeType The node type, for example, SendActivity or SearchAndSummarizeContent
startTime The timestamp when the node was invoked
endTime The timestamp when the node finished executing
topicDisplayName The topic invoking the node

Custom analytics

Some scenarios, like filtering conversations based on a custom variable, require a custom approach for analytics. Customers building custom analytics solutions can ingest the raw transcripts into their data pipelines or use an add-on, like the Copilot Studio Kit

The Conversation KPI solution within the Copilot Studio Kit automatically parses transcripts and populates aggregated data into Dataverse tables.

Change the default retention period

A Power Apps bulk-delete job automatically removes agent transcripts that are older than 30 days. To keep the transcripts longer, cancel the existing job and create a new one that runs on a different schedule.

Cancel the existing bulk delete job

  1. In Power Apps, select Settings > Advanced settings.

    Screenshot of the Power Apps Settings menu with Advanced settings highlighted.

    The Dynamics 365 portal opens in a new tab.

  2. Select the caret next to Settings, and then under System, select Data Management.

    Screenshot of the Settings menu, with Data Management highlighted.

  3. Select Bulk Record Deletion.

  4. In the View list, select Recurring Bulk Deletion System Jobs.

    Screenshot of the list of recurring bulk deletion jobs.

  5. Select the Bulk Delete Conversation Transcript Records Older Than 1 Month job.

    Screenshot of a list of bulk delete jobs, with the first one highlighted.

  6. In the More Actions list, select Cancel.

    Screenshot of the More actions list, with Cancel highlighted.

Create a new bulk delete job

  1. To start the Bulk Deletion Wizard, select New and then, in the wizard, select Next.

  2. Set the following search criteria:

    • In the Look for list, select ConversationTranscripts.
    • Select ConversationStartTime, select Older Than X Months, and enter "12".
      This setting keeps the transcripts for 12 months. Choose a different comparison and value if you like.
    • Select SchemaType, leave equals, and enter "powervirtualagents".

    Screenshot of the bulk delete job search criteria settings.

  3. Select Next.

  4. Enter a name for the job, select Run this job after every, and enter 1. Choose a different schedule if you don't want the job to run every day.

    Screenshot of the bulk delete job name and run settings.

  5. Select Next, and then select Submit.

Why can't I see my conversation transcripts in the ConversationTranscript Power Apps table?

Administrators can prevent the saving of transcripts to Dataverse. For more details on how transcripts are saved and how to manage access, see Control transcript access.

Important

Transcripts are not stored for agents deployed in developer environments.

Tips for getting the most out of your conversation transcripts

Variables can be used to store data relevant to your agent content or agent user. Parsing the variable and its value from the conversation transcript lets you filter or slice the data by the variable.

Conversation transcripts might refer to content by ID only. For example, in a Redirect node, the destination topic is only referred to by its ID. To get the name of this topic, look up its ID in the agent content.