Udostępnij za pośrednictwem


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

W tym samouczku pokazano, jak używać ankiety dotyczącej zakończenia połączeń usług Azure Communication Services.

Wymagania wstępne

  • Konto platformy 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 usługi Log Analytics, znany również jako dzienniki usługi Azure Monitor. Zobacz Końce dzienników ankiet połączeń.
  • Aby przeprowadzić ankietę z pytaniami niestandardowymi przy użyciu wolnego tekstu formularza, potrzebny jest zasób usługi App Insight.

Ważne

Ankieta zakończenia połączeń jest dostępna od wersji 1.13.1 zestawu SDK wywołującego. Podczas próby wykonania instrukcji upewnij się, że używasz tej wersji lub nowszej.

  • zaleca się Node.js aktywnych wersji długoterminowych pomocy technicznej (LTS).

Przykład użycia interfejsu API

Po zakończeniu połączenia należy użyć funkcji Ankieta zakończenia połączenia. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu wywołania użytkownika aplikacja może wyświetlić interfejs użytkownika użytkownikowi końcowemu, co pozwoli im wybrać ocenę, a w razie potrzeby wybierz problemy napotkane podczas wywołania ze wstępnie zdefiniowanej listy.

Poniższe fragmenty kodu pokazują przykład wywołania jeden do jednego. Po zakończeniu wywołania aplikacja może wyświetlić interfejs użytkownika ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać interfejs API funkcji, aby przesłać ankietę z wyborami 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'));

GeneralRating to wymagana kategoria 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'));

Ocenianie ogólnej, audio i wideo przy użyciu 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:

    • overallRating.score
    • audioRating.score
    • videoRating.score
    • ScreenshareRating.score
  • {propertyName}: {rating.score} powinien znajdować się między {rating.scale?. lowerBound} i {rating.scale?. upperBound}.

  • {propertyName}: {rating.scale?. wartość lowScoreThreshold} powinna znajdować się między {rating.scale?. lowerBound} i {rating.scale?. upperBound}.

  • {propertyName} lowerBound: {rating.scale?. lowerBound} i upperBound: {rating.scale?. wartość upperBound} powinna należeć do zakresu 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ść odcinania* Zakres danych wejściowych Komentarze
Ogólne wywołanie 2 1–5 Ankietuje ogólne doświadczenie w jakości uczestnika wywołującego w skali 1–5. Odpowiedź 1 wskazuje na niedoskonałe środowisko wywołania, a 5 wskazuje idealne wywołanie. Wartość redukcji 2 oznacza, że odpowiedź klienta 1 lub 2 wskazuje mniej niż doskonałe środowisko połączenia.
Audio 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 wskazuje na niedoskonałe środowisko wideo i 5 wskazuje, że nie wystąpiły żadne problemy z wideo.
Udostępnianie ekranu 2 1–5 Odpowiedź 1 wskazuje na niedoskonałe środowisko udostępniania ekranu i 5 wskazuje, że nie wystąpiły żadne problemy z udziałem ekranu.

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

Więcej tagów ankiety

