Использование опроса завершения звонка для сбора отзывов пользователей

В этом руководстве показано, как использовать Службы коммуникации Azure конце опроса звонков.

Необходимые компоненты

Внимание

Завершение опроса звонков доступно начиная с версии 1.13.1 пакета SDK для вызовов. При попытке выполнить инструкции обязательно используйте такую версию или более позднюю версию.

  • рекомендуется использовать Node.js активные версии долгосрочной поддержки (LTS).

Пример использования API

После завершения вызова следует использовать функцию "Завершение опроса звонков". Пользователи могут оценить любой вид звонка VoIP, 1:1, группу, собрание, исходящие и входящие. Когда вызов пользователя завершится, приложение может показать пользовательский интерфейс конечному пользователю, позволяя им выбрать оценку оценки и при необходимости выбрать проблемы, с которыми они столкнулись во время вызова из нашего предопределенного списка.

В следующем фрагменте кода показан пример вызова "один к одному". После завершения вызова приложение может отобразить пользовательский интерфейс опроса и после выбора оценки приложение должно вызвать API функций, чтобы отправить опрос с помощью выбора пользователя.

Мы рекомендуем использовать шкалу оценки по умолчанию. Однако можно отправить опрос с пользовательским масштабом оценки. Вы можете ознакомиться с примером приложения для примера использования API.

Только частотный вызов — не настраиваемая шкала

call.feature(Features.CallSurvey).submitSurvey({
    overallRating: { score: 5 }, // issues are optional
}).then(() => console.log('survey submitted successfully'));

Общая оценка является обязательной категорией для всех опросов.

Только для частоты вызовов — с пользовательским масштабированием и проблемами

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

Оценка общего объема, звука и видео с примером проблемы

call.feature(Features.CallSurvey).submitSurvey({
    overallRating: { score: 3 },
    audioRating: { score: 4 },
    videoRating: { score: 3, issues: ['Freezes'] }
}).then(() => console.log('survey submitted successfully'))

Обработка ошибок, которые пакет SDK может отправлять

call.feature(Features.CallSurvey).submitSurvey({
    overallRating: { score: 3 }
}).catch((e) => console.log('error when submitting survey: ' + e))

Поиск различных типов ошибок

Сбои при отправке опроса

API возвращает следующие сообщения об ошибках, если проверка данных завершается ошибкой или опрос не может быть отправлен.

  • Требуется по крайней мере один рейтинг опроса.

  • По умолчанию масштаб X должен составлять от 1 до 5. — где X имеет один из следующих вариантов:

    • overallRating.score
    • audioRating.score
    • videoRating.score
    • ScreenshareRating.score
  • {propertyName}: {rating.score} должно быть между {rating.scale?. lowerBound} и {rating.scale?. upperBound}.

  • {propertyName}: {rating.scale?. lowScoreThreshold} должен быть между {rating.scale?. lowerBound} и {rating.scale?. upperBound}.

  • {propertyName} lowerBound: {rating.scale?. lowerBound} и upperBound: {rating.scale?. upperBound} должен быть от 0 до 100.

  • Повторите попытку [ACS не удалось отправить опрос из-за ошибки сети или другой ошибки].

Мы возвращаем коды ошибок с сообщением.

  • Код ошибки 400 (неправильный запрос) для всех сообщений об ошибках, кроме одного.
{ message: validationErrorMessage, code: 400 }
  • Одно значение 408 (время ожидания) при удалении события:
{ message: "Please try again.", code: 408 }

Все возможные значения

Конфигурация API опроса по умолчанию

Категории оценки API Значение отсечения* Диапазон входных данных Комментарии
Общий вызов 2 1–5 Опросы общего качества вызывающего участника в масштабе 1-5. Ответ 1 указывает на несовершенный вызов и 5 указывает на идеальный вызов. Значение отсечения 2 означает, что ответ клиента 1 или 2 указывает на менее чем идеальный интерфейс вызова.
Аудио 2 1–5 Ответ 1 указывает на несовершенный звуковой интерфейс и 5 указывает на отсутствие проблем со звуком.
Видео 2 1–5 Ответ 1 указывает на несовершенный интерфейс видео и 5 указывает на отсутствие проблем с видео.
Экранная папка 2 1–5 Ответ 1 указывает на несовершенный интерфейс общего доступа к экрану и 5 указывает, что проблемы с общим доступом к экрану не были обнаружены.

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Дополнительные теги опроса

