通話終了調査を使用してユーザーのフィードバックを収集する

このチュートリアルでは、Azure Communication Services の通話終了アンケートを使用する方法について説明します。

前提条件

重要

通話終了調査は、Calling SDK のバージョン 1.13.1 以降で使用できます。 手順を試すときは、必ずそのバージョン以降を使用してください。

  • Node.js のアクティブな長期サポート (LTS) バージョンをお勧めします。

API 使用の例

通話終了調査機能は、通話終了後に使用する必要があります。 ユーザーは、1 対 1、グループ、会議、発信、着信など、あらゆる種類の VoIP 通話を評価することができます。 ユーザーの通話が終了すると、アプリケーションはエンド ユーザーに UI を表示して、評価スコアを選択できるようにし、必要に応じて、通話中に発生した問題を事前に定義された一覧から選択できるようにします。

次の切り取りコードは、1 対 1 通話の例を示しています。 通話が終了すると、アプリケーションがアンケート UI を表示します。ユーザーが評価を選択したら、アプリケーションは機能 API を呼び出して、ユーザーの選択肢を含むアンケートを送信する必要があります。

既定の評価スケールを使用することをお勧めします。 ただし、カスタム評価スケールを使用してアンケートを送信することはできます。 API の使用例については、サンプル アプリケーションを確認してください。

通話のみ評価 - カスタム スケールなし

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

OverallRating は、すべてのアンケートに必要なカテゴリです。

通話のみ評価 - カスタム スケールと問題あり

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 は次のエラー メッセージを返します。

  • 少なくとも 1 つのアンケートの評価が必要です。

  • 既定ではスケール 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 がアンケートを送信できませんでした]。

メッセージと共にエラー コードが返されます。

  • 1 つを除くすべてのエラー メッセージでエラー コード 400 (不正な要求)。
{ message: validationErrorMessage, code: 400 }
  • イベントが破棄されたときの 1回の 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 は画面共有の問題がなかったことを示します。

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

その他のアンケート タグ

評価カテゴリ 省略可能なタグ
全体的な呼び出し 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

カスタマイズ オプション

4 つの API 値のそれぞれを収集することも、最も重要と思われるものだけを収集することも可能です。 たとえば、オーディオ、ビデオ、画面共有の体験についてお客様に尋ねるのではなく、全体的な通話体験についてのみ尋ねるように選択することができます。 また、入力範囲をニーズに合わせてカスタマイズすることもできます。 既定の入力範囲は、全体的な通話、オーディオ、ビデオ、画面共有では 1 ~ 5 です。 ただし、それぞれの API 値を最小 0 から最大 100 までカスタマイズできます。

カスタマイズの例

API の評価カテゴリ カットオフ値* 入力範囲
全体的な呼び出し 0 ~ 100 0 ~ 100
オーディオ 0 ~ 100 0 ~ 100
ビデオ 0 ~ 100 0 ~ 100
画面共有 0 ~ 100 0 ~ 100

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

カスタム質問

通話終了アンケート API を使うだけでなく、独自のアンケートの質問を作成し、それらを通話終了アンケートの結果に組み込むことができます。 以下では、顧客への独自の質問をアンケートに組み込み、通話終了アンケート API の結果と独自のアンケートの質問のクエリを実行する手順を示します。

AppInsights を使用して送信されたユーザーの応答は、App Insights ワークスペースで使用できます。 ブックを使用して、複数のリソース間でクエリを実行し、通話の評価とカスタムのアンケート データを関連付けることができます。 通話の評価とカスタムのアンケート データを関連付ける手順:

  • 新しいブックを作成し ([ACS リソース] -> [監視] -> [ブック] -> [新規])、ACS リソースから通話アンケート データのクエリを実行します。
  • 新しいクエリを追加します ([+追加] -> [クエリの追加])
  • Data sourceLogs で、Resource typeCommunication であることを確認します
  • クエリの名前を変更できます ([詳細設定] -> [ステップ名] [例: call-survey])
  • アンケート データが Azure portal に表示されるまでに最大 2 時間かかる場合があることに注意してください。 通話の評価データのクエリを実行します。
    ACSCallSurvey
    | where TimeGenerated > now(-24h)
    
  • App Insights からデータを取得するための別のクエリを追加します ([+追加] -> [クエリの追加])
  • Data sourceLogs で、Resource typeApplication Insights であることを確認します
  • カスタム イベントのクエリを実行します。
    customEvents
    | where timestamp > now(-24h)
    | where name == 'CallSurvey'
    | extend d=parse_json(customDimensions)
    | project SurveyId = d.id, ImprovementSuggestion = d.improvementSuggestion
    
  • クエリの名前を変更できます ([詳細設定] -> [ステップ名] [例: custom-call-survey])
  • 最後に、これら 2 つのクエリを surveyId でマージします。 新しいクエリを作成します ([+追加] -> [クエリの追加])。
  • Data source が Merge であることを確認し、必要に応じて Merge type を選びます