Kategorie klasyfikacji Tagi opcjonalne
Ogólne wywołanie CallCannotJoin CallCannotInvite HadToRejoin CallEndedUnexpectedly OtherIssues
Audio NoLocalAudio NoRemoteAudio Echo AudioNoise LowVolume AudioStoppedUnexpectedly DistortedSpeech AudioInterruption OtherIssues
Wideo NoVideoReceived NoVideoSent LowQuality Freezes StoppedUnexpectedly DarkVideoReceived AudioVideoOutOfSync OtherIssues
Udostępnianie ekranu 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 środowisko połączeń, zamiast pytać ich o środowisko udostępniania dźwięku, wideo i 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 opcji Ogólne wywołanie, dźwięk, wideo i udział 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ść odcinania* Zakres danych wejściowych
Ogólne wywołanie 0 - 100 0 - 100
Audio 0 - 100 0 - 100
Wideo 0 - 100 0 - 100
Udostępnianie ekranu 0 - 100 0 - 100

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

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 własnych pytań klientów w ankiecie i wykonanie zapytań dotyczących wyników interfejsu API end of Call Survey i własnych pytań dotyczących ankiety.

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 korelowania klasyfikacji wywołań i niestandardowych danych ankiety:

  • Utwórz nowe skoroszyty (Zasób USŁUGI ACS —> monitorowanie —> skoroszyty —> nowe) i wykonaj zapytanie o dane ankiety wywołania z zasobu USŁUGI ACS.
  • Dodaj nowe zapytanie (+Dodaj —> Dodaj zapytanie)
  • Upewnij się, że Data source to i Logs 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. Wykonywanie zapytań dotyczących danych klasyfikacji wywołań—
    ACSCallSurvey
    | where TimeGenerated > now(-24h)
    
  • Dodaj kolejne zapytanie, aby pobrać dane z usługi App Insights (+Dodaj —> dodaj zapytanie)
  • Upewnij się, że Data source to i Logs 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 scal te dwa zapytania według identyfikatora surveyId. Utwórz nowe zapytanie (+Dodaj —> dodaj zapytanie).
  • Upewnij się, że element Data source jest scalony i wybierz je zgodnie z potrzebami Merge type

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: 7/30/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 należy użyć funkcji Ankieta zakończenia połączenia. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu wywołania użytkownika aplikacja może wyświetlić interfejs użytkownika użytkownikowi końcowemu, co pozwoli im wybrać ocenę, a w razie potrzeby wybierz problemy napotkane podczas wywołania ze wstępnie zdefiniowanej listy.

Poniższe fragmenty kodu pokazują przykład wywołania jeden do jednego. Po zakończeniu wywołania aplikacja może wyświetlić interfejs użytkownika ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać interfejs API funkcji, aby przesłać ankietę z wyborami 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

Obiekt można utworzyć CallSurvey , uruchamiając ankietę. Spowoduje to rejestrowanie intencji 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

W przypadku wywołań klasyfikacji należy przestrzegać wartości zdefiniowanych w polu skalowania. Niższa wartośćBound oznacza możliwe najgorsze środowisko, a górna wartośćBound oznacza doskonałe środowisko. Obie wartości są inkluzywne.

GeneralRating to wymagana kategoria dla wszystkich ankiet.

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

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);

Ocenianie ogólnej, audio i wideo przy użyciu 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);

Przesyłanie ankiety i obsługa błędów, które zestaw SDK może wysłać

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:

Interfejs 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 CallSurveyRatingScaleelement . 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 wywołanie

Tag opis
CannotJoin Klient nie mógł dołączyć do połączenia
CannotInvite Klient nie mógł dodać nowego uczestnika na wezwanie
HadToRejoin Klient opuścił i ponownie dołączył do połączenia jako obejście 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 opis
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 postrzegane w wywołaniu
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 opis
NoVideoReceived Klient nie otrzymuje filmu wideo od uczestnika
NoVideoSent Klient uruchamia wideo, ale nikt w wywołaniu 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 udziałem ekranu

Tag opis
NoContentLocal Klient nie otrzymuje udziału ekranu od uczestnika, który udostępnia
NoContentRemote Klient udostępnia ekran, ale inny co najmniej jeden uczestnik nie może go zobaczyć
CannotPresent Nie można udostępnić ekranu startowego
LowQuality Niska jakość filmu wideo udostępnionego na ekranie, np. nie można odczytać
Freezes Udział ekranu zawiesza się podczas prezentacji
StoppedUnexpectedly Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. udział ekranu nie został zatrzymany 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 środowisko połączeń, zamiast pytać ich o środowisko udostępniania dźwięku, wideo i 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 ogólnego wywołania, dźwięku, wideo i udziału ekranu. Jednak każda wartość interfejsu API można dostosować z zakresu od co najmniej 0 do maksymalnie 100.

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

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 SubmitSurvey wyniku operacji zawiera dane, których można użyć do skorelowania danych ankiety ACS z własnymi niestandardowymi danymi i magazynem. CallSurveyResult klasa ma SurveyId pole, które oznacza unikatowy identyfikator ankiety i CallId oznacza identyfikator wywołania, w którym została wygenerowana ankieta. 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 2.10.0 zestawu SDK wywołującego 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 należy użyć funkcji Ankieta zakończenia połączenia. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu wywołania użytkownika aplikacja może wyświetlić interfejs użytkownika użytkownikowi końcowemu, co pozwoli im wybrać ocenę, a w razie potrzeby wybierz problemy napotkane podczas wywołania ze wstępnie zdefiniowanej listy.

