Skip to content

Commit c9cc06c

Browse files
authored
Merge pull request #278014 from viniciusl-msft/viniciusl/survey-native
Native Survey Docs
2 parents 7e44423 + ef0d42d commit c9cc06c

File tree

6 files changed

+783
-210
lines changed

6 files changed

+783
-210
lines changed

articles/communication-services/concepts/voice-video-calling/end-of-call-survey-concept.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,7 @@ ms.subservice: calling
1717

1818
# End of Call Survey overview
1919

20-
21-
> [!NOTE]
22-
> End of Call Survey is currently supported only for our JavaScript / Web SDK.
23-
24-
The End of Call Survey provides you with a tool to understand how your end users perceive the overall quality and reliability of your JavaScript / Web SDK calling solution.
25-
20+
The End of Call Survey provides you with a tool to understand how your end users perceive the overall quality and reliability of your Calling SDK solution.
2621

2722
## Purpose of the End of Call Survey
2823
It’s difficult to determine a customer’s perceived calling experience and determine how well your calling solution is performing without gathering subjective feedback from customers. You can use the End of Call Survey to collect and analyze customers **subjective** opinions on their calling experience as opposed to relying only on **objective** measurements such as audio and video bitrate, jitter, and latency, which may not indicate if a customer had a poor calling experience.

articles/communication-services/tutorials/end-of-call-survey-tutorial.md

Lines changed: 14 additions & 204 deletions
Original file line numberDiff line numberDiff line change
@@ -5,230 +5,40 @@ description: Learn how to use the End of Call Survey to collect user feedback.
55
author: amagginetti
66
ms.author: amagginetti
77
manager: mvivion
8-
98
services: azure-communication-services
109
ms.date: 4/03/2023
1110
ms.topic: tutorial
1211
ms.service: azure-communication-services
1312
ms.subservice: calling
13+
zone_pivot_groups: acs-plat-web-ios-android-windows
1414
---
1515

16-
17-
1816
# Use the End of Call Survey to collect user feedback
1917

20-
> [!NOTE]
21-
> End of Call Survey is currently supported only for our JavaScript / Web SDK.
22-
23-
This tutorial shows you how to use the Azure Communication Services End of Call Survey for JavaScript / Web SDK.
24-
18+
This tutorial shows you how to use the Azure Communication Services End of Call Survey.
2519

2620
## Prerequisites
2721