title: Azure Communication Services の通話終了アンケート titleSuffix: Azure Communication Services チュートリアル ドキュメント description: 通話終了アンケートを使用してユーザーのフィードバックを収集する方法について説明します。 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: calling

重要

通話終了アンケートは、Android Calling SDK のバージョン 2.10.0 以降で使用できます。 手順を試すときは、必ずそのバージョン以降を使用してください。

API 使用の例

通話終了調査機能は、通話終了後に使用する必要があります。 ユーザーは、1 対 1、グループ、会議、発信、着信など、あらゆる種類の VoIP 通話を評価することができます。 ユーザーの通話が終了すると、アプリケーションはエンド ユーザーに UI を表示して、評価スコアを選択できるようにし、必要に応じて、通話中に発生した問題を事前に定義された一覧から選択できるようにします。

次の切り取りコードは、1 対 1 通話の例を示しています。 通話が終了すると、アプリケーションがアンケート UI を表示します。ユーザーが評価を選択したら、アプリケーションは機能 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
}

一般的な使用

評価を呼び出すときは、スケール フィールドで定義されている値を考慮する必要があります。 lowerBound の値は考えられる最悪のエクスペリエンスを示し、upperBound の値は完璧なエクスペリエンスを意味します。 どちらの値もそれ自体を含みます。

OverallRating は、すべてのアンケートに必要なカテゴリです。

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

アンケートの推奨される使用方法について詳しくは、アンケートの概念に関する記事をご覧ください

通話のみ評価 - カスタム スケールなし

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

さまざまな種類のエラーを見つける

アンケート送信時のエラー:

submitSurvey API は、次のシナリオでエラーを返す可能性があります。

  • 全体的なアンケート評価が必要です。

  • CallSurveyRatingScale の境界は、0 から 100 の範囲内である必要があります。 LowerBound は UpperBound より小さくする必要があります。 LowScoreThreshold は境界内にある必要があります。

  • すべてのスコアでは、CallSurveyRatingScale によって定義される境界を考慮する必要があります。 CallSurveyRatingScale オブジェクト内のすべての値が含まれます。 既定のスケールを使う場合、スコア値は 1 から 5 の間である必要があります。

  • ネットワークまたはサービスのエラーのため、アンケートを送信できません。

利用できるアンケート タグ

全体的な呼び出し

タグ 説明
CannotJoin 顧客が通話に参加できなかった
CannotInvite 顧客が通話に新しい参加者を追加できなかった
HadToRejoin 問題を回避するため、顧客は通話を退席して再び参加した
CallEndedUnexpectedly 顧客の通話が、明らかな理由なしに終了した
OtherIssues 前の説明に適合しないすべての問題

オーディオに関する問題

タグ 説明
NoLocalAudio 顧客のコンピューターで通話のオーディオが出ない、通話中の誰の声も聞こえない
NoRemoteAudio 特定の参加者のオーディオが出ない
Echo 通話でエコーが発生する
AudioNoise オーディオで意図しないノイズが発生する
LowVolume オーディオが低すぎる
AudioStoppedUnexpectedly 明確な理由なしでオーディオが停止した (ミュートされていないなど)
DistortedSpeech 参加者の声が、予想される音声とは異なり、歪んでいる
AudioInterruption カスタマー エクスペリエンスのオーディオの中断、音声カットなど
OtherIssues 前の説明に適合しないすべての問題

ビデオの問題