Poniższe fragmenty kodu pokazują przykład wywołania jeden do jednego. Po zakończeniu wywołania aplikacja może wyświetlić interfejs użytkownika ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać interfejs API funkcji, aby przesłać ankietę z wyborami 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

Obiekt można utworzyć CallSurvey , uruchamiając ankietę. Spowoduje to rejestrowanie intencji 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

W przypadku wywołań klasyfikacji należy przestrzegać wartości zdefiniowanych w polu skalowania. Niższa wartośćBound oznacza możliwe najgorsze środowisko, a górna wartośćBound oznacza doskonałe środowisko. Obie wartości są inkluzywne.

GeneralRating to wymagana kategoria dla wszystkich ankiet.

Aby uzyskać więcej informacji na temat sugerowanego użycia ankiety, zobacz Pojęcia dotyczące ankiety

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

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 ];

Ocenianie ogólnej, audio i wideo przy użyciu 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 ];

Przesyłanie ankiety i obsługa błędów, które zestaw SDK może wysłać

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:

Interfejs 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 CallSurveyRatingScaleelement . 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 wywołanie

Tag opis
CannotJoin Klient nie mógł dołączyć do połączenia
CannotInvite Klient nie mógł dodać nowego uczestnika na wezwanie
HadToRejoin Klient opuścił i ponownie dołączył do połączenia jako obejście 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 opis
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 postrzegane w wywołaniu
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 opis
NoVideoReceived Klient nie otrzymuje filmu wideo od uczestnika
NoVideoSent Klient uruchamia wideo, ale nikt w wywołaniu 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 udziałem ekranu

Tag opis
NoContentLocal Klient nie otrzymuje udziału ekranu od uczestnika, który udostępnia
NoContentRemote Klient udostępnia ekran, ale inny co najmniej jeden uczestnik nie może go zobaczyć
CannotPresent Nie można udostępnić ekranu startowego
LowQuality Niska jakość filmu wideo udostępnionego na ekranie, np. nie można odczytać
Freezes Udział ekranu zawiesza się podczas prezentacji
StoppedUnexpectedly Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. udział ekranu nie został zatrzymany 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 środowisko połączeń, zamiast pytać ich o środowisko udostępniania dźwięku, wideo i 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 ogólnego wywołania, dźwięku, wideo i udziału ekranu. Jednak każda wartość interfejsu API można dostosować z zakresu od co najmniej 0 do maksymalnie 100.

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

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 ładunek SubmitSurvey wyniku operacji zapewnia dane, których można użyć do skorelowania danych ankiety ACS z własnymi niestandardowymi danymi i magazynem. CallSurveyResult klasa ma SurveyId pole, które oznacza unikatowy identyfikator ankiety i CallId oznacza identyfikator wywołania, w którym została wygenerowana ankieta. 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 należy użyć funkcji Ankieta zakończenia połączenia. Użytkownicy mogą oceniać dowolny rodzaj połączenia VoIP, 1:1, grupę, spotkanie, wychodzące i przychodzące. Po zakończeniu wywołania użytkownika aplikacja może wyświetlić interfejs użytkownika użytkownikowi końcowemu, co pozwoli im wybrać ocenę, a w razie potrzeby wybierz problemy napotkane podczas wywołania ze wstępnie zdefiniowanej listy.

Poniższe fragmenty kodu pokazują przykład wywołania jeden do jednego. Po zakończeniu wywołania aplikacja może wyświetlić interfejs użytkownika ankiety, a gdy użytkownik wybierze ocenę, aplikacja powinna wywołać interfejs API funkcji, aby przesłać ankietę z wyborami 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

Obiekt można utworzyć CallSurvey , uruchamiając ankietę. Spowoduje to rejestrowanie intencji 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

W przypadku wywołań klasyfikacji należy przestrzegać wartości zdefiniowanych w polu skalowania. Niższa wartośćBound oznacza możliwe najgorsze środowisko, a górna wartośćBound oznacza doskonałe środowisko. Obie wartości są inkluzywne.