Категории рейтингов Необязательные теги
Общий вызов CallCannotJoin CallCannotInvite HadToRejoin CallEndedUnexpectedly OtherIssues
Аудио NoLocalAudio NoRemoteAudio Echo AudioNoise LowVolume AudioStoppedUnexpectedly DistortedSpeech AudioInterruption OtherIssues
Видео NoVideoReceived NoVideoSent LowQuality Freezes StoppedUnexpectedly DarkVideoReceived AudioVideoOutOfSync OtherIssues
Экранная папка NoContentLocal NoContentRemote CannotPresent LowQuality Freezes StoppedUnexpectedly LargeDelay OtherIssues

Параметры настройки

Вы можете выбрать сбор каждого из четырех значений API или только тех, которые вы найдете наиболее важными. Например, вы можете попросить только клиентов об их общем опыте звонка вместо того, чтобы попросить их о своем аудио, видео и общий доступ к экрану. Вы также можете настроить диапазоны входных данных в соответствии с вашими потребностями. Диапазон входных данных по умолчанию — от 1 до 5 для общего вызова, аудио, видео и общего доступа к экрану. Однако каждое значение API можно настроить от минимума 0 до максимума 100.

Примеры настройки

Категории оценки API Значение отсечения* Диапазон входных данных
Общий вызов 0–100 0–100
Аудио 0–100 0–100
Видео 0–100 0–100
Экранная папка 0–100 0–100

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Настраиваемые вопросы

Помимо использования API завершения опроса, вы можете создать собственные вопросы опроса и включить их в результаты опроса конца звонка. Ниже приведены шаги по внедрению собственных вопросов клиентов в опрос и запроса результатов API завершения опроса и собственных вопросов опроса.

Ответы пользователей, отправленные с помощью AppInsights, доступны в рабочей области App Insights. Книги можно использовать для запроса между несколькими ресурсами, корреляции оценок вызовов и пользовательских данных опроса. Действия по сопоставлению рейтингов вызовов и пользовательских данных опроса:

  • Создайте новые книги (ресурс ACS —> мониторинг> — книги —> новые) и запросите данные опроса вызовов из ресурса ACS.
  • Добавление нового запроса (+Добавить —> добавить запрос)
  • Убедитесь, что Data source это и Resource type есть LogsCommunication
  • Запрос можно переименовать (дополнительные параметры —> имя шага [пример: call-survey])
  • Помните, что это может потребовать не более 2 часов, прежде чем данные опроса становятся видимыми в портал Azure. Запрос данных о рейтинге вызовов:
    ACSCallSurvey
    | where TimeGenerated > now(-24h)
    
  • Добавьте еще один запрос, чтобы получить данные из App Insights (+Добавить —> добавить запрос)
  • Убедитесь, что Data source это и Resource type есть LogsApplication Insights
  • Запрос пользовательских событий:
    customEvents
    | where timestamp > now(-24h)
    | where name == 'CallSurvey'
    | extend d=parse_json(customDimensions)
    | project SurveyId = d.id, ImprovementSuggestion = d.improvementSuggestion
    
  • Запрос можно переименовать (дополнительные параметры —> имя шага [пример: custom-call-survey])
  • Наконец, объедините эти два запроса с помощью surveyId. Создайте новый запрос (+Добавить —> добавить запрос).
  • Убедитесь, Data source что используется слияние и выберите Merge type по мере необходимости

title: Службы коммуникации Azure End of Call Survey titleSuffix: Описание документа Службы коммуникации Azure учебника: узнайте, как использовать завершение опроса звонков для сбора отзывов пользователей. author: viniciusl-msft ms.author: viniciusl manager: gaobob services: azure-communication-services ms.date: 7/30/2024 ms.topic: tutorial ms.service: azure-communication-services ms.subservice: вызывающий вызов

Внимание

Завершение опроса звонков доступно начиная с версии 2.10.0 пакета SDK для вызовов Android. При попытке выполнить инструкции обязательно используйте такую версию или более позднюю версию.

Пример использования API