タグ 説明
NoVideoReceived 顧客が参加者からビデオを受信しない
NoVideoSent 顧客がビデオを開始しても、通話中の誰もそれを見ることができない
LowQuality ビデオの品質が低い
Freezes ビデオがフリーズする
StoppedUnexpectedly 明確な理由なしで画面共有が停止する (カメラがオンになっていて、ビデオ通話がオンになっているなど)
DarkVideoReceived ビデオは送信されているが、参加者には暗色のボックス (または別の単一の色) のみが表示される
AudioVideoOutOfSync ビデオとオーディオが同期していないと思われる
OtherIssues 前の説明に適合しないすべての問題

画面共有の問題

タグ 説明
NoContentLocal 顧客が、共有している参加者から画面共有を受け取らない
NoContentRemote 顧客が画面を共有しているが、他の 1 人以上の参加者がそれを見ることができない
CannotPresent 画面共有を開始できない
LowQuality 画面共有ビデオの品質が低い (読めないなど)
Freezes プレゼンテーション中に画面共有がフリーズする
StoppedUnexpectedly 画面共有が明確な理由なしで停止する (画面共有が顧客によって停止されなかった、など)
LargeDelay 表示を送る側と受け取る側の間で遅延が発生する
OtherIssues 前の説明に適合しないすべての問題

カスタマイズ オプション

4 つの API 値のそれぞれを収集することも、最も重要と思われるものだけを収集することも可能です。 たとえば、オーディオ、ビデオ、画面共有の体験についてお客様に尋ねるのではなく、全体的な通話体験についてのみ尋ねるように選択することができます。 また、入力範囲をニーズに合わせてカスタマイズすることもできます。 既定の入力範囲は、全体的な通話、オーディオ、ビデオ、画面共有では 1 から 5 です。 ただし、それぞれの API 値を最小 0 から最大 100 までカスタマイズできます。

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

カスタム質問

通話終了アンケート API を使うだけでなく、独自のアンケートの質問を作成し、それらを通話終了アンケートの結果に組み込むことができます。

SubmitSurvey 操作の結果ペイロードで提供されるデータを使って、ACS アンケートのデータと独自のカスタム データおよびストレージを関連付けることができます。 CallSurveyResult クラスの SurveyId フィールドはアンケートの一意の識別子を表し、CallId はアンケートが生成された通話の識別子を表します。 これらの識別子をカスタマイズしたデータと共に保存すると、データを一意に関連付けることができます。

重要

通話終了アンケートは、iOS Calling SDK のバージョン 2.10.0 以降で使用できます。 手順を試すときは、必ずそのバージョン以降を使用してください。

API 使用の例

通話終了調査機能は、通話終了後に使用する必要があります。 ユーザーは、1 対 1、グループ、会議、発信、着信など、あらゆる種類の VoIP 通話を評価することができます。 ユーザーの通話が終了すると、アプリケーションはエンド ユーザーに UI を表示して、評価スコアを選択できるようにし、必要に応じて、通話中に発生した問題を事前に定義された一覧から選択できるようにします。

次の切り取りコードは、1 対 1 通話の例を示しています。 通話が終了すると、アプリケーションがアンケート UI を表示します。ユーザーが評価を選択したら、アプリケーションは機能 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")
}

一般的な使用

評価を呼び出すときは、スケール フィールドで定義されている値を考慮する必要があります。 lowerBound の値は考えられる最悪のエクスペリエンスを示し、upperBound の値は完璧なエクスペリエンスを意味します。 どちらの値もそれ自体を含みます。

OverallRating は、すべてのアンケートに必要なカテゴリです。

アンケートの推奨される使用方法について詳しくは、アンケートの概念に関する記事をご覧ください

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

通話のみ評価 - カスタム スケールなし

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

さまざまな種類のエラーを見つける

アンケート送信時のエラー:

submitSurvey API は、次のシナリオでエラーを返す可能性があります。

  • 全体的なアンケート評価が必要です。

  • CallSurveyRatingScale の境界は、0 から 100 の範囲内である必要があります。 LowerBound は UpperBound より小さくする必要があります。 LowScoreThreshold は境界内にある必要があります。

  • すべてのスコアでは、CallSurveyRatingScale によって定義される境界を考慮する必要があります。 CallSurveyRatingScale オブジェクト内のすべての値が含まれます。 既定のスケールを使う場合、スコア値は 1 から 5 の間である必要があります。

  • ネットワークまたはサービスのエラーのため、アンケートを送信できません。

