Auto attendant and Call queue historical reports
Important
GCC High and DoD customers need to use Auto attendant and call queue historical reports for GCC High and DoD.
This Power BI template provides three reports that allow organizations to report on the number of calls processed by Auto attendants and Call queues. It also provides agent performance insights.
V3.1.8 published on August 12, 2024
The Teams Auto Attendant & Call Queue Historical Report Power BI template provides the following three reports:
- The Auto Attendant report shows analytics for calls coming into your Auto attendants.
- The Call Queue report shows analytics for calls coming into your Call queues.
- The Agent Timeline report shows a timeline view of agents being active in Call queue calls.
These reports use data from the Voice Applications Analytics Collector (VAAC) service.
V3.x.x prerequisites
Power BI Desktop
You need to have Power BI Desktop installed. You can install and use the free version from the Microsoft Windows Store.
Important
Power BI Desktop is updated and released on a monthly basis, incorporating customer feedback and new features. Only the most recent version of Power BI Desktop is supported; customers who contact support for Power BI Desktop will be asked to upgrade to the most recent version. You can get the most recent version of Power BI Desktop from the Windows Store, or as a single executable containing all supported languages that you download and install on your computer.
Power BI Service
These reports can be published to the Power BI service.
Once the report is published:
- Go to the dataset Settings.
- Expand the Data source credentials section.
- Select Edit credentials.
- Set the Authentication method to
OAuth2
. - Ensure Skip test connection is enabled.
- Select Sign in and provide your credentials.
When completed, you're able to configure a scheduled refresh of the dataset.
Access permissions
Use one of the following methods to control access to the historical reports:
- Voice applications policy
To control which Auto attendants, Call queues and Agents users can report on without providing them access to Teams admin center, create a voice applications policy that grants them access to historical reporting and assign them as an Authorized user to the appropriate Auto attendants and Call queues.
For more information, see Plan for Auto attendant and Call queue authorized users.
Tip
Using the voice applications policy to control access is the recommended approach. With the voice applications policy and Authorized users it is possible to control which Auto attendants, Call queues, and Agents a user can report on. If necessary, the policy still allows a user to report on all Auto attendants, Call queues, and Agents without providing access to Teams admin Center.
Create, or modify, a voice applications policy that enables the historical reporting permissions. Assign the policy to the appropriate users. Assign the users as authorized users to the appropriate auto attendants and call queues. For more information, see Manage voice applications policies in Microsoft Teams
The historical reporting permissions can only be set through PowerShell and will be available in Teams admin center later this year.
For more information, see:
Known issues
If the voice applications policy assigned to a user only enables the historical reporting permissions, and optionally the real-time reporting permissions, then the user can't access the historical reports. Support is working to resolve this problem. In the interim, enable at least one Auto attendant and Call queue change permission in the policy. Enabling the Auto attendant Business hours greeting and Call queue Welcome greeting is suggested, but enabling any of the change permissions will work around this issue.
- Call Quality Dashboard (CQD) pipeline [legacy]
If you want the user to report on all the Auto attendants, Call queues, and Agents in the tenant and you want to grant the user access to Teams admin center to run other Usage reports, assign the user a CQD access role with both View Reports and View EUII fields set to Yes.
For more information, see CQD access role.
Note
If a user is assigned a CQD access role and a voice applications policy, the CQD role will take precendence and the user will see all the Auto attendants, Call queues and Agents in the tenant.
V3.x.x desktop installation
The following steps assume the Power BI Desktop client is installed on your computer and that your account has the necessary permissions to access the CQD data pipeline.
Perform the following steps:
Download and save the Teams Auto Attendant & Call Queue Historical Reports V3.1.8.zip file on your computer.
Open the zip file.
Open the
Teams Auto Attendant & Call Queue Historical Reports V3.1.8.pbit
template file. Power BI Desktop should launch.Select the DataSource, Report Level, and UTC Offset.
- DataSource: Select the
api.interfaces.records.teams.microsoft.com
entry. - Report Level:
- Select
Per Call
(default) to retrieve all the individual call records. - Select
Per Day
to retrieve an aggregated total for each day.
- Select
- UTC Offset: Select the UTC offset that represents the time zone the reports are presented in. Only valid when the Report Level is set to
Per Call
Per Day vs Per Call
Per Call reporting retrieves the individual call records for each Auto attendant, Call queue, and Agent, the user is authorized for and makes them available in the Power BI client. Per Call reporting also allows call records to be displayed in the local time zone selected by the user. For some customers, especially those using the CQD access role to control access, this may result in hitting the 90,000 default or 200,000 per query record limit. In this case, the Per Day reporting option should be selected.
Per Day reporting retrieves one daily summary record for each Auto attendant, Call queue, and Agent. This results in fewer records being returned to the client, reducing the possibility of hitting the 90,000 default or 200,000 per query record limit. Per Day reporting is based on a UTC-00:00 day (00:00:00-23:59:59 UTC) only and any UTC offset supplied by the user is ignored.
- DataSource: Select the
Sign in with your Teams account.
Select File, then Options and settings, and then Data source settings.
Select Edit Permissions, and then Edit.
Select Organizational account, and then Sign in.
Select Save, then OK, and then Close.
Select Refresh, in the ribbon bar and the data refreshes.
Data latency for Auto attendant and Call queue analytics
The data is typically available within 30 minutes of the call being completed, but there are cases where it can take several hours for the data to appear.
You have to refresh the report to see any new data.
Auto attendant and Call queue historical reports
Cloud Auto Attendant Analytics report
Interpret the report
Callout | Title | Description |
---|---|---|
1 | Date | The start and end date of the report. Use this slider to select the date range to report on. See Known Issues |
2 | Time Range | The start and end hour of the report. The report spans all dates/times from start date/start hour to the end date/end hour. Use this slider to select the time range to report on. |
3 | Auto Attendant Resource Accounts | The Resource Accounts to be reported on. To see the calls for a specific Auto attendant, select all the resource accounts assigned to that Auto attendant. If the full Resource Account name is aa_test@microsoft.com, then this value is: aa_test Default: All |
4 | Quick Stats -> Incoming Calls | The breakdown shows the total number of calls received between the start date/start hour and end date/end hour. TIP: Hover over any metric in this section to display a tooltip with the individual calls that make up the total. |
5a | Quick Stats -> Usage Statistics | The breakdown shows the average call duration in the Auto Attendant and the average number of caller actions. |
5b | Caller Action Count | The breakdown on the number of caller actions (key presses, voice commands) |
6 | Quick Stats -> Directory Search Method | The breakdown shows how the Directory Search option was used by callers. This section of the report is blank if the Auto Attendant isn't configured for this service or if callers don't use it. Directory Search Method Legend Definitions:
|
7 | Call Results | The breakdown shows the call treatment received by callers. Call Results Legend Definitions:
TIP: Hover over any metric in this section to display a tooltip with the individual calls that make up the total. |
8 | The breakdown shows the caller paths through the auto attendant and the final call result. Column definitions:
TIP: Hover over any metric in this section to display a tooltip with the individual calls that make up the total. |
Known issues
- Only the calls and caller actions in the first Auto attendant that answers the call are reported on. Calls and caller actions in chained Auto attendants (when one Auto attendant transfers to another Auto attendant) aren't reported on.
- The Auto attendant resource account ID's name instead of Auto attendant name is shown. To show all the traffic for an Auto attendant, you must select all the resource accounts assigned to the Auto attendant.
- Only 28 days of call history are available. Auto attendant data is considered personal data and is subject to data privacy retention policies.
- The Date selector sometimes shows dates outside the range of available data resulting in a blank report. Change the dates to be within the last 28 days to resolve the issue.
Cloud Call Queue Analytics report
Interpret the report
Callout | Title | Description |
---|---|---|
1 | Date | The start and end date of the report. Use this slider to select the date range to report on. See Known Issues |
2 | Time Range | The start and end hour of the report. The report spans all dates/times from start date/start hour to the end date/end hour. Use this slider to select the time range to report on. |
3 | Call Queue Resource Accounts | The Resource Accounts to be reported on. To see the calls for a specific Call queue, select all the resource accounts assigned to that Call queue. If the full Resource Account name is cq_test@microsoft.com, then this value is: cq_test Default: All |
4 | Quick Stats -> Incoming Calls | The breakdown shows the total number of calls received between the start date/start hour and end date/end hour. TIP: Hover over any metric in this section to display a tooltip with the individual calls that make up the total. |
5 | Quick Stats -> Average Wait Time (seconds) | The breakdown shows the average call duration in the Call Queue before a caller is answered or they abandon. |
6 | Call Results | The breakdown shows the call treatment received by callers. Call Results Legend Definitions:
TIP: Hover over any metric in this section to display a tooltip with the individual calls that make up the total. |
7 | Call Volume, Abandoned Calls, Agent Opt-in Count | The breakdown shows the number of calls received and abandoned per hour and the maximum number of agents that were opted into the call queue at that time |
8 | Average Session Length (seconds) | The breakdown shows how long calls waited before each call result.
|
9 | Call Overflow/Timeout/No Agents Destinations | The breakdown shows where the calls that received the Call Overflow, Call Timeout or No Agents exception handling treatment were sent.
|
Known issues
- Only the calls and caller actions in the first Call queue that answers the call are reported on. Calls in chained Call queues (when one Call queue transfers to another Call queue) aren't reported on.
- The Call queues resource account ID's name instead of Call queue name is shown. To show all the traffic for a Call queue, you must select all the resource accounts assigned to the Call queue.
- Only 28 days of call history are available. Call queue data is considered personal data and is subject to data privacy retention policies.
- The Date selector sometimes shows dates outside the range of available data resulting in a blank report. Change the dates to be within the last 28 days to resolve the issue.
Cloud Call Queue Agent Timeline report
Interpret the report
Callout | Title | Description |
---|---|---|
1 | Date | The start and end date of the report. Use this slider to select the date range to report on. See Known Issues |
2 | Agent Username | The agents to report on. If the full username is user@microsoft.com, then this value is: user Default: All |
3 | Call Queue Resource Accounts | The Resource Accounts to be reported on. To see the calls for a specific Call queue, select all the resource accounts assigned to that Call queue. Default: All |
4 | Quick Stats -> Incoming Calls | The breakdown shows the total number of calls answered, the average number of calls answered per agent and the average call length of answered calls handled. TIP: Hover over any metric in this section to display a tooltip with the individual calls that make up the total. |
5 | Calls Answered (by date) | The breakdown shows the number of agent-answered calls by date |
6 | The breakdown shows how many calls each agent in the queue answered and the average call duration for those calls. | |
7 | Calls Answered (by hour) | The breakdown shows the number of agent-answered calls by hour |
8 | The breakdown shows the number of calls answered by agent, by Call Queue. Column definitions:
|
Known issues
- Only 28 days of call history are available. Call queue and Agent data is considered personal data and is subject to data privacy retention policies.
- The Call queues resource account ID's name instead of Call queue name is shown. To show all the traffic for a Call queue, you must select all the resource accounts assigned to the Call queue.
- The Agent's UPN name instead of their name is shown.
- The Date selector sometimes shows dates outside the range of available data resulting in a blank report. Change the dates to be within the last 28 days to resolve the issue.
- In some scenarios, the agent answered call count might be different than the number of calls shown in the Teams client call history. The Teams client call history is correct. Support is investigating, but there's no estimated time to repair available at this time.
- When an agent answers a call in a different call queue due to redirection through Call Overflow exception handling, they are displayed in the original call queue where the exception occurred instead of the one they answered the call in.
Auto attendant and Call queue historical reports field definitions
fAutoAttendant table field description
Name | Data Type | Description |
---|---|---|
AA Name | Text | Name of the resource account attached to the Auto Attendant If the full Resource Account name is aa_test@microsoft.com, then this value is: aa_test |
AA Start Date Local | Date | Auto Attendant call start date - Local (based on selected UTC Offset) |
AA Start Hour | Whole Number | Auto Attendant call start hour - Local (based on selected UTC Offset) |
AA Start Time Local | Date/time | Auto Attendant call start time - Local (based on selected UTC Offset) |
AA Start Time UTC | Date/time | Auto Attendant call start time - UTC |
AACallerActionCount | Whole number | Summarize: Sum Count of actions selected by caller in Auto Attendant during the call |
AACallerActionCountAverage (Measure) | Whole number | Average of AACallerActionCount - zero instead of blank |
AACallFlow | Text | See Auto Attendant dimensions -> AutoAttendantCallFlow |
AACallResult | Text | See Auto Attendant dimensions -> AutoAttendantCallResult |
AACallResultLegend | Text | Legend items for on AACallResult. Possible values are:
|
AAChainDuration | Decimal number | Summarize: Sum Duration of call in Auto Attendant |
AAChainDurationAverage (Measure) | Decimal number | Average of AAChainDuration - zero instead of blank |
AAChainIndex | Whole Number | |
AAConnectivityType | Text | See Common dimensions -> PSTNConnectivityType |
AACount | Whole Number | Summarized: Sum Number of Auto Attendants involved in call |
AADirectorySearchMethod | Text | See Auto Attendant dimensions -> AutoAttendantDirectorySearchMethod |
AADirectorySearchMethodCountDTMF (Measure) | Whole number | Count of calls that used DTMF to search the directory - zero instead of blank |
AADirectorySearchMethodCountVoice (Measure) | Whole number | Count of calls that used Voice to search the directory - zero instead of blank |
AADirectorySearchMethodLegend | Text | Legend items for AADirectorySearchMethod. Possible values are:
|
AATransferAction | Text | See Auto Attendant Dimensions -> AutoAttendantTransferAction |
Call Duration Seconds | Whole number | Call duration |
Call End Time Local | Date/time | Call end time - Local (based on selected UTC Offset) |
Call End Time UTC | Date/time | Call end time - UTC |
Call Start Time Local | Date/time | Call start time - Local (based on selected UTC Offset) |
Call Start Time UTC | Date/time | Call start time - UTC |
ConferenceID (Per Day only) | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
DialogID (Per Day only) | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
DocumentID (Per Day only) | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
MM-DD | Text | Auto Attendant call month-day |
PSTNMinutes | Whole number | Summarize: Sum Total minute usage |
TotalCallCount | Whole number | Summarize: Sum Always 1 - used to provide sum of all calls |
TotalCallCountSum (Measure) | Whole number | Sum of TotalCallCount |
Cloud Call Queue Analytics report
fCallQueueAnalytics table field description
Name | Data Type | Description |
---|---|---|
Call Count | Whole number | Summarize: Sum Number of calls |
Call Count Abandoned | Whole number | Summarize: Sum Number of abandoned calls |
Call Count Sum (Measure) | Whole number | Call Count Sum - zero instead of blank |
Call Count Sum Abandoned (Measure) | Whole number | Call Count Abandoned - zero instead of blank |
Call Duration Seconds | Whole number | Summarize: Sum Call duration |
Call Duration Seconds AVG (Measure) | While number | Average Call Duration Seconds |
Call End Time Local | Date/time | Call end time - Local (based on selected UTC Offset) |
Call End Time UTC | Date/time | Call end time - UTC |
Call Queue Agent Count | Whole number | Summarize: Sum Number of agents configured in the Call queue |
Call Queue Agent Opt In Count | Whole number | Summarize: Sum Number of agents opted-in to the Call queue |
Call Queue Call Result | Text | See Call Queue Dimensions -> CallQueueCallResult |
Call Queue Call Result Legend | Text | Legend items for Call Queue Result. Possible values:
|
Call Queue Target Type | Text | See Call Queue Dimensions -> CallQueueTargetType |
Call Queue Target Type Legend | Text | Legend items for Call Queue Target Type. Possible values:
|
Call Start Time Local | Date/time | Call start time - Local (based on selected UTC Offset) |
Call Start Time UTC | Date/time | Call start time - UTC |
ConferenceID (Per Call only) | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
CQ Name | Text | Name of resource account attached to Call Queue If the full Resource Account name is cq_test@microsoft.com, then this value is: cq_test |
CQHour | Whole Number | Call queue call start hour |
Date | Date/time | Call queue call start date and time (hour) |
DateTimeCQName | Text | Unique key for filtering on fCallQueueFinalStateAction |
DialogID (Per Call only) | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
DocumentID (Per Call only) | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
PSTN Connectivity Type | Text | See Common Dimensions -> PSTNConnectivityType |
PSTN Total Minutes | Whole number | Summarize: Sum Total minutes usage for PSTN calls |
fCallQueueFinalStateAction table field description
Name | Data Type | Description |
---|---|---|
Average Call Duration (Seconds) | Decimal number | Summarize: Sum Average call duration in seconds for abandoned calls |
Average Call Duration (Seconds) Average (Measure) | Whole number | Average of Average Call Duration (Seconds) - zero instead of blank |
Average Call Queue Duration (Sec) | Decimal number | Summarize: Sum Average waiting time in seconds for answered calls |
Average Call Queue Duration (Sec) (Measure) | Whole number | Average of Average Call Queue Duration (Sec) - zero instead of blank |
Call Count | Whole number | Summarize: Sum Number of calls |
Call Queue Call Result | Text | See Call Queue Dimensions -> CallQueueCallResult |
Call Queue Call Result Legend | Text | Legend items for Call Queue Call Result. Possible values:
|
Call Queue Final State Action | Text | See Call Queue Dimensions -> CallQueueFinalStateAction |
CQ Name | Text | Name of resource account attached to Call Queue If the full Resource Account name is cq_test@microsoft.com, then this value is: cq_test |
CQHour | Number | Hour that the call took place in |
Date | Date/time | Call Queue call start date and time (hour) |
DateTimeCQName | Text | Unique key for filtering on fCallQueueFinalStateAction |
IsAbandoned | True/false | True if the caller hangs up before the agent answers |
Local Date | Date/time | Local date/time (based on selected UTC Offset) |
UTC Date | Date/time | UTC date/time |
Cloud Call Queue Agent Timeline report
fAgentTimelineAnalytics table field description
Name | Data Type | Description |
---|---|---|
Agent Name | Text | User UPN If the full username is user@microsoft.com, then this value is: user |
AgentTimelineAnalyticsSummaryLink | Text | Used to link with fAgentTimelineAnalyticsSummary for the pop-up tooltip |
Call Duration (HH:MM:SS) | Text | Call Duration (Minutes) converted to HH:MM:SS |
Call Duration (Minutes) | Whole number | Summarize: Sum Total call duration of answered Call queue calls in minutes |
Call Duration (Second) | Whole number | Summarize: Sum Total call duration of answered Call queue calls in seconds |
Call End Time Local | Date/time | Call end time - Local (based on selected UTC Offset) |
Call End Time UTC | Date/time | Call end time - UTC |
Call Start Time Local | Date/time | Call start time - Local (based on selected UTC Offset) |
Call Start Time UTC | Date/time | Call start time - UTC |
ConferenceID | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
CQ Name | Text | Name of resource account attached to Call Queue If the full Resource Account name is cq_test@microsoft.com, then this value is: cq_test |
DateTime | DateTime | Date of call |
DialogID | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
DocumentID | Text | Used for troubleshooting purposes - provide this information when opening a ticket |
Hour (Measure) | Whole number | Hour of call |
Total Call Count | Whole number | Summarize: Sum Number of calls presented to agent |
fAgentTimelineAnalyticsSummary table field description
Name | Data Type | Description |
---|---|---|
Agent Name | Text | User UPN If the full username is user@microsoft.com, then this value is: user |
AgentTimelineAnalyticsLink | Text | Used to link with fAgentTimelineAnalytics for the pop-up tooltip |
Average Call Duration (Seconds) | Decimal number | Summarize: Sum The average duration of answered Call queue calls in seconds |
Average Call Duration (Seconds) - zero instead of blank (Measure) | Whole number | Average Call Duration (Seconds) - zero instead of blank |
CQ Name | Text | Name of resource account attached to Call Queue If the full Resource Account name is cq_test@microsoft.com, then this value is: cq_test |
Date | Date | Date of call |
Hour | Whole number | Hour of call |
MM-DD | Text | Month and day of call |
Total Call Count | Whole number | Summarize: Sum Number of calls presented to agent |
Total Call Count divided by Count of Agent Name (Measure | Whole number | Average call count per agent |
Total Call Count Sum (Measure) | Whole number | Sum of Total Call Count - zero instead of blank |
Total Call Duration (HH:MM:SS) | Text | Call Duration (Minutes) converted to HH:MM:SS |
Total Call Duration (Minutes) | Whole number | Summarize: Sum Total call duration of answered Call queue calls in minutes |
Data Limits
Each report tab retrieves data for all Auto attendants, Call queues, or agents the user is authorized for in the tenant for the selected date range. This data retrieval occurs regardless of the specific Resource Accounts or Agent selected on the report. Filtering to show only the requested information occurs locally.
Each report tab is restricted to retrieving 90,000 rows.
If there's a large number of calls being processed each day, it's possible that the report won't show all calls for all days within the selected date range. There's no notification when this exclusion occurs. Try shortening the date range to avoid this issue.
If shortening the date range isn't sufficient, it's possible to increase the number of rows that can be retrieved by modifying the report as follows:
- Select Transform data in the ribbon bar to open the Power Query Editor.
- Select LimitResultRowsCount on the left-hand side.
- Change the value in the field to the right to a larger number.
- Close the Power Query Editor window.
- Select Yes when prompted to apply the changes now. The report should automatically refresh.
- Save your report.
The maximum number of rows that can be returned is 200,000.
Setting the value to a number higher than 200,000 has no effect as this value is a hard-coded limit on the server.
Increasing the limit results in longer execution and response times.
Report Execution Time Limits
Increasing the maximum number of rows that can be returned results in longer execution and response times meaning the report might time out before the data can be returned. The report execution time can be increased by modifying the report as follows:
- Select on the Transform data in the ribbon bar to open the Power Query Editor.
- Select on ReportExecutionMinutes on the left-hand side.
- Change the value in the field to the right to a larger number.
- Close the Power Query Editor window.
- Select Yes when prompted to apply the changes now. The report should automatically refresh.
- Save your report.
Customization
You can customize certain visualization aspects of the reports, such as adding or removing fields to be shown in the various visualizations, changing chart type, and more.
Change color schema
The following steps assume you already completed the installation steps.
Perform the following steps:
Select View tab on the ribbon.
Select the color schema from the drop-down list.
Dimensions and measurements
The following dimensions and measurements are available to be used.
Common dimensions
These dimensions are common to both Auto attendants and Call queues:
Name (Type) | Possible Values | Description |
---|---|---|
ConferenceId (Text) |
GUID | Call identifier |
Date (DateTime) |
Date of call (UTC) | |
DialogId (Text) |
GUID | Call identifier |
DocumentId (Text) |
GUID | Call identifier |
Duration (Whole Number) |
Duration of call, in seconds | |
EndTime (DateTime) |
Time call ended (UTC) | |
FirstIsCaller (Boolean) |
First and Second endpoint classification | |
FirstUPN (Text) |
The user principal name (UPN) of the first endpoint's user | |
Hour (Text) |
Hour call started (UTC) | |
Minute (Text) |
Minute call started (UTC) | |
PSTNCallDuration (Whole Number) |
Duration of the call | |
PSTNCallType (Text) |
||
External | Call is coming from outside the tenant | |
Internal | Call is coming from within the tenant | |
PSTNConnectivityType (Text) |
||
CallingPlan | The call arrived on a Calling Plan number | |
DirectRouting | The call arrived on a Direct Routing number | |
ACS Call | The call arrived from the web (click2call) | |
Second (Text) |
Second call started (UTC) | |
SecondUPN (Text) |
The user principal name (UPN) of the second endpoint's user | |
TenantId (Text) |
Tenant ID | |
Timestamp (DateTime) |
Time record was written (UTC) | |
UserStartTimeUTC (DateTime) |
Time call started (UTC) |
Auto attendant dimensions
Name (Type) | Possible Values | Description |
---|---|---|
AutoAttendantCallFlow (Text) |
Encapsulates the different states of Auto Attendant call | |
abs_search | A dial-by-name search occurred | |
announcement | An announcement was played | |
automatic_menu | Default call routing | |
call_termination | Call was ended, see AutoAttendantCallResult | |
call_transfer | Call was transferred, see AutoAttendantCallResult | |
first_level_menu | Transition state - can be ignored | |
main_menu | Greeting message was played | |
speech_input_confirmation | Caller used voice input | |
user_selection | Caller used touch tone key entry | |
AutoAttendantCallResult (Text) |
Final call result | |
failed_to_establish_media | The media portion of the call couldn't be established | |
failover_to_operator | Call transferred to operator typically due to a system error | |
oaa_chain_too_long | Too many legs in the AA | |
oaa_session_too_long | AA session lasted too long | |
service_declined | AA didn't accept the call | |
service_terminated | AA configuration disconnects the call or call hung up | |
terminated_automatic_selection | AA configuration disconnects the calls | |
terminated_no_operator | All terminated due to error no operator defined | |
terminated_transfer_failed | Call terminated as transfer failed - typically to external number | |
transfer_in_progress | AA->AA transfer | |
transferred_to_operator | Call was transferred to operator | |
transferred_to_cq | Call was transferred to Call queue | |
transferred_to_receptionist | Same as transferred_to_operator | |
transferred_to_self | Call was returned to the start of the AA | |
transferred_to_shared_voicemail | Call was transferred to shared voicemail | |
transferred_to_user | Call was transferred to a user | |
unknown | An unknown condition occurred | |
user_terminated | Caller hung up | |
AutoAttendantCallerActionCounts (Whole Number) |
The number of actions (touch tone key or voice entries) the caller performed | |
AutoAttendantChainDurationInSecs (Real Number) |
The number of seconds the call remained in this portion of the call flow | |
AutoAttendantChainIndex (Whole Number) |
||
AutoAttendantChainStartTime (DateTime) |
The start time of this portion of the call flow | |
AutoAttendantCount (Whole Number) |
How many auto attendants the call transitioned through | |
AutoAttendantDirectorySearchMethod (Text) |
Directory search method | |
abs_search_dtmf | Touch tone | |
abs_search_voice | Voice | |
AutoAttendantId (Text) |
Auto Attendant GUID | |
AutoAttendantIdentity (Text) |
Resource account URI the call arrived on | |
AutoAttendantTransferAction (Text) |
Call transfer target type | |
AA | Transferred to an AA | |
CQ | Transferred to a CQ | |
external_pstn | Transferred to an external number | |
shared voicemail | Transferred to shared voicemail | |
Unknown | Unknown action | |
HasAA (Boolean) |
Is AA involved in call |
Call queue dimensions
Name (Type) | Possible Values | Description |
---|---|---|
CallQueueAgentCount (Whole Number) |
Number of agents in Call queue | |
CallQueueAgentOptInCount (Whole Number) |
Number of agents opted-in to Call queue | |
CallQueueCallResult (Text) |
Call queue call final state | |
agent_joined_conference | Call answered - conference mode CQ | |
callback_call_timed_out | Call back call timed out | |
declined | ||
disconnected | ||
error | ||
failed | ||
invalid | ||
overflown | Overflow condition met | |
timed_out | Timeout condition met | |
no_agent | No Agent condition met | |
transferred_to_agent | Call answered - transfer mode CQ | |
transferred_to_callback_caller | Callback call answered by agent | |
CallQueueDurationSeconds (Real Number) |
Call duration in the Call queue | |
CallQueueFinalStateAction (Text) |
Call queue final action | |
disconnect | time_out calls | |
disconnect_with_busy | overflown calls | |
failed_to_accept_call | Call queue couldn't accept the call | |
forward | Call was forwarded to a Person in the organization or externally | |
shared_voicemail | Call was sent to shared voicemail | |
other | Some other condition occurred | |
voicemail | Call was sent to personal voicemail | |
CallQueueId (Text) |
Call queue GUID | |
CallQueueIdentity (Text) |
Resource account URI the call arrived on | |
CallQueueTargetType (Text) |
Call redirection target | |
ApplicationEndpoint | Another voice applications | |
Mailbox | Shared voicemail | |
Other | Some other condition occurred | |
Phone | External transfer | |
User | User in the tenant | |
HasCQ (Boolean) |
Is CQ involved in call | |
TransferredFromCQId (Text) |
Call queue GUID call was transferred from | |
TransferredFromCallQueueIdentity (Text) |
Resource account URI the call was transferred from |
Measurements
Name (Type) | Possible Values | Description |
---|---|---|
AvgAutoAttendantChainDurationSeconds (Real Number) |
The average call duration within each portion of the auto attendant call flow | |
AvgCallDuration (Real Number) |
The average call duration in seconds | |
AvgCallQueueDurationSeconds (Real Number) |
The average call queue duration in seconds | |
PSTNTotalMinutes (Real Number) |
Total call duration in minutes | |
TotalAudioStreamDuration (Real Number) |
||
TotalCallCount (Whole Number) |
Total number of calls |
Constructing a valid query
A valid query consists of several attributes in a JSON object:
{
"Filters":[
{
"DataModelName":"Date",
"Value":"2022-04-01",
"Operand":4
},
{
"DataModelName":"Date",
"Value":"2022-04-30",
"Operand":6
}
],
"Dimensions":[
{
"DataModelName":"AutoAttendantIdentity"
},
{
"DataModelName":"AutoAttendantDirectorySearchMethod"
}
],
"Measurements":[
{
"DataModelName":"PSTNTotalMinutes"
},
{
"DataModelName":"TotalCallCount"
}
],
"Parameters":{
"UserAgent":"Power BI Desktop"
},
"LimitResultRowsCount":100000
}
Required fields
Filters: used to filter data returned by VAAC
- DataModelName should be one of the supported dimensions
- Value should be in the correct format (datetime, string, number etc.)
- Operands:
- 0 - Equals
- 1 - Not Equals
- 2 - Contains
- 3 - Begins With
- 4 - Greater Than
- 5 - Greater Than or Equal To
- 6 - Less Than
- 7 - Less Than or Equal To
- 8 - Does Not Contain
- 9 - Does Not Begin With
Dimensions:
- DataModelName should be one of the supported dimensions
Measurements:
- DataModelName should be one of the supported measurements
Parameters: Currently only UserAgent is supported.
LimitResultRowsCount: the max count of rows returned by VAAC
Accessing VAAC outside of Power BI
Any application that can access RESTful web services can use the VAAC API to retrieve historical data. In the following example, Postman is used.
Preparation
- Download Postman.
- Import the folder
postman
in the downloaded zip file instructions into Postman.
Accessing VAAC using Postman
Select VAAC - msit on the top right No Environment drop-down.
Select Environments on the left hand rail menu.
Select VAAC - msit under Globals.
Replace userName, password, and tenantId with the applicable credentials.
Select Reset All in the top right corner.
Select Save.
Select Collections on the left hand rail menu.
Select Config API Access Token - Prod and navigate to the Body tab.
Select Send.
An access token is returned.
If an access token isn't returned, check your credentials to make they have sufficient permissions.
Select VAAC ConfigAPI Prod and navigate to the Params tab.
- Compress the query as outlined
- URL encode the compressed result as outlined
Fill in your query string.
Select Send.
Reading the result
After you submit your input, there are a couple of possible results:
If the input is invalid, an error message with the actual reason is returned
If the input is valid, the result looks like this:
In this case, the data is in the "dataResult" field in the same order requested in the query dimension and measurements attributes.
Compress the JSON query
The VAAC API only accepts GZip-compressed or Base64-encoded strings as input.
Find any website to compress the JSON blob using GZIP or Base64.
GZIP output should look like this:
H4sIAAAAAAAACq2SQWsCMRCF7/6KkLNC3EoPe9u6FISuFbW9lB4GM9TQbEaSCSLif+9mV4uCBwXnMkze5L0vkH1PCCFfjWX0QeZfaWxqf+xJLIGhIo12CjXKPM0o+2cLn2BjEjKVZQM1Gqjhhfy+QQ9Oy3x0PDz0H5HypK6nPJ9SUv9uV2RpanTBkLvxiUVkKpjRaXA80ejY8E7eg3/hUBqPKya/WyD41bpCXpP+tzvjrBBC9NjA8o2ks8VyuiQGWxkXGcNdkO3FMVg7puj4GtAMfLPa/Y2Tk/wI6IufhjHl0xa9eJmIEsMv06Y16cLlm6kNzzFEy3Pahi4kH6pUvcMfrAhUU3oCAAA=
Base64 output should look like this:
ew==
IkZpbHRlcnMiOls=
ew==
IkRhdGFNb2RlbE5hbWUiOiJEYXRlIiw=
IlZhbHVlIjoiMjAyMi0wNC0wMSIs
Ik9wZXJhbmQiOjQ=
fSw=
ew==
IkRhdGFNb2RlbE5hbWUiOiJEYXRlIiw=
IlZhbHVlIjoiMjAyMi0wNC0zMCIs
Ik9wZXJhbmQiOjY=
fQ==
XSw=
IkRpbWVuc2lvbnMiOls=
ew==
IkRhdGFNb2RlbE5hbWUiOiJBdXRvQXR0ZW5kYW50SWRlbnRpdHki
fSw=
ew==
IkRhdGFNb2RlbE5hbWUiOiJBdXRvQXR0ZW5kYW50RGlyZWN0b3J5U2VhcmNoTWV0aG9kIg==
fQ==
XSw=
Ik1lYXN1cmVtZW50cyI6Ww==
ew==
IkRhdGFNb2RlbE5hbWUiOiJQU1ROVG90YWxNaW51dGVzIg==
fSw=
ew==
IkRhdGFNb2RlbE5hbWUiOiJUb3RhbENhbGxDb3VudCI=
fQ==
XSw=
IlBhcmFtZXRlcnMiOns=
IlVzZXJBZ2VudCI6IlBvd2VyIEJJIERlc2t0b3Ai
fSw=
IkxpbWl0UmVzdWx0Um93c0NvdW50IjoxMDAwMDA=
fQ==
URL-Encode the compressed JSON query
The GZIP or Base64 compressed JSON query must be URL encoded.
GZIP URL encoded output looks like this:
H4sIAAAAAAAACq2SQWsCMRCF7%2F6KkLNC3EoPe9u6FISuFbW9lB4GM9TQbEaSCSLif%2B9mV4uCBwXnMkze5L0vkH1PCCFfjWX0QeZfaWxqf%2BxJLIGhIo12CjXKPM0o%2B2cLn2BjEjKVZQM1Gqjhhfy%2BQQ9Oy3x0PDz0H5HypK6nPJ9SUv9uV2RpanTBkLvxiUVkKpjRaXA80ejY8E7eg3%2FhUBqPKya%2FWyD41bpCXpP%2BtzvjrBBC9NjA8o2ks8VyuiQGWxkXGcNdkO3FMVg7puj4GtAMfLPa%2FY2Tk%2FwI6IufhjHl0xa9eJmIEsMv06Y16cLlm6kNzzFEy3Pahi4kH6pUvcMfrAhUU3oCAAA%3D
Base64 URL encoded output looks like this:
%0Aew%3D%3D%0AIkZpbHRlcnMiOls%3D%0Aew%3D%3D%0AIkRhdGFNb2RlbE5hbWUiOiJEYXRlIiw%3D%0AIlZhbHVlIjoiMjAyMi0wNC0wMSIs%0AIk9wZXJhbmQiOjQ%3D%0AfSw%3D%0Aew%3D%3D%0AIkRhdGFNb2RlbE5hbWUiOiJEYXRlIiw%3D%0AIlZhbHVlIjoiMjAyMi0wNC0zMCIs%0AIk9wZXJhbmQiOjY%3D%0AfQ%3D%3D%0AXSw%3D%0AIkRpbWVuc2lvbnMiOls%3D%0Aew%3D%3D%0AIkRhdGFNb2RlbE5hbWUiOiJBdXRvQXR0ZW5kYW50SWRlbnRpdHki%0AfSw%3D%0Aew%3D%3D%0AIkRhdGFNb2RlbE5hbWUiOiJBdXRvQXR0ZW5kYW50RGlyZWN0b3J5U2VhcmNoTWV0aG9kIg%3D%3D%0AfQ%3D%3D%0AXSw%3D%0AIk1lYXN1cmVtZW50cyI6Ww%3D%3D%0Aew%3D%3D%0AIkRhdGFNb2RlbE5hbWUiOiJQU1ROVG90YWxNaW51dGVzIg%3D%3D%0AfSw%3D%0Aew%3D%3D%0AIkRhdGFNb2RlbE5hbWUiOiJUb3RhbENhbGxDb3VudCI%3D%0AfQ%3D%3D%0AXSw%3D%0AIlBhcmFtZXRlcnMiOns%3D%0AIlVzZXJBZ2VudCI6IlBvd2VyIEJJIERlc2t0b3Ai%0AfSw%3D%0AIkxpbWl0UmVzdWx0Um93c0NvdW50IjoxMDAwMDA%3D%0AfQ%3D%3D
Important
The VAAC API is limited to returning a maximum of 200,000 rows per query.
Requests into the system are throttled based on the IP address making the call, the recognized tenant identity in the auth header, as well as the calling service in order to prevent a single client, tenant, or service from monopolizing the resources.
Version 3.x.x history and support status
Refer to: Teams Auto Attendant & Call Queue Historical Reports - Change Log.docx in the downloaded zip file for a detailed list of changes.
Version | Date Published | Supported | Filename | Description |
---|---|---|---|---|
3.1.8 | August 12, 2024 | Yes | Teams Auto Attendant & Call Queue Historical Reports V3.1.7 | Bug fix for Date slicer on Call Queue tab |
3.1.7 | July 15, 2024 | No | Teams Auto Attendant & Call Queue Historical Reports V3.1.7 | Improved support for authorized users, removed original reporting templates |
3.1.6 | April 15, 2024 | No | Teams Auto Attendant & Call Queue Historical Reports V3.1.6 | Support click2call, callback, authorized users, and some visuals changed due to deprecation |
3.1.5 | January 29, 2024 | No | Teams Auto Attendant & Call Queue Historical Reports V3.1.5 | Corrected an error with the Per Day query logic for fAgentTimelineAnalytics and fAgentTimelineAnalyticsSummary |
3.1.4 | January 24, 2024 | No | Teams Auto Attendant & Call Queue Historical Reports V3.1.4 | Per day reporting for large volume customers, accessibility improvements for screen readers |