GeneralRating to wymagana kategoria dla wszystkich ankiet.

Aby uzyskać więcej informacji na temat sugerowanego użycia ankiety, zobacz Pojęcia dotyczące ankiety

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

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;

Ocenianie ogólnej, audio i wideo przy użyciu 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;

Przesyłanie ankiety i obsługa błędów, które zestaw SDK może wysłać

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:

Interfejs 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 CallSurveyRatingScaleelement . 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 wywołanie

Tag opis
CannotJoin Klient nie mógł dołączyć do połączenia
CannotInvite Klient nie mógł dodać nowego uczestnika na wezwanie
HadToRejoin Klient opuścił i ponownie dołączył do połączenia jako obejście 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 opis
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 postrzegane w wywołaniu
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 opis
NoVideoReceived Klient nie otrzymuje filmu wideo od uczestnika
NoVideoSent Klient uruchamia wideo, ale nikt w wywołaniu 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 udziałem ekranu

Tag opis
NoContentLocal Klient nie otrzymuje udziału ekranu od uczestnika, który udostępnia
NoContentRemote Klient udostępnia ekran, ale inny co najmniej jeden uczestnik nie może go zobaczyć
CannotPresent Nie można udostępnić ekranu startowego
LowQuality Niska jakość filmu wideo udostępnionego na ekranie, np. nie można odczytać
Freezes Udział ekranu zawiesza się podczas prezentacji
StoppedUnexpectedly Udostępnianie ekranu zatrzymuje się bez wyraźnego powodu (np. udział ekranu nie został zatrzymany 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 środowisko połączeń, zamiast pytać ich o środowisko udostępniania dźwięku, wideo i 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 ogólnego wywołania, dźwięku, wideo i udziału ekranu. Jednak każda wartość interfejsu API można dostosować z zakresu od co najmniej 0 do maksymalnie 100.

Uwaga

Wskazana wartość odcięcia pytania w interfejsie API to próg używany przez firmę Microsoft podczas analizowania danych ankiety. Po dostosowaniu wartości wycinania lub zakresu danych wejściowych firma Microsoft analizuje dane ankiety zgodnie z dostosowaniem.

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 ładunek SubmitSurvey wyniku operacji zapewnia dane, których można użyć do skorelowania danych ankiety ACS z własnymi niestandardowymi danymi i magazynem. CallSurveyResult klasa ma SurveyId pole, które oznacza unikatowy identyfikator ankiety i CallId oznacza identyfikator wywołania, w którym została wygenerowana ankieta. 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 usług Communications Services, zobacz: End of Call Survey Logs (Dzienniki ankiety zakończenia 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: Końce dzienników ankiet połączeń.

Najlepsze rozwiązania

Oto nasze zalecane przepływy ankiety i sugerowane monity o pytanie do rozważenia. Programowanie może używać naszego zalecenia lub używać niestandardowych monitów i przepływów pytań dla interfejsu wizualizacji.

Pytanie 1: Jak 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 zebrać tylko odpowiedzi na problemy z audio, wideo i udziałem ekranu, jeśli 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: ogólne wywołanie

Pytanie 2: Czy użytkownik widział jakiekolwiek problemy z udostępnianiem dźwięku, wideo lub ekranu w wywołaniu? Jeśli uczestnik ankiety odpowiedział na pytanie 1 z wynikiem na lub poniżej wartości odcięcia dla ogólnego wywołania, przedstawi drugie pytanie.

  • Sugerowany monit: "Co mogło być lepsze?"
  • Wartości pytań interfejsu API: Audio, Wideo i Screenshare

Wytyczne dotyczące badania

  • Unikaj wypalenie ankiety, nie ankietuj wszystkich uczestników połączeń.
  • Kolejność pytań ma znaczenie. Zalecamy losowe losowe sekwencję opcjonalnych tagów w pytaniu 2 w przypadku, gdy respondenci koncentrują większość opinii na pierwszy monit, który widzą wizualnie.
  • Rozważ użycie ankiet dla oddzielnych zasobów usług Azure Communication Services w kontrolowanych eksperymentach, aby zidentyfikować wpływ wydania.

Następne kroki