利用できるアンケート タグ

全体的な呼び出し

タグ 説明
CannotJoin 顧客が通話に参加できなかった
CannotInvite 顧客が通話に新しい参加者を追加できなかった
HadToRejoin 問題を回避するため、顧客は通話を退席して再び参加した
CallEndedUnexpectedly 顧客の通話が、明らかな理由なしに終了した
OtherIssues 前の説明に適合しないすべての問題

オーディオに関する問題

タグ 説明
NoLocalAudio 顧客のコンピューターで通話のオーディオが出ない、通話中の誰の声も聞こえない
NoRemoteAudio 特定の参加者のオーディオが出ない
Echo 通話でエコーが発生する
AudioNoise オーディオで意図しないノイズが発生する
LowVolume オーディオが低すぎる
AudioStoppedUnexpectedly 明確な理由なしでオーディオが停止した (ミュートされていないなど)
DistortedSpeech 参加者の声が、予想される音声とは異なり、歪んでいる
AudioInterruption カスタマー エクスペリエンスのオーディオの中断、音声カットなど
OtherIssues 前の説明に適合しないすべての問題

ビデオの問題

タグ 説明
NoVideoReceived 顧客が参加者からビデオを受信しない
NoVideoSent 顧客がビデオを開始しても、通話中の誰もそれを見ることができない
LowQuality ビデオの品質が低い
Freezes ビデオがフリーズする
StoppedUnexpectedly 明確な理由なしで画面共有が停止する (カメラがオンになっていて、ビデオ通話がオンになっているなど)
DarkVideoReceived ビデオは送信されているが、参加者には暗色のボックス (または別の単一の色) のみが表示される
AudioVideoOutOfSync ビデオとオーディオが同期していないと思われる
OtherIssues 前の説明に適合しないすべての問題

画面共有の問題

タグ 説明
NoContentLocal 顧客が、共有している参加者から画面共有を受け取らない
NoContentRemote 顧客が画面を共有しているが、他の 1 人以上の参加者がそれを見ることができない
CannotPresent 画面共有を開始できない
LowQuality 画面共有ビデオの品質が低い (読めないなど)
Freezes プレゼンテーション中に画面共有がフリーズする
StoppedUnexpectedly 画面共有が明確な理由なしで停止する (画面共有が顧客によって停止されなかった、など)
LargeDelay 表示を送る側と受け取る側の間で遅延が発生する
OtherIssues 前の説明に適合しないすべての問題

カスタマイズ オプション

4 つの API 値のそれぞれを収集することも、最も重要と思われるものだけを収集することも可能です。 たとえば、オーディオ、ビデオ、画面共有の体験についてお客様に尋ねるのではなく、全体的な通話体験についてのみ尋ねるように選択することができます。 また、入力範囲をニーズに合わせてカスタマイズすることもできます。 既定の入力範囲は、全体的な通話、オーディオ、ビデオ、画面共有では 1 から 5 です。 ただし、それぞれの API 値を最小 0 から最大 100 までカスタマイズできます。

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

カスタム質問

通話終了アンケート API を使うだけでなく、独自のアンケートの質問を作成し、それらを通話終了アンケートの結果に組み込むことができます。

ただし、SubmitSurvey 操作の結果ペイロードで提供されるデータを使って、ACS アンケートのデータと独自のカスタム データおよびストレージを関連付けることができます。 CallSurveyResult クラスの SurveyId フィールドはアンケートの一意の識別子を表し、CallId はアンケートが生成された通話の識別子を表します。 これらの識別子をカスタマイズしたデータと共に保存すると、データを一意に関連付けることができます。

重要

通話終了アンケートは、Windows Calling SDK のバージョン 1.8.0 以降で使用できます。 手順を試すときは、必ずそのバージョン以降を使用してください。

API 使用の例