2822
- An Azure account with an active subscription. [Create an account for free](https://azure.microsoft.com/free/?WT.mc_id=A261C142F).
29-
30-
- [Node.js](https://nodejs.org/) active Long Term Support(LTS) versions are recommended.
31-
3223
- An active Communication Services resource. [Create a Communication Services resource](../quickstarts/create-communication-resource.md). Survey results are tied to single Communication Services resources.
3324
- An active Log Analytics Workspace, also known as Azure Monitor Logs. See [End of Call Survey Logs](../concepts/analytics/logs/end-of-call-survey-logs.md).
3425
- To conduct a survey with custom questions using free form text, you need an [App Insight resource](../../azure-monitor/app/create-workspace-resource.md#create-a-workspace-based-resource).
3526

27+
::: zone pivot="platform-web"
28+
[!INCLUDE [End of Call Survey for Web](./includes/end-of-call-survey-web.md)]
29+
::: zone-end
3630

37-
> [!IMPORTANT]
38-
> End of Call Survey is available starting on the version [1.13.1](https://www.npmjs.com/package/@azure/communication-calling/v/1.13.1) of the Calling SDK. Make sure to use that version or later when trying the instructions.
39-
40-
## Sample of API usage
41-
42-
43-
The End of Call Survey feature should be used after the call ends. Users can rate any kind of VoIP call, 1:1, group, meeting, outgoing and incoming. Once a user's call ends, your application can show a UI to the end user allowing them to choose a rating score, and if needed, pick issues they’ve encountered during the call from our predefined list.
44-
45-
The following code snips show an example of one-to-one call. After the end of the call, your application can show a survey UI and once the user chooses a rating, your application should call the feature API to submit the survey with the user choices.
46-
47-
We encourage you to use the default rating scale. However, you can submit a survey with custom rating scale. You can check out the [sample application](https://github.com/Azure-Samples/communication-services-web-calling-tutorial/blob/main/Project/src/MakeCall/CallSurvey.js) for the sample API usage.
48-
49-
50-
### Rate call only - no custom scale
51-
52-
```javascript
53-
call.feature(Features.CallSurvey).submitSurvey({
54-
overallRating: { score: 5 }, // issues are optional
55-
}).then(() => console.log('survey submitted successfully'));
56-
```
57-
58-
OverallRating is a required category for all surveys.
59-
60-
61-
### Rate call only - with custom scale and issues
62-
63-
```javascript
64-
call.feature(Features.CallSurvey).submitSurvey({
65-
overallRating: {
66-
score: 1, // my score
67-
scale: { // my custom scale
68-
lowerBound: 0,
69-
upperBound: 1,
70-
lowScoreThreshold: 0
71-
},
72-
issues: ['HadToRejoin'] // my issues, check the table below for all available issues
73-
}
74-
}).then(() => console.log('survey submitted successfully'));
75-
```
76-
77-
### Rate overall, audio, and video with a sample issue
78-
79-
``` javascript
80-
call.feature(Features.CallSurvey).submitSurvey({
81-
overallRating: { score: 3 },
82-
audioRating: { score: 4 },
83-
videoRating: { score: 3, issues: ['Freezes'] }
84-
}).then(() => console.log('survey submitted successfully'))
85-
```
86-
87-
### Handle errors the SDK can send
88-
``` javascript
89-
call.feature(Features.CallSurvey).submitSurvey({
90-
overallRating: { score: 3 }
91-
}).catch((e) => console.log('error when submitting survey: ' + e))
92-
```
93-
94-
95-
96-
## Find different types of errors
97-
98-
99-
100-
### Failures while submitting survey:
101-
102-
The API will return the following error messages if data validation fails or the survey can't be submitted.
103-
104-
- At least one survey rating is required.
105-
106-
- In default scale X should be 1 to 5. - where X is either of:
107-
- overallRating.score
108-
- audioRating.score
109-
- videoRating.score
110-
- ScreenshareRating.score
111-
112-
- \{propertyName\}: \{rating.score\} should be between \{rating.scale?.lowerBound\} and \{rating.scale?.upperBound\}.
113-
114-
- \{propertyName\}: \{rating.scale?.lowScoreThreshold\} should be between \{rating.scale?.lowerBound\} and \{rating.scale?.upperBound\}.
115-
116-
- \{propertyName\} lowerBound: \{rating.scale?.lowerBound\} and upperBound: \{rating.scale?.upperBound\} should be between 0 and 100.
117-
118-
- Please try again [Azure Communication Services failed to submit survey, due to network or other error].
119-
120-
### We will return any error codes with a message.
121-
122-
- Error code 400 (bad request) for all the error messages except one.
123-
124-
```
125-
{ message: validationErrorMessage, code: 400 }
126-
```
127-
128-
- One 408 (timeout) when event discarded:
129-
130-
```
131-
{ message: "Please try again.", code: 408 }
132-
```
133-
134-
135-
## All possible values
136-
137-
### Default survey API configuration
138-
139-
| API Rating Categories | Cutoff Value* | Input Range | Comments |
140-
| ----------- | ----------- | -------- | -------- |
141-
| Overall Call | 2 | 1 - 5 | Surveys a calling participant’s overall quality experience on a scale of 1-5. A response of 1 indicates an imperfect call experience and 5 indicates a perfect call. The cutoff value of 2 means that a customer response of 1 or 2 indicates a less than perfect call experience. |
142-
| Audio | 2 | 1 - 5 | A response of 1 indicates an imperfect audio experience and 5 indicates no audio issues were experienced. |
143-
| Video | 2 | 1 - 5 | A response of 1 indicates an imperfect video experience and 5 indicates no video issues were experienced. |
144-
| Screenshare | 2 | 1 - 5 | A response of 1 indicates an imperfect screen share experience and 5 indicates no screen share issues were experienced. |
145-
146-
147-
148-
> [!NOTE]
149-
>A question’s indicated cutoff value in the API is the threshold that Microsoft uses when analyzing your survey data. When you customize the cutoff value or Input Range, Microsoft analyzes your survey data according to your customization.
150-
151-
152-
### More survey tags
153-
| Rating Categories | Optional Tags |
154-
| ----------- | ----------- |
155-
| Overall Call | `CallCannotJoin` `CallCannotInvite` `HadToRejoin` `CallEndedUnexpectedly` `OtherIssues` |
156-
| Audio | `NoLocalAudio` `NoRemoteAudio` `Echo` `AudioNoise` `LowVolume` `AudioStoppedUnexpectedly` `DistortedSpeech` `AudioInterruption` `OtherIssues` |
157-
| Video | `NoVideoReceived` `NoVideoSent` `LowQuality` `Freezes` `StoppedUnexpectedly` `DarkVideoReceived` `AudioVideoOutOfSync` `OtherIssues` |
158-
| Screenshare | `NoContentLocal` `NoContentRemote` `CannotPresent` `LowQuality` `Freezes` `StoppedUnexpectedly` `LargeDelay` `OtherIssues` |
159-
160-
161-
### Customization options
162-
163-
You can choose to collect each of the four API values or only the ones
164-
you find most important. For example, you can choose to only ask
165-
customers about their overall call experience instead of asking them
166-
about their audio, video, and screen share experience. You can also
167-
customize input ranges to suit your needs. The default input range is 1
168-
to 5 for Overall Call, Audio, Video, and
169-
Screenshare. However, each API value can be customized from a minimum of
170-
0 to maximum of 100.
171-
172-
### Customization examples
173-
174-
175-
| API Rating Categories | Cutoff Value* | Input Range |
176-
| ----------- | ----------- | -------- |
177-
| Overall Call | 0 - 100 | 0 - 100 |
178-
| Audio | 0 - 100 | 0 - 100 |
179-
| Video | 0 - 100 | 0 - 100 |
180-
| Screenshare | 0 - 100 | 0 - 100 |
181-
182-
> [!NOTE]
183-
> A question’s indicated cutoff value in the API is the threshold that Microsoft uses when analyzing your survey data. When you customize the cutoff value or Input Range, Microsoft analyzes your survey data according to your customization.
184-
185-
## Custom questions
186-
In addition to using the End of Call Survey API you can create your own survey questions and incorporate them with the End of Call Survey results. Below you'll find steps to incorporate your own customer questions into a survey and query the results of the End of Call Survey API and your own survey questions.
187-
- [Create App Insight resource](../../azure-monitor/app/create-workspace-resource.md#create-a-workspace-based-resource).
188-
- Embed Azure AppInsights into your application [Click here to know more about App Insight initialization using plain JavaScript](../../azure-monitor/app/javascript-sdk.md). Alternatively, you can use NPM to get the App Insights dependences. [Click here to know more about App Insight initialization using NPM](../../azure-monitor/app/javascript-sdk-configuration.md).
189-
- Build a UI in your application that will serve custom questions to the user and gather their input, lets assume that your application gathered responses as a string in the `improvementSuggestion` variable
31+
::: zone pivot="platform-android"
32+
[!INCLUDE [End of Call Survey for Android](./includes/end-of-call-survey-android.md)]
33+
::: zone-end
19034

191-
- Submit survey results to Azure Communication Services and send user response using App Insights:
192-
``` javascript
193-
currentCall.feature(SDK.Features.CallSurvey).submitSurvey(survey).then(res => {
194-
// `improvementSuggesstion` contains custom, user response
195-
if (improvementSuggestion !== '') {
196-
appInsights.trackEvent({
197-
name: "CallSurvey", properties: {
198-
// Survey ID to correlate the survey
199-
id: res.id,
200-
// Other custom properties as key value pair
201-
improvementSuggestion: improvementSuggestion
202-
}
203-
});
204-
}
205-
});
206-
appInsights.flush();
207-
```
208-
User responses that were sent using AppInsights are available under your App Insights workspace. You can use [Workbooks](../../update-center/workbooks.md) to query between multiple resources, correlate call ratings and custom survey data. Steps to correlate the call ratings and custom survey data:
209-
- Create new [Workbooks](../../update-center/workbooks.md) (Your Azure Communication Services Resource -> Monitoring -> Workbooks -> New) and query Call Survey data from your Azure Communication Services resource.
210-
- Add new query (+Add -> Add query)
211-
- Make sure `Data source` is `Logs` and `Resource type` is `Communication`
212-
- You can rename the query (Advanced Settings -> Step name [example: call-survey])
213-
- Be aware that it could require a maximum of **2 hours** before the survey data becomes visible in the Azure portal.. Query the call rating data-
214-
```KQL
215-
ACSCallSurvey
216-
| where TimeGenerated > now(-24h)
217-
```
218-
- Add another query to get data from App Insights (+Add -> Add query)
219-
- Make sure `Data source` is `Logs` and `Resource type` is `Application Insights`
220-
- Query the custom events-
221-
```KQL
222-
customEvents
223-
| where timestamp > now(-24h)
224-
| where name == 'CallSurvey'
225-
| extend d=parse_json(customDimensions)
226-
| project SurveyId = d.id, ImprovementSuggestion = d.improvementSuggestion
227-
```
228-
- You can rename the query (Advanced Settings -> Step name [example: custom-call-survey])
229-
- Finally merge these two queries by surveyId. Create new query (+Add -> Add query).
230-
- Make suer the `Data source` is Merge and select `Merge type` as needed
35+
::: zone pivot="platform-ios"
36+
[!INCLUDE [End of Call Survey for iOS](./includes/end-of-call-survey-ios.md)]
37+
::: zone-end
23138

39+
::: zone pivot="platform-windows"
40+
[!INCLUDE [End of Call Survey for Windows](./includes/end-of-call-survey-windows.md)]
41+
::: zone-end
23242

23343
## Collect survey data
23444

0 commit comments

Comments
 (0)