После завершения вызова следует использовать функцию "Завершение опроса звонков". Пользователи могут оценить любой вид звонка VoIP, 1:1, группу, собрание, исходящие и входящие. Когда вызов пользователя завершится, приложение может показать пользовательский интерфейс конечному пользователю, позволяя им выбрать оценку оценки и при необходимости выбрать проблемы, с которыми они столкнулись во время вызова из нашего предопределенного списка.

В следующем фрагменте кода показан пример вызова "один к одному". После завершения вызова приложение может отобразить пользовательский интерфейс опроса и после выбора оценки приложение должно вызвать API функций, чтобы отправить опрос с помощью выбора пользователя.

Мы рекомендуем использовать шкалу рейтингов по умолчанию, которая является пятью звездами (от 1 до 5). Однако можно отправить опрос с пользовательским масштабом оценки.

Запуск опроса

Вы создаете CallSurvey объект, запуская опрос. Это записывает намерение опроса. В случае, если этот конкретный CallSurvey объект не отправляется после этого, это означает, что опрос был пропущен или проигнорирован конечным клиентом.

SurveyCallFeature surveyCallFeature = call.feature(Features.SURVEY);
try {
    CallSurvey survey = surveyCallFeature.startSurvey().get();
} catch (InterruptedException | ExecutionException e) {
    // failure to start survey
}

Общие сведения об использовании

При вызовах оценки необходимо учитывать значения, определенные в поле масштабирования. Значение нижнего трафика указывает на худший опыт, в то время как максимальное значение входящие означает идеальный интерфейс. Оба значения являются включающими.

Общая оценка является обязательной категорией для всех опросов.

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Дополнительные сведения об использовании предлагаемых опросов см. в разделе "Основные понятия опроса"

Только частотный вызов — не настраиваемая шкала

SurveyScore overall = new SurveyScore();
overall.setScore(5);
callSurvey.setOverallScore(overall);

Только для частоты вызовов — с пользовательским масштабированием и проблемами

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

Оценка общего объема, звука и видео с примером проблемы

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

Отправка опроса и обработка ошибок, которые пакет SDK может отправлять

try {
    CallSurveyResult survey = surveyCallFeature.submitSurvey(survey).get();
} catch (InterruptedException e) {
    // Threading error
} catch (ExecutionException e) {
    Log.e("SURVEY", e.getCause().getMessage());
}

Поиск различных типов ошибок

Сбои при отправке опроса:

API submitSurvey может возвращать ошибку в следующих сценариях:

  • Требуется общая оценка опроса.

  • CallSurveyRatingScale границы должны находиться в пределах 0 и 100. Нижний трафик должен быть меньше верхнего. LowScoreThreshold должен находиться в пределах границ.

  • Любой из показателей должен уважать границы, определенные параметром CallSurveyRatingScale. Все значения в объекте CallSurveyRatingScale включены. С помощью шкалы по умолчанию значение оценки должно быть от 1 до 5.

  • Не удается отправить опрос из-за ошибки сети или службы.

Доступные теги опроса

Общий вызов

Тег Description
CannotJoin Клиент не смог присоединиться к вызову
CannotInvite Клиент не смог добавить нового участника по вызову
HadToRejoin Клиент слева и снова присоединился к вызову в качестве обходного решения проблемы
CallEndedUnexpectedly Звонок клиента закончился без видимой причины
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с аудио

Тег Description
NoLocalAudio Нет звука на компьютере клиента от звонка, неспособности услышать кого-либо в вызове
NoRemoteAudio Отсутствующий звук от определенного участника
Echo Эхо, воспринимаемое в вызове
AudioNoise Звук, полученный с непредвиденным шумом
LowVolume Звук слишком низкий
AudioStoppedUnexpectedly Звук остановлен без четкой причины (например, никто не отключен)
DistortedSpeech Голос участника искажается, отличается от ожидаемого голоса
AudioInterruption Клиент испытывает прерывания звука, сокращение голоса и т. д.
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с видео

Тег Description
NoVideoReceived Клиент не получает видео от участника
NoVideoSent Клиент запускает видео, но никто в вызове не может видеть его
LowQuality Низкое качество видео
Freezes Зависание видео
StoppedUnexpectedly Экранная папка останавливается без четкой причины (например, камера включена и видеозвонок включена)
DarkVideoReceived Видео отправляется, но участник видит только темное поле (или другой один цвет)
AudioVideoOutOfSync Видео и звук, кажется, не синхронизированы
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с общим доступом к экрану