通話終了調査機能は、通話終了後に使用する必要があります。 ユーザーは、1 対 1、グループ、会議、発信、着信など、あらゆる種類の VoIP 通話を評価することができます。 ユーザーの通話が終了すると、アプリケーションはエンド ユーザーに UI を表示して、評価スコアを選択できるようにし、必要に応じて、通話中に発生した問題を事前に定義された一覧から選択できるようにします。

次の切り取りコードは、1 対 1 通話の例を示しています。 通話が終了すると、アプリケーションがアンケート UI を表示します。ユーザーが評価を選択したら、アプリケーションは機能 API を呼び出して、ユーザーの選択肢を含むアンケートを送信する必要があります。

既定の評価スケール (1 から 5) を使うことをお勧めします。 ただし、カスタム評価スケールを使用してアンケートを送信することはできます。

アンケートを開始する

アンケートを開始して、CallSurvey オブジェクトを作成します。 これにより、アンケートの意図が記録されます。 この特定の CallSurvey オブジェクトが後で送信されない場合は、アンケートがエンド カスタマーによってスキップまたは無視されたことを意味します。

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

一般的な使用

評価を呼び出すときは、スケール フィールドで定義されている値を考慮する必要があります。 lowerBound の値は考えられる最悪のエクスペリエンスを示し、upperBound の値は完璧なエクスペリエンスを意味します。 どちらの値もそれ自体を含みます。

OverallRating は、すべてのアンケートに必要なカテゴリです。

アンケートの推奨される使用方法について詳しくは、アンケートの概念に関する記事をご覧ください

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

通話のみ評価 - カスタム スケールなし

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

さまざまな種類のエラーを見つける

アンケート送信時のエラー:

submitSurvey API は、次のシナリオでエラーを返す可能性があります。

  • 全体的なアンケート評価が必要です。

  • CallSurveyRatingScale の境界は、0 から 100 の範囲内である必要があります。 LowerBound は UpperBound より小さくする必要があります。 LowScoreThreshold は境界内にある必要があります。

  • すべてのスコアでは、CallSurveyRatingScale によって定義される境界を考慮する必要があります。 CallSurveyRatingScale オブジェクト内のすべての値が含まれます。 既定のスケールを使う場合、スコア値は 1 から 5 の間である必要があります。

  • ネットワークまたはサービスのエラーのため、アンケートを送信できません。

利用できるアンケート タグ

全体的な呼び出し

タグ 説明
CannotJoin 顧客が通話に参加できなかった
CannotInvite 顧客が通話に新しい参加者を追加できなかった
HadToRejoin 問題を回避するため、顧客は通話を退席して再び参加した
EndedUnexpectedly 顧客の通話が、明らかな理由なしに終了した
OtherIssues 前の説明に適合しないすべての問題

オーディオの問題

タグ 説明
NoLocalAudio 顧客のコンピューターで通話のオーディオが出ない、通話中の誰の声も聞こえない
NoRemoteAudio 特定の参加者のオーディオが出ない
Echo 通話でエコーが発生する
AudioNoise オーディオで意図しないノイズが発生する
LowVolume オーディオが低すぎる
AudioStoppedUnexpectedly 明確な理由なしでオーディオが停止した (ミュートされていないなど)
DistortedSpeech 参加者の声が、予想される音声とは異なり、歪んでいる
AudioInterruption カスタマー エクスペリエンスのオーディオの中断、音声カットなど
OtherIssues 前の説明に適合しないすべての問題

ビデオの問題

タグ 説明
NoVideoReceived 顧客が参加者からビデオを受信しない
NoVideoSent 顧客がビデオを開始しても、通話中の誰もそれを見ることができない
LowQuality ビデオの品質が低い
Freezes ビデオがフリーズする
StoppedUnexpectedly 明確な理由なしで画面共有が停止する (カメラがオンになっていて、ビデオ通話がオンになっているなど)
DarkVideoReceived ビデオは送信されているが、参加者には暗色のボックス (または別の単一の色) のみが表示される
AudioVideoOutOfSync ビデオとオーディオが同期していないと思われる
OtherIssues 前の説明に適合しないすべての問題

画面共有の問題

