Udostępnij przez


Zbieranie opinii użytkowników za pomocą ankiety end of call

W tym samouczku pokazano, jak używać ankiety końca rozmowy w Azure Communication Services.

Wymagania wstępne

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.

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 source jest Logs i Resource type jest Communication
  • 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 source jest Logs i Resource type jest Application 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 source jest połączony i wybierz Merge type zgodnie 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.

  • CallSurveyRatingScale granice 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 w CallSurveyRatingScale obiekcie 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.

  • CallSurveyRatingScale granice 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 w CallSurveyRatingScale obiekcie 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.

  • CallSurveyRatingScale granice 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 w CallSurveyRatingScale obiekcie 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ń.

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