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.
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.
Utwórz zasób usługi App Insight.
Osadź aplikacja systemu Azure Insights 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
improvementSuggestion
Prześ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 => { // `improvementSuggesstion` 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 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 iLogs
Resource type
jestCommunication
- 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 iLogs
Resource type
jestApplication 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 potrzebamiMerge 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
CallSurveyRatingScale
element . Wszystkie wartości wCallSurveyRatingScale
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
CallSurveyRatingScale
element . Wszystkie wartości wCallSurveyRatingScale
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
CallSurveyRatingScale
element . Wszystkie wartości wCallSurveyRatingScale
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ń.
- 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 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
Analizowanie danych ankiety, zobacz: End of Call Survey Logs (Końce dzienników ankiet połączeń)
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ń