Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku pokazano, jak używać ankiety końca rozmowy w Azure Communication Services.
Wymagania wstępne
- Konto Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Aktywny zasób usług komunikacyjnych. Utwórz zasób usług komunikacyjnych. Wyniki ankiety są powiązane z pojedynczymi zasobami usług Communication Services.
- Aktywny obszar roboczy Log Analytics, znany również jako Azure Monitor Logs. Zobacz Dzienniki ankiet na zakończenie połączenia.
- Aby przeprowadzić ankietę z pytaniami niestandardowymi przy użyciu wolnego tekstu formularza, potrzebny jest zasób usługi App Insight.
Ważne
Ankieta po zakończeniu połączenia jest dostępna od wersji 1.13.1 SDK do dzwonienia. Podczas próby wykonania instrukcji upewnij się, że używasz tej wersji lub nowszej.
- Zaleca się stosować aktywne wersje długoterminowego wsparcia (LTS) Node.js.
Przykład użycia interfejsu API
Po zakończeniu połączenia funkcja Ankieta zakończenia połączenia powinna być używana. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu rozmowy użytkownika, aplikacja może wyświetlić interfejs użytkownika umożliwiający mu wybór oceny, a w razie potrzeby wyboru problemów napotkanych podczas rozmowy ze wstępnie zdefiniowanej listy.
Poniższe fragmenty kodu źródłowego pokazują przykład połączenia jeden na jeden. Po zakończeniu rozmowy aplikacja może wyświetlić interfejs ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać API funkcji, aby przesłać wyniki ankiety zgodnie z wyborem użytkownika.
Zachęcamy do korzystania z domyślnej skali klasyfikacji. Można jednak przesłać ankietę z niestandardową skalą klasyfikacji. Przykładową aplikację możesz sprawdzić pod kątem przykładowego użycia interfejsu API.
Tylko wywołanie częstotliwości — bez skalowania niestandardowego
call.feature(Features.CallSurvey).submitSurvey({
overallRating: { score: 5 }, // issues are optional
}).then(() => console.log('survey submitted successfully'));
OverallRating jest wymaganą kategorią dla wszystkich ankiet.
Oceń tylko wywołanie — w przypadku skalowania niestandardowego i problemów
call.feature(Features.CallSurvey).submitSurvey({
overallRating: {
score: 1, // my score
scale: { // my custom scale
lowerBound: 0,
upperBound: 1,
lowScoreThreshold: 0
},
issues: ['HadToRejoin'] // my issues, check the table below for all available issues
}
}).then(() => console.log('survey submitted successfully'));
Ocena całościowa, dźwięku i wideo na podstawie przykładowego problemu
call.feature(Features.CallSurvey).submitSurvey({
overallRating: { score: 3 },
audioRating: { score: 4 },
videoRating: { score: 3, issues: ['Freezes'] }
}).then(() => console.log('survey submitted successfully'))
Obsługa błędów, które zestaw SDK może wysłać
call.feature(Features.CallSurvey).submitSurvey({
overallRating: { score: 3 }
}).catch((e) => console.log('error when submitting survey: ' + e))
Znajdowanie różnych typów błędów
Błędy podczas przesyłania ankiety
Interfejs API zwraca następujące komunikaty o błędach, jeśli walidacja danych zakończy się niepowodzeniem lub nie można przesłać ankiety.
Wymagana jest co najmniej jedna ocena ankiety.
W domyślnej skali X powinna mieć wartość od 1 do 5. - gdzie X to jeden z następujących elementów:
- ocenaOgólna.wynik
- audioRating.score
- videoRating.score
- ScreenshareRating.score
{propertyName}: {rating.score} powinien znajdować się między {rating.scale?. lowerBound} i {rating.scale?. upperBound}.
{propertyName}: {rating.scale?.niskiPrógWyniku} powinien znajdować się między {rating.scale?.dolnąGranicą} a {rating.scale?.górnąGranicą}.
{propertyName} lowerBound: {rating.scale?.lowerBound} i upperBound: {rating.scale?.upperBound} powinny mieścić się w zakresie od 0 do 100.
Spróbuj ponownie [USŁUGA ACS nie mogła przesłać ankiety z powodu błędu sieci lub innego błędu].
Zwrócimy wszystkie kody błędów z komunikatem.
- Kod błędu 400 (nieprawidłowe żądanie) dla wszystkich komunikatów o błędach z wyjątkiem jednego.
{ message: validationErrorMessage, code: 400 }
- Jeden 408 (limit czasu), gdy zdarzenie zostało odrzucone:
{ message: "Please try again.", code: 408 }
Wszystkie możliwe wartości
Domyślna konfiguracja interfejsu API ankiety
| Kategorie klasyfikacji interfejsu API | Wartość progowa* | Zakres danych wejściowych | Comments |
|---|---|---|---|
| Podsumowanie rozmowy | 2 | 1 - 5 | Ankietuje ogólne wrażenie jakości doświadczenia uczestnika rozmowy w skali od 1 do 5. Odpowiedź 1 wskazuje, że rozmowa była mało satysfakcjonująca, a 5 oznacza rozmowę doskonałą. Wartość progowa 2 oznacza, że odpowiedź klienta 1 lub 2 wskazuje na mniej niż doskonałe doświadczenie rozmowy. |
| Dźwięk | 2 | 1 - 5 | Odpowiedź 1 wskazuje na niedoskonałe środowisko audio i 5 wskazuje, że nie wystąpiły żadne problemy z dźwiękiem. |
| wideo | 2 | 1 - 5 | Odpowiedź 1 oznacza ocenę niedoskonałego doświadczenia wideo, a 5 oznacza, że nie wystąpiły żadne problemy z wideo. |
| Screenshare | 2 | 1 - 5 | Odpowiedź 1 wskazuje na niedoskonałe doświadczenie udostępniania ekranu, a 5 wskazuje, że nie wystąpiły żadne problemy z udostępnianiem ekranu. |
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Więcej tagów ankiety
| Kategorie klasyfikacji | Tagi opcjonalne |
|---|---|
| Podsumowanie rozmowy |
CallCannotJoin
CallCannotInvite
HadToRejoin
CallEndedUnexpectedly
OtherIssues
|
| Dźwięk |
NoLocalAudio
NoRemoteAudio
Echo
AudioNoise
LowVolume
AudioStoppedUnexpectedly
DistortedSpeech
AudioInterruption
OtherIssues
|
| wideo |
NoVideoReceived
NoVideoSent
LowQuality
Freezes
StoppedUnexpectedly
DarkVideoReceived
AudioVideoOutOfSync
OtherIssues
|
| Screenshare |
NoContentLocal
NoContentRemote
CannotPresent
LowQuality
Freezes
StoppedUnexpectedly
LargeDelay
OtherIssues
|
Opcje dostosowywania
Możesz wybrać zbieranie każdej z czterech wartości interfejsu API lub tylko tych, które są najważniejsze. Możesz na przykład poprosić klientów tylko o ogólne wrażenia z połączeń, zamiast pytać ich o ich doświadczenia związane z dźwiękiem, wideo i udostępnianiem ekranu. Możesz również dostosować zakresy danych wejściowych do własnych potrzeb. Domyślny zakres danych wejściowych wynosi od 1 do 5 dla Ogólnego Połączenia, Dźwięku, Wideo i Udostępniania Ekranu. Jednak każda wartość interfejsu API można dostosować z zakresu od co najmniej 0 do maksymalnie 100.
Przykłady dostosowywania
| Kategorie klasyfikacji interfejsu API | Wartość progowa* | Zakres danych wejściowych |
|---|---|---|
| Podsumowanie rozmowy | 0 - 100 | 0 - 100 |
| Dźwięk | 0 - 100 | 0 - 100 |
| wideo | 0 - 100 | 0 - 100 |
| Screenshare | 0 - 100 | 0 - 100 |
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Pytania niestandardowe
Oprócz korzystania z interfejsu API End of Call Survey, możesz utworzyć własne pytania dotyczące ankiety i dołączyć je do wyników ankiety End of Call Survey. Poniżej znajdziesz kroki umożliwiające uwzględnienie pytań klientów w ankiecie oraz wykonanie zapytania o wyniki interfejsu API Ankiety Na Zakończenie Rozmowy i własnych pytań ankietowych.
Osadź usługę Azure AppInsights w aplikacji Kliknij tutaj, aby dowiedzieć się więcej na temat inicjowania usługi App Insights przy użyciu zwykłego kodu JavaScript. Alternatywnie możesz użyć narzędzia NPM, aby uzyskać zależności usługi App Insights. Kliknij tutaj, aby dowiedzieć się więcej na temat inicjowania usługi App Insight przy użyciu narzędzia NPM.
Tworzenie interfejsu użytkownika w aplikacji, która służy do obsługi niestandardowych pytań dla użytkownika i zbierania danych wejściowych, zakładamy, że aplikacja zebrała odpowiedzi jako ciąg w zmiennej
improvementSuggestionPrześlij wyniki ankiety do usługi ACS i wyślij odpowiedź użytkownika przy użyciu usługi App Insights:
currentCall.feature(SDK.Features.CallSurvey).submitSurvey(survey).then(res => { // `improvementSuggestion` contains custom, user response if (improvementSuggestion !== '') { appInsights.trackEvent({ name: "CallSurvey", properties: { // Survey ID to correlate the survey id: res.id, // Other custom properties as key value pair improvementSuggestion: improvementSuggestion } }); } }); appInsights.flush();
Odpowiedzi użytkowników, które zostały wysłane przy użyciu usługi AppInsights, są dostępne w obszarze roboczym usługi App Insights. Za pomocą skoroszytów można wykonywać zapytania między wieloma zasobami, korelować klasyfikacje wywołań i niestandardowe dane ankiety. Kroki w celu korelowania ocen połączeń z danymi z niestandardowych ankiet:
- Utwórz nowe skoroszyty (Twój zasób ACS -> monitorowanie -> skoroszyty -> nowe) i wykonaj zapytanie o dane ankiety dotyczącej połączeń z Twojego zasobu ACS.
- Dodaj nowe zapytanie (+Dodaj —> Dodaj zapytanie)
- Upewnij się, że
Data sourcejestLogsiResource typejestCommunication - Możesz zmienić nazwę zapytania (Ustawienia zaawansowane —> nazwa kroku [przykład: call-survey])
- Należy pamiętać, że może to wymagać maksymalnie 2 godzin , zanim dane ankiety staną się widoczne w witrynie Azure Portal. Zapytania dotyczące danych oceny połączeń
ACSCallSurvey | where TimeGenerated > now(-24h) - Dodaj kolejne zapytanie, aby pobrać dane z usługi App Insights (+Dodaj —> dodaj zapytanie)
- Upewnij się, że
Data sourcejestLogsiResource typejestApplication Insights - Wykonywanie zapytań dotyczących zdarzeń niestandardowych—
customEvents | where timestamp > now(-24h) | where name == 'CallSurvey' | extend d=parse_json(customDimensions) | project SurveyId = d.id, ImprovementSuggestion = d.improvementSuggestion - Możesz zmienić nazwę zapytania (Ustawienia zaawansowane —> nazwa kroku [przykład: custom-call-survey])
- Na koniec połącz te dwa zapytania według identyfikatora ankiety (surveyId). Utwórz nowe zapytanie (+Dodaj —> dodaj zapytanie).
- pl-PL: Upewnij się, że element
Data sourcejest połączony i wybierzMerge typezgodnie z potrzebami
title: Azure Communication Services End of Call Survey titleSuffix: An Azure Communication Services tutorial document description: Learn how to use the End of Call Survey to collect user feedback (Opis dokumentu z samouczka dotyczącego usług Azure Communication Services: Dowiedz się, jak zbierać opinie użytkowników za pomocą ankiety dotyczącej zakończenia połączeń). author: viniciusl-msft ms.author: viniciusl manager: gaob services: azure-communication-services ms.date: 30.07.2024 ms.topic: tutorial ms.service: azure-communication-services ms.subservice: calling
Ważne
Ankieta zakończenia połączeń jest dostępna od wersji 2.10.0 zestawu Android Calling SDK. Podczas próby wykonania instrukcji upewnij się, że używasz tej wersji lub nowszej.
Przykład użycia interfejsu API
Po zakończeniu połączenia funkcja Ankieta zakończenia połączenia powinna być używana. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu rozmowy użytkownika, aplikacja może wyświetlić interfejs użytkownika umożliwiający mu wybór oceny, a w razie potrzeby wyboru problemów napotkanych podczas rozmowy ze wstępnie zdefiniowanej listy.
Poniższe fragmenty kodu źródłowego pokazują przykład połączenia jeden na jeden. Po zakończeniu rozmowy aplikacja może wyświetlić interfejs ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać API funkcji, aby przesłać wyniki ankiety zgodnie z wyborem użytkownika.
Zachęcamy do korzystania z domyślnej skali klasyfikacji, czyli pięciu gwiazdek (od 1 do 5). Można jednak przesłać ankietę z niestandardową skalą klasyfikacji.
Rozpoczynanie ankiety
Tworzysz obiekt CallSurvey, uruchamiając ankietę. Rejestruje intencję ankiety. Jeśli ten konkretny CallSurvey obiekt nie zostanie przesłany później, oznacza to, że ankieta została pominięta lub zignorowana przez klienta końcowego.
SurveyCallFeature surveyCallFeature = call.feature(Features.SURVEY);
try {
CallSurvey survey = surveyCallFeature.startSurvey().get();
} catch (InterruptedException | ExecutionException e) {
// failure to start survey
}
Ogólne użycie
Podczas oceny połączeń należy przestrzegać wartości zdefiniowanych w polu skali. Niższa wartość dolna oznacza najgorsze możliwe doświadczenie, a wyższa wartość górna oznacza doskonałe doświadczenie. Obie wartości są inkluzywne.
OverallRating jest wymaganą kategorią dla wszystkich ankiet.
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Aby uzyskać więcej informacji na temat sugerowanego użycia ankiety, zobacz Pojęcia dotyczące ankiety
Tylko wywołanie częstotliwości — bez skalowania niestandardowego
SurveyScore overall = new SurveyScore();
overall.setScore(5);
callSurvey.setOverallScore(overall);
Oceń tylko wywołanie — w przypadku skalowania niestandardowego i problemów
// configuring scale
CallSurveyRatingScale ratingScale = new CallSurveyRatingScale();
ratingScale.setLowerBound(0);
ratingScale.setLowerBound(1);
ratingScale.setLowScoreThreshold(0);
SurveyScore overall = new SurveyScore();
overall.setScale(ratingScale);
// setting score according to scale
overall.setScore(1);
callSurvey.setOverallScore(overall);
// reporting one or more issues
callSurvey.setCallIssues(CallIssues.HAD_TO_REJOIN);
Ocena całościowa, dźwięku i wideo na podstawie przykładowego problemu
SurveyScore overall = new SurveyScore();
overall.setScore(3);
SurveyScore audio = new SurveyScore();
audio.setScore(4);
SurveyScore video = new SurveyScore();
video.setScore(3);
callSurvey.setOverallScore(overall);
callSurvey.setAudioScore(audio);
callSurvey.setVideoScore(video);
callSurvey.setVideoIssues(VideoIssues.FREEZES);
Prześlij ankietę i obsługuj błędy, które może wysyłać pakiet SDK
try {
CallSurveyResult survey = surveyCallFeature.submitSurvey(survey).get();
} catch (InterruptedException e) {
// Threading error
} catch (ExecutionException e) {
Log.e("SURVEY", e.getCause().getMessage());
}
Znajdowanie różnych typów błędów
Błędy podczas przesyłania ankiety:
API submitSurvey może zwrócić błąd w następujących scenariuszach:
Wymagana jest ogólna ocena ankiety.
CallSurveyRatingScalegranice muszą należeć do zakresu 0 i 100. Wartość LowerBound powinna być mniejsza niż UpperBound. LowScoreThreshold powinien znajdować się w granicach.Każdy z wyników musi uwzględniać granice zdefiniowane przez
CallSurveyRatingScale. Wszystkie wartości wCallSurveyRatingScaleobiekcie są włącznie. Używając domyślnej skali, wartość wyniku powinna należeć do przedziału od 1 do 5.Nie można przesłać ankiety z powodu błędu sieci/usługi.
Dostępne tagi ankiety
Ogólne połączenie
| Tag | Description |
|---|---|
CannotJoin |
Klient nie mógł dołączyć do połączenia |
CannotInvite |
Klient nie mógł dodać nowego uczestnika do rozmowy |
HadToRejoin |
Klient opuścił połączenie, a następnie ponownie do niego dołączył jako rozwiązanie tymczasowe problemu. |
CallEndedUnexpectedly |
Połączenie klienta zakończyło się bez wyraźnego powodu |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Problemy z dźwiękiem
| Tag | Description |
|---|---|
NoLocalAudio |
Brak dźwięku na maszynie klienta z połączenia, brak możliwości usłyszenia nikogo w rozmowie |
NoRemoteAudio |
Brak dźwięku od określonego uczestnika |
Echo |
Echo jest słyszane podczas rozmowy |
AudioNoise |
Dźwięk odebrany z niezamierzonym szumem |
LowVolume |
Dźwięk jest za niski |
AudioStoppedUnexpectedly |
Dźwięk zatrzymany bez wyraźnego powodu (np. nikt nie jest wyciszony) |
DistortedSpeech |
Głos uczestnika jest zniekształcony, różni się od ich oczekiwanego głosu |
AudioInterruption |
Klient doświadcza przerw w działaniu dźwięku, cięć głosowych itp. |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Problemy z wideo
| Tag | Description |
|---|---|
NoVideoReceived |
Klient nie otrzymuje filmu wideo od uczestnika |
NoVideoSent |
Klient uruchamia wideo, ale nikt w rozmowie nie jest w stanie go zobaczyć. |
LowQuality |
Wideo o niskiej jakości |
Freezes |
Wideo zawiesza się |
StoppedUnexpectedly |
Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. aparat jest włączony, a wywoływanie wideo jest włączone) |
DarkVideoReceived |
Wideo jest wysyłane, ale uczestnik widzi tylko ciemne pole (lub inny pojedynczy kolor) |
AudioVideoOutOfSync |
Wideo i dźwięk nie wydają się być zsynchronizowane |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Problemy z udostępnianiem ekranu
| Tag | Description |
|---|---|
NoContentLocal |
Klient nie otrzymuje udostępniania ekranu od uczestnika udostępniającego ekran. |
NoContentRemote |
Klient udostępnia ekran, ale inny co najmniej jeden uczestnik nie może go zobaczyć |
CannotPresent |
Nie można rozpocząć udostępniania ekranu |
LowQuality |
Niska jakość udostępnionego wideo na ekranie, np. nieczytelność treści |
Freezes |
Udostępnianie ekranu zacina się podczas prezentacji |
StoppedUnexpectedly |
Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. udostępnianie ekranu nie zostało zatrzymane przez klienta) |
LargeDelay |
Postrzegane opóźnienie między wyświetlanymi elementami i widocznymi elementami |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Opcje dostosowywania
Możesz wybrać zbieranie każdej z czterech wartości interfejsu API lub tylko tych, które są najważniejsze. Możesz na przykład poprosić klientów tylko o ogólne wrażenia z połączeń, zamiast pytać ich o ich doświadczenia związane z dźwiękiem, wideo i udostępnianiem ekranu. Możesz również dostosować zakresy danych wejściowych do własnych potrzeb. Domyślny zakres danych wejściowych to od 1 do 5 dla połączenia ogólnego, dźwięku, wideo i udostępniania ekranu. Jednak każda wartość interfejsu API można dostosować z zakresu od co najmniej 0 do maksymalnie 100.
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Pytania niestandardowe
Oprócz korzystania z interfejsu API End of Call Survey, możesz utworzyć własne pytania dotyczące ankiety i dołączyć je do wyników ankiety End of Call Survey.
Ładunek wynikowy operacji SubmitSurvey zawiera dane, których można użyć do skorelowania danych ankiety ACS z własnymi niestandardowymi danymi i przechowywaniem.
CallSurveyResult klasa posiada SurveyId pole, które oznacza unikatowy identyfikator ankiety, oraz CallId oznacza identyfikator wywołania, w którym ankieta została wygenerowana. Zapisanie tych identyfikatorów wraz z dostosowanymi danymi umożliwia unikatowe skojarzenie danych.
Ważne
Ankieta po zakończeniu połączenia jest dostępna od wersji 2.10.0 SDK dzwonienia dla systemu iOS. Podczas próby wykonania instrukcji upewnij się, że używasz tej wersji lub nowszej.
Przykład użycia interfejsu API
Po zakończeniu połączenia funkcja Ankieta zakończenia połączenia powinna być używana. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu rozmowy użytkownika, aplikacja może wyświetlić interfejs użytkownika umożliwiający mu wybór oceny, a w razie potrzeby wyboru problemów napotkanych podczas rozmowy ze wstępnie zdefiniowanej listy.
Poniższe fragmenty kodu źródłowego pokazują przykład połączenia jeden na jeden. Po zakończeniu rozmowy aplikacja może wyświetlić interfejs ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać API funkcji, aby przesłać wyniki ankiety zgodnie z wyborem użytkownika.
Zachęcamy do korzystania z domyślnej skali klasyfikacji, czyli pięciu gwiazdek (od 1 do 5). Można jednak przesłać ankietę z niestandardową skalą klasyfikacji.
Rozpoczynanie ankiety
Tworzysz obiekt CallSurvey, uruchamiając ankietę. Rejestruje intencję ankiety. Jeśli ten konkretny CallSurvey obiekt nie zostanie przesłany później, oznacza to, że ankieta została pominięta lub zignorowana przez klienta końcowego.
var surveyCallFeature = self.call.feature(Features.survey)
do {
try self.callSurvey = await surveyFeature.startSurvey()
} catch {
print("Failure to start survey")
}
Ogólne użycie
Podczas oceny połączeń należy przestrzegać wartości zdefiniowanych w polu skali. Niższa wartość dolna oznacza najgorsze możliwe doświadczenie, a wyższa wartość górna oznacza doskonałe doświadczenie. Obie wartości są inkluzywne.
OverallRating jest wymaganą kategorią dla wszystkich ankiet.
Aby uzyskać więcej informacji na temat sugerowanego użycia ankiety, zobacz Pojęcia dotyczące ankiety
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Tylko wywołanie częstotliwości — bez skalowania niestandardowego
let overallScore = SurveyScore()
overallScore.score = Int32(5)
callSurvey.overallScore = overallScore
Oceń tylko wywołanie — w przypadku skalowania niestandardowego i problemów
// configuring scale
var ratingScale = new CallSurveyRatingScale()
ratingScale.lowerBound = 0;
ratingScale.upperBound = 1;
ratingScale.lowScoreThreshold = 0;
SurveyScore overall = new SurveyScore();
overall.scale = ratingScale;
// setting score according to scale
overall.score = 1;
callSurvey.overallScore = overall;
// reporting one or more issues
callSurvey.callIssues = [ CallIssues.hadToRejoin ];
Ocena całościowa, dźwięku i wideo na podstawie przykładowego problemu
let overall = SurveyScore();
overall.score = 3;
let audio = SurveyScore();
audio.score = 4;
let video = SurveyScore();
video.score = 3;
callSurvey.overallScore = overall;
callSurvey.audioScore = audio;
callSurvey.videoScore = video;
callSurvey.videoIssues = [ VideoIssues.freezes ];
Prześlij ankietę i obsługuj błędy, które może wysyłać pakiet SDK
do {
var result = try await self.surveyFeature!.submit(survey: callSurvey)
} catch let error as NSError {
print("==> Survey Not Submitted " + error.localizedDescription)
}
Znajdowanie różnych typów błędów
Błędy podczas przesyłania ankiety:
API submitSurvey może zwrócić błąd w następujących scenariuszach:
Wymagana jest ogólna ocena ankiety.
CallSurveyRatingScalegranice muszą należeć do zakresu 0 i 100. Wartość LowerBound powinna być mniejsza niż UpperBound. LowScoreThreshold powinien znajdować się w granicach.Każdy z wyników musi uwzględniać granice zdefiniowane przez
CallSurveyRatingScale. Wszystkie wartości wCallSurveyRatingScaleobiekcie są włącznie. Używając domyślnej skali, wartość wyniku powinna należeć do przedziału od 1 do 5.Nie można przesłać ankiety z powodu błędu sieci/usługi.
Dostępne tagi ankiety
Podsumowanie rozmowy
| Tag | Description |
|---|---|
CannotJoin |
Klient nie mógł dołączyć do połączenia |
CannotInvite |
Klient nie mógł dodać nowego uczestnika do rozmowy |
HadToRejoin |
Klient opuścił połączenie, a następnie ponownie do niego dołączył jako rozwiązanie tymczasowe problemu. |
CallEndedUnexpectedly |
Połączenie klienta zakończyło się bez wyraźnego powodu |
OtherIssues |
Dowolny problem, który nie pasuje do poprzednich opisów |
Problemy z dźwiękiem
| Tag | Description |
|---|---|
NoLocalAudio |
Brak dźwięku na maszynie klienta z połączenia, brak możliwości usłyszenia nikogo w rozmowie |
NoRemoteAudio |
Brak dźwięku od określonego uczestnika |
Echo |
Echo jest słyszane podczas rozmowy |
AudioNoise |
Dźwięk odebrany z niezamierzonym szumem |
LowVolume |
Dźwięk jest za niski |
AudioStoppedUnexpectedly |
Dźwięk zatrzymany bez wyraźnego powodu (np. nikt nie jest wyciszony) |
DistortedSpeech |
Głos uczestnika jest zniekształcony, różni się od ich oczekiwanego głosu |
AudioInterruption |
Klient doświadcza przerw w działaniu dźwięku, cięć głosowych itp. |
OtherIssues |
Dowolny problem, który nie pasuje do poprzednich opisów |
Problemy z wideo
| Tag | Description |
|---|---|
NoVideoReceived |
Klient nie otrzymuje filmu wideo od uczestnika |
NoVideoSent |
Klient uruchamia wideo, ale nikt w rozmowie nie jest w stanie go zobaczyć. |
LowQuality |
Wideo o niskiej jakości |
Freezes |
Wideo zawiesza się |
StoppedUnexpectedly |
Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. aparat jest włączony, a wywoływanie wideo jest włączone) |
DarkVideoReceived |
Wideo jest wysyłane, ale uczestnik widzi tylko ciemne pole (lub inny pojedynczy kolor) |
AudioVideoOutOfSync |
Wideo i dźwięk nie wydają się być zsynchronizowane |
OtherIssues |
Dowolny problem, który nie pasuje do poprzednich opisów |
Problemy z udostępnianiem ekranu
| Tag | Description |
|---|---|
NoContentLocal |
Klient nie otrzymuje udostępniania ekranu od uczestnika udostępniającego ekran. |
NoContentRemote |
Klient udostępnia ekran, ale inny co najmniej jeden uczestnik nie może go zobaczyć |
CannotPresent |
Nie można rozpocząć udostępniania ekranu |
LowQuality |
Niska jakość udostępnionego wideo na ekranie, np. nieczytelność treści |
Freezes |
Udostępnianie ekranu zacina się podczas prezentacji |
StoppedUnexpectedly |
Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. udostępnianie ekranu nie zostało zatrzymane przez klienta) |
LargeDelay |
Postrzegane opóźnienie między wyświetlanymi elementami i widocznymi elementami |
OtherIssues |
Dowolny problem, który nie pasuje do poprzednich opisów |
Opcje dostosowywania
Możesz wybrać zbieranie każdej z czterech wartości interfejsu API lub tylko tych, które są najważniejsze. Możesz na przykład poprosić klientów tylko o ogólne wrażenia z połączeń, zamiast pytać ich o ich doświadczenia związane z dźwiękiem, wideo i udostępnianiem ekranu. Możesz również dostosować zakresy danych wejściowych do własnych potrzeb. Domyślny zakres danych wejściowych to od 1 do 5 dla połączenia ogólnego, dźwięku, wideo i udostępniania ekranu. Jednak każda wartość interfejsu API można dostosować z zakresu od co najmniej 0 do maksymalnie 100.
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Pytania niestandardowe
Oprócz korzystania z interfejsu API End of Call Survey, możesz utworzyć własne pytania dotyczące ankiety i dołączyć je do wyników ankiety End of Call Survey.
Jednak dane wynikowe SubmitSurvey operacji to dane, które możesz wykorzystać do skorelowania danych z ankiety ACS z własnymi niestandardowymi danymi i przechowywaniem.
CallSurveyResult klasa posiada SurveyId pole, które oznacza unikatowy identyfikator ankiety, oraz CallId oznacza identyfikator wywołania, w którym ankieta została wygenerowana. Zapisanie tych identyfikatorów wraz z dostosowanymi danymi umożliwia unikatowe skojarzenie danych.
Ważne
Ankieta zakończenia połączeń jest dostępna od wersji 1.8.0 zestawu Windows Calling SDK. Podczas próby wykonania instrukcji upewnij się, że używasz tej wersji lub nowszej.
Przykład użycia interfejsu API
Po zakończeniu połączenia funkcja Ankieta zakończenia połączenia powinna być używana. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu rozmowy użytkownika, aplikacja może wyświetlić interfejs użytkownika umożliwiający mu wybór oceny, a w razie potrzeby wyboru problemów napotkanych podczas rozmowy ze wstępnie zdefiniowanej listy.
Poniższe fragmenty kodu źródłowego pokazują przykład połączenia jeden na jeden. Po zakończeniu rozmowy aplikacja może wyświetlić interfejs ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać API funkcji, aby przesłać wyniki ankiety zgodnie z wyborem użytkownika.
Zachęcamy do korzystania z domyślnej skali klasyfikacji, czyli pięciu gwiazdek (od 1 do 5). Można jednak przesłać ankietę z niestandardową skalą klasyfikacji.
Rozpoczynanie ankiety
Tworzysz obiekt CallSurvey, uruchamiając ankietę. Rejestruje intencję ankiety. Jeśli ten konkretny CallSurvey obiekt nie zostanie przesłany później, oznacza to, że ankieta została pominięta lub zignorowana przez klienta końcowego.
var surveyCallFeature = call.Features.Survey;
var survey = await surveyCallFeature.StartSurveyAsync();
Ogólne użycie
Podczas oceny połączeń należy przestrzegać wartości zdefiniowanych w polu skali. Niższa wartość dolna oznacza najgorsze możliwe doświadczenie, a wyższa wartość górna oznacza doskonałe doświadczenie. Obie wartości są inkluzywne.
OverallRating jest wymaganą kategorią dla wszystkich ankiet.
Aby uzyskać więcej informacji na temat sugerowanego użycia ankiety, zobacz Pojęcia dotyczące ankiety
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Tylko wywołanie częstotliwości — bez skalowania niestandardowego
survey.OverallScore = new CallSurveyScore() { Score = 5 };
Oceń tylko wywołanie — w przypadku skalowania niestandardowego i problemów
// configuring scale and score
survey.OverallScore = new CallSurveyScore() {
Scale = new CallSurveyRatingScale() {
LowerBound = 0,
UpperBound = 1,
LowScoreThreshold = 1,
},
Score = 1
};
// reporting one or more issues
survey.OverallIssues = CallIssues.HadToRejoin;
Ocena całościowa, dźwięku i wideo na podstawie przykładowego problemu
survey.OverallScore = new CallSurveyScore() {
Score = 5
};
survey.AudioScore = new CallSurveyScore() {
Score = 4
};
survey.VideoScore = new CallSurveyScore() {
Score = 3
};
survey.videoIssues = VideoIssues.Freezes;
Prześlij ankietę i obsługuj błędy, które może wysyłać pakiet SDK
try
{
CallSurveyResult result = await surveyCallFeature.SubmitSurveyAsync(survey);
Console.WriteLine("Survey submitted" + result.SurveyId);
} catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Znajdowanie różnych typów błędów
Błędy podczas przesyłania ankiety:
API submitSurvey może zwrócić błąd w następujących scenariuszach:
Wymagana jest ogólna ocena ankiety.
CallSurveyRatingScalegranice muszą należeć do zakresu 0 i 100. Wartość LowerBound powinna być mniejsza niż UpperBound. LowScoreThreshold powinien znajdować się w granicach.Każdy z wyników musi uwzględniać granice zdefiniowane przez
CallSurveyRatingScale. Wszystkie wartości wCallSurveyRatingScaleobiekcie są włącznie. Używając domyślnej skali, wartość wyniku powinna należeć do przedziału od 1 do 5.Nie można przesłać ankiety z powodu błędu sieci/usługi.
Dostępne tagi ankiety
Podsumowanie rozmowy
| Tag | Description |
|---|---|
CannotJoin |
Klient nie mógł dołączyć do połączenia |
CannotInvite |
Klient nie mógł dodać nowego uczestnika do rozmowy |
HadToRejoin |
Klient opuścił połączenie, a następnie ponownie do niego dołączył jako rozwiązanie tymczasowe problemu. |
EndedUnexpectedly |
Połączenie klienta zakończyło się bez wyraźnego powodu |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Problemy z dźwiękiem
| Tag | Description |
|---|---|
NoLocalAudio |
Brak dźwięku na maszynie klienta z połączenia, brak możliwości usłyszenia nikogo w rozmowie |
NoRemoteAudio |
Brak dźwięku od określonego uczestnika |
Echo |
Echo jest słyszane podczas rozmowy |
AudioNoise |
Dźwięk odebrany z niezamierzonym szumem |
LowVolume |
Dźwięk jest za niski |
AudioStoppedUnexpectedly |
Dźwięk zatrzymany bez wyraźnego powodu (np. nikt nie jest wyciszony) |
DistortedSpeech |
Głos uczestnika jest zniekształcony, różni się od ich oczekiwanego głosu |
AudioInterruption |
Klient doświadcza przerw w działaniu dźwięku, cięć głosowych itp. |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Problemy z wideo
| Tag | Description |
|---|---|
NoVideoReceived |
Klient nie otrzymuje filmu wideo od uczestnika |
NoVideoSent |
Klient uruchamia wideo, ale nikt w rozmowie nie jest w stanie go zobaczyć. |
LowQuality |
Wideo o niskiej jakości |
Freezes |
Wideo zawiesza się |
StoppedUnexpectedly |
Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. aparat jest włączony, a wywoływanie wideo jest włączone) |
DarkVideoReceived |
Wideo jest wysyłane, ale uczestnik widzi tylko ciemne pole (lub inny pojedynczy kolor) |
AudioVideoOutOfSync |
Wideo i dźwięk nie wydają się być zsynchronizowane |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Problemy z udostępnianiem ekranu
| Tag | Description |
|---|---|
NoContentLocal |
Klient nie otrzymuje udostępniania ekranu od uczestnika udostępniającego ekran. |
NoContentRemote |
Klient udostępnia ekran, ale inny co najmniej jeden uczestnik nie może go zobaczyć |
CannotPresent |
Nie można rozpocząć udostępniania ekranu |
LowQuality |
Niska jakość udostępnionego wideo na ekranie, np. nieczytelność treści |
Freezes |
Udostępnianie ekranu zacina się podczas prezentacji |
StoppedUnexpectedly |
Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. udostępnianie ekranu nie zostało zatrzymane przez klienta) |
LargeDelay |
Postrzegane opóźnienie między wyświetlanymi elementami i widocznymi elementami |
OtherIssues |
Każdy problem, który nie pasuje do poprzednich opisów |
Opcje dostosowywania
Możesz wybrać zbieranie każdej z czterech wartości interfejsu API lub tylko tych, które są najważniejsze. Możesz na przykład poprosić klientów tylko o ogólne wrażenia z połączeń, zamiast pytać ich o ich doświadczenia związane z dźwiękiem, wideo i udostępnianiem ekranu. Możesz również dostosować zakresy danych wejściowych do własnych potrzeb. Domyślny zakres danych wejściowych to od 1 do 5 dla połączenia ogólnego, dźwięku, wideo i udostępniania ekranu. Jednak każda wartość interfejsu API można dostosować z zakresu od co najmniej 0 do maksymalnie 100.
Uwaga / Notatka
Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości progowej lub zakresu wejściowego firma Microsoft przeprowadza analizę danych ankiety na podstawie dokonanych przez ciebie zmian.
Pytania niestandardowe
Oprócz korzystania z interfejsu API End of Call Survey, możesz utworzyć własne pytania dotyczące ankiety i dołączyć je do wyników ankiety End of Call Survey.
Jednak dane wynikowe SubmitSurvey operacji to dane, które możesz wykorzystać do skorelowania danych z ankiety ACS z własnymi niestandardowymi danymi i przechowywaniem.
CallSurveyResult klasa posiada SurveyId pole, które oznacza unikatowy identyfikator ankiety, oraz CallId oznacza identyfikator wywołania, w którym ankieta została wygenerowana. Zapisanie tych identyfikatorów wraz z dostosowanymi danymi umożliwia unikatowe skojarzenie danych.
Zbieranie danych ankiety
Ważne
Należy włączyć ustawienie diagnostyczne w usłudze Azure Monitor, aby wysyłać dane dziennika ankiet do obszaru roboczego usługi Log Analytics, usługi Event Hubs lub konta usługi Azure Storage w celu odbierania i analizowania danych ankiety. Jeśli nie wyślesz danych ankiety do jednej z tych opcji, dane ankiety nie będą przechowywane i zostaną utracone. Aby włączyć te dzienniki dla swoich usług komunikacyjnych, zobacz: Dzienniki ankiety po zakończeniu połączeń
Wyświetlanie danych ankiety przy użyciu obszaru roboczego usługi Log Analytics
Należy włączyć obszar roboczy usługi Log Analytics, aby przechowywać dane dziennika ankiet i uzyskiwać dostęp do wyników ankiety. Aby włączyć te dzienniki dla usługi Communications Service, zobacz Dzienniki ankiet po zakończeniu połączeń.
- Obszar roboczy usługi Log Analytics można również zintegrować z usługą Power BI. Zobacz Integrowanie usługi Log Analytics z usługą Power BI.
Najlepsze rozwiązania
Oto nasze zalecane przepływy ankiety i sugerowane pytania do rozważenia. Twoje rozwiązanie może używać naszego zalecenia lub korzystać z niestandardowych podpowiedzi i przepływów dialogowych dla interfejsu wizualnego.
Pytanie 1: W jaki sposób użytkownicy postrzegają ogólne środowisko jakości połączeń? Zalecamy rozpoczęcie ankiety, pytając tylko o ogólną jakość uczestników. Jeśli rozdzielisz pierwsze i drugie pytania, pomoże to tylko wtedy zbierać odpowiedzi na problemy z audio, wideo i udostępnianiem ekranu, gdy uczestnik ankiety wskaże, że napotkał problemy z jakością połączeń.
- Sugerowany monit: "Jak była jakość połączenia?"
- Wartości pytań interfejsu API: Podsumowanie wywołania
Pytanie 2: Czy użytkownik dostrzegł jakiekolwiek problemy z dźwiękiem, wideo lub udostępnianiem ekranu w rozmowie? Jeśli uczestnik ankiety odpowiedział na pytanie 1 z wynikiem równym lub niższym od wartości odcięcia dla całościowej oceny, wtedy należy przedstawić drugie pytanie.
- Sugerowany monit: "Co mogło być lepsze?"
- Wartości pytań interfejsu API: Audio, Wideo i Udostępnianie ekranu
Wytyczne dotyczące badania
- Unikaj zmęczenia ankietami, nie ankietuj wszystkich uczestników rozmów.
- Kolejność pytań ma znaczenie. Zalecamy wylosowanie sekwencji opcjonalnych tagów w pytaniu 2, aby respondenci koncentrowali większość opinii na pierwszym monicie, który widzą.
- Rozważ użycie ankiet dla oddzielnych zasobów usług Azure Communication Services w kontrolowanych eksperymentach, aby zidentyfikować wpływ wydania.
Dalsze kroki
Analizowanie danych z ankiet, zobacz Rejestry ankiet po zakończeniu rozmowy
Dowiedz się więcej na temat ankiety dotyczącej zakończenia połączeń, zobacz: Omówienie ankiety dotyczącej zakończenia połączeń
Dowiedz się, jak używać obszaru roboczego usługi Log Analytics, zobacz: Samouczek usługi Log Analytics
Tworzenie własnych zapytań w usłudze Log Analytics, zobacz: Wprowadzenie zapytań