Тег Description
NoContentLocal Клиент не получает общий доступ к экрану от участника, который предоставляет общий доступ
NoContentRemote Клиент предоставляет общий доступ к экрану, но другие участники не могут видеть его
CannotPresent Не удается запустить общий ресурс экрана
LowQuality Низкое качество видео с экрана, например не удается прочитать
Freezes Общий доступ к экрану зависает во время презентации
StoppedUnexpectedly Экранная папка останавливается без четкой причины (например, общий доступ к экрану не был остановлен клиентом)
LargeDelay Воспринимаемая задержка между отображаемым и видимым
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Параметры настройки

Вы можете выбрать сбор каждого из четырех значений API или только тех, которые вы найдете наиболее важными. Например, вы можете попросить только клиентов об их общем опыте звонка вместо того, чтобы попросить их о своем аудио, видео и общий доступ к экрану. Вы также можете настроить диапазоны входных данных в соответствии с вашими потребностями. Диапазон входных данных по умолчанию составляет от 1 до 5 для общего вызова, аудио, видео и общего доступа к экрану. Однако каждое значение API можно настроить от минимума 0 до максимума 100.

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Настраиваемые вопросы

Помимо использования API завершения опроса, вы можете создать собственные вопросы опроса и включить их в результаты опроса конца звонка.

Результат полезных SubmitSurvey данных операции предоставляет данные, которые можно использовать для сопоставления данных опроса ACS с собственными пользовательскими данными и хранилищем. CallSurveyResult класс имеет SurveyId поле, которое обозначает уникальный идентификатор опроса и CallId обозначает идентификатор вызова, в котором был создан опрос. Сохранение этих идентификаторов вместе с настраиваемыми данными позволяет связывать данные уникальным образом.

Внимание

Завершение опроса звонков доступно начиная с версии 2.10.0 пакета SDK для вызовов iOS. При попытке выполнить инструкции обязательно используйте такую версию или более позднюю версию.

Пример использования API

После завершения вызова следует использовать функцию "Завершение опроса звонков". Пользователи могут оценить любой вид звонка VoIP, 1:1, группу, собрание, исходящие и входящие. Когда вызов пользователя завершится, приложение может показать пользовательский интерфейс конечному пользователю, позволяя им выбрать оценку оценки и при необходимости выбрать проблемы, с которыми они столкнулись во время вызова из нашего предопределенного списка.

В следующем фрагменте кода показан пример вызова "один к одному". После завершения вызова приложение может отобразить пользовательский интерфейс опроса и после выбора оценки приложение должно вызвать API функций, чтобы отправить опрос с помощью выбора пользователя.

Мы рекомендуем использовать шкалу рейтингов по умолчанию, которая является пятью звездами (от 1 до 5). Однако можно отправить опрос с пользовательским масштабом оценки.

Запуск опроса

Вы создаете CallSurvey объект, запуская опрос. Это записывает намерение опроса. В случае, если этот конкретный CallSurvey объект не отправляется после этого, это означает, что опрос был пропущен или проигнорирован конечным клиентом.

var surveyCallFeature = self.call.feature(Features.survey)
do {
    try self.callSurvey = await surveyFeature.startSurvey()
} catch {
    print("Failure to start survey")
}

Общие сведения об использовании

При вызовах оценки необходимо учитывать значения, определенные в поле масштабирования. Значение нижнего трафика указывает на худший опыт, в то время как максимальное значение входящие означает идеальный интерфейс. Оба значения являются включающими.

Общая оценка является обязательной категорией для всех опросов.

Дополнительные сведения об использовании предлагаемых опросов см. в разделе "Основные понятия опроса"

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Только частотный вызов — не настраиваемая шкала

let overallScore = SurveyScore()
overallScore.score = Int32(5)
callSurvey.overallScore = overallScore

Только для частоты вызовов — с пользовательским масштабированием и проблемами

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

Оценка общего объема, звука и видео с примером проблемы

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

Отправка опроса и обработка ошибок, которые пакет SDK может отправлять

do {
    var result =  try await self.surveyFeature!.submit(survey: callSurvey)
} catch let error as NSError {
    print("==> Survey Not Submitted " + error.localizedDescription)
}

Поиск различных типов ошибок

Сбои при отправке опроса:

API submitSurvey может возвращать ошибку в следующих сценариях:

  • Требуется общая оценка опроса.

  • CallSurveyRatingScale границы должны находиться в пределах 0 и 100. Нижний трафик должен быть меньше верхнего. LowScoreThreshold должен находиться в пределах границ.

  • Любой из показателей должен уважать границы, определенные параметром CallSurveyRatingScale. Все значения в объекте CallSurveyRatingScale включены. С помощью шкалы по умолчанию значение оценки должно быть от 1 до 5.

  • Не удается отправить опрос из-за ошибки сети или службы.

Доступные теги опроса

Общий вызов

Тег Description
CannotJoin Клиент не смог присоединиться к вызову
CannotInvite Клиент не смог добавить нового участника по вызову
HadToRejoin Клиент слева и снова присоединился к вызову в качестве обходного решения проблемы
CallEndedUnexpectedly Звонок клиента закончился без видимой причины
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с аудио

Тег Description
NoLocalAudio Нет звука на компьютере клиента от звонка, неспособности услышать кого-либо в вызове
NoRemoteAudio Отсутствующий звук от определенного участника
Echo Эхо, воспринимаемое в вызове
AudioNoise Звук, полученный с непредвиденным шумом
LowVolume Звук слишком низкий
AudioStoppedUnexpectedly Звук остановлен без четкой причины (например, никто не отключен)
DistortedSpeech Голос участника искажается, отличается от ожидаемого голоса
AudioInterruption Клиент испытывает прерывания звука, сокращение голоса и т. д.
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с видео

Тег Description
NoVideoReceived Клиент не получает видео от участника
NoVideoSent Клиент запускает видео, но никто в вызове не может видеть его
LowQuality Низкое качество видео
Freezes Зависание видео
StoppedUnexpectedly Экранная папка останавливается без четкой причины (например, камера включена и видеозвонок включена)
DarkVideoReceived Видео отправляется, но участник видит только темное поле (или другой один цвет)
AudioVideoOutOfSync Видео и звук, похоже, не синхронизированы
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с общим доступом к экрану

Тег Description
NoContentLocal Клиент не получает общий доступ к экрану от участника, который предоставляет общий доступ
NoContentRemote Клиент предоставляет общий доступ к экрану, но другие участники не могут видеть его
CannotPresent Не удается запустить общий ресурс экрана
LowQuality Низкое качество видео с экрана, например не удается прочитать
Freezes Общий доступ к экрану зависает во время презентации
StoppedUnexpectedly Экранная папка останавливается без четкой причины (например, общий ресурс экрана не был остановлен клиентом)
LargeDelay Воспринимаемая задержка между отображаемым и видимым
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Параметры настройки

Вы можете выбрать сбор каждого из четырех значений API или только тех, которые вы найдете наиболее важными. Например, вы можете попросить только клиентов об их общем опыте звонка вместо того, чтобы попросить их о своем аудио, видео и общий доступ к экрану. Вы также можете настроить диапазоны входных данных в соответствии с вашими потребностями. Диапазон входных данных по умолчанию составляет от 1 до 5 для общего вызова, аудио, видео и общего доступа к экрану. Однако каждое значение API можно настроить от минимума 0 до максимума 100.

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Настраиваемые вопросы

Помимо использования API завершения опроса, вы можете создать собственные вопросы опроса и включить их в результаты опроса конца звонка.

Однако полезные данные SubmitSurvey результатов операции предоставляют данные, которые можно использовать для сопоставления данных опроса ACS с собственными пользовательскими данными и хранилищем. CallSurveyResult класс имеет SurveyId поле, которое обозначает уникальный идентификатор опроса и CallId обозначает идентификатор вызова, в котором был создан опрос. Сохранение этих идентификаторов вместе с настраиваемыми данными позволяет связывать данные уникальным образом.

Внимание

Завершение опроса звонков доступно начиная с версии 1.8.0 пакета SDK для вызовов Windows. При попытке выполнить инструкции обязательно используйте такую версию или более позднюю версию.

Пример использования API

После завершения вызова следует использовать функцию "Завершение опроса звонков". Пользователи могут оценить любой вид звонка VoIP, 1:1, группу, собрание, исходящие и входящие. Когда вызов пользователя завершится, приложение может показать пользовательский интерфейс конечному пользователю, позволяя им выбрать оценку оценки и при необходимости выбрать проблемы, с которыми они столкнулись во время вызова из нашего предопределенного списка.

