End of call survey
Note
End of Call Survey is currently supported only for our JavaScript / Web SDK.
Prerequisites
Azure Communications Services provides monitoring and analytics features via Azure Monitor Logs overview and Azure Monitor Metrics. Each Azure resource requires its own diagnostic setting, which defines the following criteria:
- Categories of logs and metric data sent to the destinations defined in the setting. The available categories will vary for different resource types.
- One or more destinations to send the logs. Current destinations include Log Analytics workspace, Event Hubs, and Azure Storage.
- A single diagnostic setting can define no more than one of each of the destinations. If you want to send data to more than one of a particular destination type (for example, two different Log Analytics workspaces), then create multiple settings. Each resource can have up to five diagnostic settings.
Important
You must enable a Diagnostic Setting in Azure Monitor to send the log data of your surveys to a Log Analytics workspace, Event Hubs, or an Azure storage account to receive and analyze your survey data. If you do not send survey data to one of these options your survey data will not be stored and will be lost The following are instructions for configuring your Azure Monitor resource to start creating logs and metrics for your Communications Services. For detailed documentation about using Diagnostic Settings across all Azure resources, see: Enable logging in Diagnostic Settings
Note
Under diagnostic setting name please select “Call Survey” to enable the logs for end of call survey.
Overview
The implementation of end-of-call survey logs represents an augmented functionality within Azure Communication Services (Azure Communication Services), enabling Contoso to submit surveys to gather customers' subjective feedback on their calling experience. This approach aims to supplement the assessment of call quality beyond objective metrics such as audio and video bitrate, jitter, and latency, which may not fully capture whether a customer had a satisfactory or unsatisfactory experience. By leveraging Azure logs to publish and examine survey data, Contoso gains insights for analysis and identification of areas that require improvement. These survey results serve as a valuable resource for Azure Communication Services to continuously monitor and enhance quality and reliability. For more details about End of call survey
The End of Call Survey is a valuable tool that allows you to gather insights into how end-users perceive the quality and reliability of your JavaScript/Web SDK calling solution. The accompanying logs contain crucial data that helps assess end-users' experience, including:
Overall Call: Responses indicate how a call participant perceived their overall call quality.
- Audio: Responses indicate if the user perceived any audio issues.
- Video: Responses indicate if the user perceived any video issues.
- Screen Share: Responses indicate if the user perceived any screen share issues. In addition to the above, the optional tags in the responses offer further insights into specific types of issues related to audio, video, or screen share.
By analyzing the data captured in the End of Call Survey logs, you can pinpoint areas that require improvement, thereby enhancing the overall user experience.
Resource log categories
Communication Services offers the following types of logs that you can enable:
- End of Call Survey logs - provides basic information related to the survey at the end of the call
Properties
Property | Description |
---|---|
Timegenerated |
This field represents the timestamp (UTC) of when the log was generated |
CorrelationId |
The ID for correlated events can be used to identify correlated events between multiple tables |
Category |
The log category of the event. Logs with the same log category and resource type will have the same properties fields |
ResourceId |
The full-length identifier of the user’s resource |
OperationName |
The operation associated with log record |
OperationVersion |
The API-version is associated with the operation or version of the operation if the operationName was performed using an API |
CallId |
The identifier of the call used to correlate. Can be used to identify correlated events between multiple tables |
ParticipantId |
The ID of the participant |
SurveyId |
The identifier of a survey submitted by a participant. Can be used to identify correlated events between multiple tables |
OverallCallIssues |
This field indicates any issue related to the overall call, and its values are a comma-separated list of descriptions |
AudioIssues |
This field indicates any issue related to the audio experience, and its values are a comma-separated list of descriptions |
VideoIssues |
This field indicates any issue related to the video experience, and its values are a comma-separated list of descriptions |
ScreenshareIssues |
This field indicates any issue related to the screenshare experience, and its values are a comma-separated list of descriptions |
OverallRatingScore |
This field represents the overall call experience rated by the participant |
OverallRatingScoreLowerBound |
This field represents the minimum value of the OverallRatingScore scale |
OverallRatingScoreUpperBound |
This field represents the maximum value of the OverallRatingScore scale |
OverallRatingScoreThreshold |
This field indicates the value above which the OverallRatingScore indicates better quality |
AudioRatingScore |
This field represents the audio experience rated by the participant |
AudioRatingScoreLowerBound |
This field represents the minimum value of the AudioRatingScore scale |
AudioRatingScoreUpperBound |
This field represents the maximum value of the AudioRatingScore scale |
AudioRatingScoreThreshold |
This field indicates the value above which the AudioRatingScore indicates better quality |
VideoRatingScore |
This field represents the video experience rated by the participant |
VideoRatingScoreLowerBound |
This field represents the minimum value of the VideoRatingScore scale |
VideoRatingScoreUpperBound |
This field represents the maximum value of the VideoRatingScore scale |
VideoRatingScoreThreshold |
This field indicates the value above which the VideoRatingScore indicates better quality |
ScreenshareRatingScore |
This field represents the screenshare experience rated by the participant |
ScreenshareLowerBound |
This field represents the minimum value of the ScreenshareRatingScore scale |
ScreenshareUpperBound |
This field represents the maximum value of the ScreenshareRatingScore scale |
ScreenshareRatingThreshold |
This field indicates the value above which the ScreenshareRatingScore indicates better quality |
Examples logs
Example for the overall call
[
{
"TimeGenerated":"2023-04-12T14:21:35.0700920Z",
"CorrelationId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"Category":"CallSurvey",
"ResourceId":"/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/ACS-DATALYTICS-SPGW-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-DATALYTICS-ALLTELEMETRY",
"OperationName":"CallSurvey",
"OperationVersion":"0.0"
"properties":
{
"CallId":"fcc1234f-ce69-ZZZZ-b73f-b036051test4",
"SurveyId":"a6dd61c4-b924-4885-96a4-a991d4c09e8b",
"ParticipantId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"OverallCallIssues":"CallCannotJoin",
"OverallRatingScore":7,
"OverallRatingScoreLowerBound":0,
"OverallRatingScoreUpperBound":10,
"OverallRatingScoreThreshold":5
}
}
]
Example for the Audio quality
[
{
"TimeGenerated":"2023-04-12T14:21:35.0700920Z",
"CorrelationId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"Category":"CallSurvey",
"ResourceId":"/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/ACS-DATALYTICS-SPGW-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-DATALYTICS-ALLTELEMETRY",
"OperationName":"EndOfCallSurvey",
"OperationVersion":"0.0"
"properties":
{
"CallId":"fcc1234f-ce69-ZZZZ-b73f-b036051test4",
"SurveyId":"a6dd61c4-xxxx-4885-96a4-a991d4c09e8b",
"ParticipantId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"AudioIssues":"NoRemoteAudio",
"AudioRatingScore":6,
"AudioRatingScoreLowerBound":0,
"AudioRatingScoreUpperBound":10,
"AudioRatingScoreThreshold":4
}
]
Example for the video quality
[
{
"TimeGenerated":"2023-04-12T14:21:35.0700920Z",
"CorrelationId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"Category":"CallSurvey",
"ResourceId":"/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/ACS-DATALYTICS-SPGW-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-DATALYTICS-ALLTELEMETRY",
"OperationName":"CallSurvey",
"OperationVersion":"0.0"
"properties":
{
"CallId":"fcc87f7f-ce69-eeed-7777-b036051faea4",
"SurveyId":"a6dd61c4-zzzz-4885-tttt-a991d4c09e8b",
"ParticipantId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"VideoIssues":"NoVideoReceived",
"VideoRatingScore":9,
"VideoRatingScoreLowerBound":0,
"VideoRatingScoreUpperBound":10,
"VideoRatingScoreThreshold":7
}
}
]
Example for the screen share
[
{
"TimeGenerated":"2023-04-12T14:21:35.0700920Z",
"TimeGenerated":"2023-04-12T14:21:35.0700920Z",
"CorrelationId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"Category":"CallSurvey",
"ResourceId":"/SUBSCRIPTIONS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/ACS-DATALYTICS-SPGW-RG/PROVIDERS/MICROSOFT.COMMUNICATION/COMMUNICATIONSERVICES/ACS-DATALYTICS-ALLTELEMETRY",
"OperationName":"EndOfCallSurvey",
"OperationVersion":"0.0"
"properties":
{
"CallId":"1237f7f-ce69-ffff-b73f-b036051f6666",
"SurveyId":"a6dd6bbb-b924-zzzz-96a4-a991d4c01000",
"ParticipantId":"aaaa0000-bb11-2222-33cc-444444dddddd",
"ScreenshareIssues":"StoppedUnexpectedly,CannotPresent",
"ScreenshareRatingScore":2,
"ScreenshareRatingScoreLowerBound":0,
"ScreenshareRatingScoreUpperBound":10,
"ScreenshareRatingScoreThreshold":3
}
}
]