タグ 説明
NoContentLocal 顧客が、共有している参加者から画面共有を受け取らない
NoContentRemote 顧客が画面を共有しているが、他の 1 人以上の参加者がそれを見ることができない
CannotPresent 画面共有を開始できない
LowQuality 画面共有ビデオの品質が低い (読めないなど)
Freezes プレゼンテーション中に画面共有がフリーズする
StoppedUnexpectedly 画面共有が明確な理由なしで停止する (画面共有が顧客によって停止されなかった、など)
LargeDelay 表示を送る側と受け取る側の間で遅延が発生する
OtherIssues 前の説明に適合しないすべての問題

カスタマイズ オプション

4 つの API 値のそれぞれを収集することも、最も重要と思われるものだけを収集することも可能です。 たとえば、オーディオ、ビデオ、画面共有の体験についてお客様に尋ねるのではなく、全体的な通話体験についてのみ尋ねるように選択することができます。 また、入力範囲をニーズに合わせてカスタマイズすることもできます。 既定の入力範囲は、全体的な通話、オーディオ、ビデオ、画面共有では 1 から 5 です。 ただし、それぞれの API 値を最小 0 から最大 100 までカスタマイズできます。

Note

API で示されている質問のカットオフ値は、Microsoft がアンケート データを分析する際に使用するしきい値です。 カットオフ値や入力範囲をカスタマイズすると、Microsoft はカスタマイズした内容に従ってアンケート データを分析します。

カスタム質問

通話終了アンケート API を使うだけでなく、独自のアンケートの質問を作成し、それらを通話終了アンケートの結果に組み込むことができます。

ただし、SubmitSurvey 操作の結果ペイロードで提供されるデータを使って、ACS アンケートのデータと独自のカスタム データおよびストレージを関連付けることができます。 CallSurveyResult クラスの SurveyId フィールドはアンケートの一意の識別子を表し、CallId はアンケートが生成された通話の識別子を表します。 これらの識別子をカスタマイズしたデータと共に保存すると、データを一意に関連付けることができます。

アンケート データを収集する

重要

アンケート データを受信して分析するには、Azure Monitor で [診断設定] を有効にして、アンケートのログ データを Log Analytics ワークスペース、Event Hubs、または Azure ストレージ アカウントに送信する必要があります。 これらのオプションのいずれかにアンケート データを送信しない場合、アンケート データは保存されず、失われます。 Communications Services でこれらのログを有効にするには、通話終了アンケートのログに関する記事を参照してください

Log Analytics ワークスペースを使用してアンケート データを表示する

アンケートのログ データを保存し、アンケート結果にアクセスするには、Log Analytics ワークスペースを有効にする必要があります。 通信サービスでこれらのログを有効にするには、通話終了アンケートのログに関する記事を参照してください。

ベスト プラクティス

お勧めのアンケートの流れと、提案された、検討すべき質問プロンプトを次に示します。 お客様の開発では、私たちが推奨するものを使用することも、ビジュアル インターフェイス用にカスタマイズした質問プロンプトとフローを使用することもできます。

質問 1: ユーザーは全体的な通話品質体験をどのように受け止めたでしょうか? アンケートは、参加者の全体的な品質についてのみ質問することから始めることをお勧めします。 1 番目と 2 番目の質問を分けた場合は、アンケート参加者が通話品質の問題を体験したと回答した場合、オーディオ、ビデオ、画面共有の問題についてのみ回答を収集することができます。

  • 提案されるプロンプト: "通話品質はどうでしたか?”
  • API 質問の値: 全体的な通話

質問 2: ユーザーは通話でオーディオ、ビデオ、または画面共有の問題を感じましたか? アンケート参加者が質問 1 に回答し、通話全体のカットオフ値以下のスコアであった場合は、2 番目の質問を提示します。

  • 提案されるプロンプト: "何が良かったでしょうか?”
  • API 質問の値: オーディオ、ビデオ、画面共有

アンケートのガイドライン

  • アンケートのバーンアウトを避けるため、通話参加者全員にアンケートをとらないでください。
  • 質問の順序は重要です。 回答者が最初に目にするプロンプトにフィードバックを集中させることを想定して、質問 2 の省略可能なタグの順序をランダムにすることをお勧めします。
  • 制御された実験で個別の Azure Communication Services リソースにアンケートを使用して、リリースへの影響を特定することを検討してください。

次のステップ