В следующем фрагменте кода показан пример вызова "один к одному". После завершения вызова приложение может отобразить пользовательский интерфейс опроса и после выбора оценки приложение должно вызвать API функций, чтобы отправить опрос с помощью выбора пользователя.

Мы рекомендуем использовать шкалу рейтингов по умолчанию, которая является пятью звездами (от 1 до 5). Однако можно отправить опрос с пользовательским масштабом оценки.

Запуск опроса

Вы создаете CallSurvey объект, запуская опрос. Это записывает намерение опроса. В случае, если этот конкретный CallSurvey объект не отправляется после этого, это означает, что опрос был пропущен или проигнорирован конечным клиентом.

var surveyCallFeature = call.Features.Survey;
var survey = await surveyCallFeature.StartSurveyAsync();

Общие сведения об использовании

При вызовах оценки необходимо учитывать значения, определенные в поле масштабирования. Значение нижнего трафика указывает на худший опыт, в то время как максимальное значение входящие означает идеальный интерфейс. Оба значения являются включающими.

Общая оценка является обязательной категорией для всех опросов.

Дополнительные сведения об использовании предлагаемых опросов см. в разделе "Основные понятия опроса"

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Только частотный вызов — не настраиваемая шкала

survey.OverallScore = new CallSurveyScore() { Score = 5 };

Только для частоты вызовов — с пользовательским масштабированием и проблемами

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

Оценка общего объема, звука и видео с примером проблемы

survey.OverallScore = new CallSurveyScore() { 
    Score = 5 
};
survey.AudioScore = new CallSurveyScore() { 
    Score = 4
};
survey.VideoScore = new CallSurveyScore() { 
    Score = 3
};

survey.videoIssues = VideoIssues.Freezes;

Отправка опроса и обработка ошибок, которые пакет SDK может отправлять

try
{
    CallSurveyResult result = await surveyCallFeature.SubmitSurveyAsync(survey);
    Console.WriteLine("Survey submitted" + result.SurveyId);
} catch (Exception ex)
{
   Console.WriteLine(ex.Message);
}

Поиск различных типов ошибок

Сбои при отправке опроса:

API submitSurvey может возвращать ошибку в следующих сценариях:

  • Требуется общая оценка опроса.

  • CallSurveyRatingScale границы должны находиться в пределах 0 и 100. Нижний трафик должен быть меньше верхнего. LowScoreThreshold должен находиться в пределах границ.

  • Любой из показателей должен уважать границы, определенные параметром CallSurveyRatingScale. Все значения в объекте CallSurveyRatingScale включены. С помощью шкалы по умолчанию значение оценки должно быть от 1 до 5.

  • Не удается отправить опрос из-за ошибки сети или службы.

Доступные теги опроса

Общий вызов

Тег Description
CannotJoin Клиент не смог присоединиться к вызову
CannotInvite Клиент не смог добавить нового участника по вызову
HadToRejoin Клиент слева и снова присоединился к вызову в качестве обходного решения проблемы
EndedUnexpectedly Звонок клиента закончился без видимой причины
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы со звуком

Тег Description
NoLocalAudio Нет звука на компьютере клиента от звонка, неспособности услышать кого-либо в вызове
NoRemoteAudio Отсутствующий звук от определенного участника
Echo Эхо, воспринимаемое в вызове
AudioNoise Звук, полученный с непредвиденным шумом
LowVolume Звук слишком низкий
AudioStoppedUnexpectedly Звук остановлен без четкой причины (например, никто не отключен)
DistortedSpeech Голос участника искажается, отличается от ожидаемого голоса
AudioInterruption Клиент испытывает прерывания звука, сокращение голоса и т. д.
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с видео

Тег Description
NoVideoReceived Клиент не получает видео от участника
NoVideoSent Клиент запускает видео, но никто в вызове не может видеть его
LowQuality Низкое качество видео
Freezes Зависание видео
StoppedUnexpectedly Экранная папка останавливается без четкой причины (например, камера включена и видеозвонок включена)
DarkVideoReceived Видео отправляется, но участник видит только темное поле (или другой один цвет)
AudioVideoOutOfSync Видео и звук, похоже, не синхронизированы
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Проблемы с общим доступом к экрану

Тег Description
NoContentLocal Клиент не получает общий доступ к экрану от участника, который предоставляет общий доступ
NoContentRemote Клиент предоставляет общий доступ к экрану, но другие участники не могут видеть его
CannotPresent Не удается запустить общий ресурс экрана
LowQuality Низкое качество видео с экрана, например не удается прочитать
Freezes Общий доступ к экрану зависает во время презентации
StoppedUnexpectedly Экранная папка останавливается без четкой причины (например, общий доступ к экрану не был остановлен клиентом)
LargeDelay Воспринимаемая задержка между отображаемым и видимым
OtherIssues Любая проблема, которая не соответствует предыдущим описаниям

Параметры настройки

Вы можете выбрать сбор каждого из четырех значений API или только тех, которые вы найдете наиболее важными. Например, вы можете попросить только клиентов об их общем опыте звонка вместо того, чтобы попросить их о своем аудио, видео и общий доступ к экрану. Вы также можете настроить диапазоны входных данных в соответствии с вашими потребностями. Диапазон входных данных по умолчанию составляет от 1 до 5 для общего вызова, аудио, видео и общего доступа к экрану. Однако каждое значение API можно настроить от минимума 0 до максимума 100.

Примечание.

Указанное значение отрезка вопроса в API — это пороговое значение, которое корпорация Майкрософт использует при анализе данных опроса. При настройке значения отсечения или диапазона входных данных корпорация Майкрософт анализирует данные опроса в соответствии с вашей настройкой.

Настраиваемые вопросы

Помимо использования API завершения опроса, вы можете создать собственные вопросы опроса и включить их в результаты опроса конца звонка.

Однако полезные данные SubmitSurvey результатов операции предоставляют данные, которые можно использовать для сопоставления данных опроса ACS с собственными пользовательскими данными и хранилищем. CallSurveyResult класс имеет SurveyId поле, которое обозначает уникальный идентификатор опроса и CallId обозначает идентификатор вызова, в котором был создан опрос. Сохранение этих идентификаторов вместе с настраиваемыми данными позволяет связывать данные уникальным образом.

Сбор данных опроса

Внимание

Необходимо включить параметр диагностики в Azure Monitor для отправки данных журнала опросов в рабочую область Log Analytics, Центры событий или учетную запись хранения Azure для получения и анализа данных опроса. Если данные опроса не отправляются в один из этих вариантов, данные опроса не будут храниться и будут потеряны. Чтобы включить эти журналы для служб коммуникации, см. раздел "Окончание журналов опроса звонков"

Просмотр данных опроса с помощью рабочей области Log Analytics

Необходимо включить рабочую область Log Analytics для хранения данных журнала опросов и доступа к результатам опроса. Чтобы включить эти журналы для службы коммуникации, см. раздел "Завершение журналов опроса звонков".

Рекомендации

Ниже приведены рекомендуемые потоки опросов и предложенные вопросы для рассмотрения. Разработка может использовать нашу рекомендацию или использовать настраиваемые запросы и потоки вопросов для визуального интерфейса.

Вопрос 1. Как пользователи воспринимают общий опыт качества звонков? Мы рекомендуем начать опрос, только спрашивая об общем качестве участников. Если вы отделяете первые и второй вопросы, это помогает собирать только ответы на проблемы с аудио, видео и общий доступ к экранам, если участник опроса указывает, что они столкнулись с проблемами качества звонка.

  • Предлагаемый запрос: "Как было качество вызова?"
  • Значения вопросов API: общий вызов

Вопрос 2. Пользователь воспринимал какие-либо проблемы с аудио, видео или общий доступ к экранам в вызове? Если участник опроса ответил на вопрос 1 с оценкой по или ниже значения отсечения для общего вызова, то приведите второй вопрос.

  • Предложен запрос: "Что могло быть лучше?"
  • Значения вопросов API: аудио, видео и общий доступ к экрану

Рекомендации по опросу

  • Избегайте выгорание опросов, не проводите опрос всех участников звонка.
  • Порядок вопросов. Рекомендуется случайно выбрать последовательность необязательных тегов в вопросе 2, если респонденты сосредоточены большую часть отзывов на первом запросе, который они визуально видят.
  • Рассмотрите возможность использования опросов для отдельных Службы коммуникации Azure ресурсов в контролируемых экспериментах для выявления последствий выпуска.

Следующие шаги