通話終了調査を使用してユーザーのフィードバックを収集する
このチュートリアルでは、Azure Communication Services の通話終了アンケートを使用する方法について説明します。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- アクティブな Communication Services リソース。 Communication Services リソースを作成します。 調査の結果は、単一の Communication Services リソースに結び付けられます。
- アクティブな Log Analytics Workspace は、Azure Monitor ログとも呼ばれます。 通話終了アンケートのログに関する記事を参照してください。
- 自由形式のテキストを使用してカスタム質問を含むアンケートを実施するには、App Insight リソースが必要です。
重要
通話終了調査は、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 の結果と独自のアンケートの質問のクエリを実行する手順を示します。
Azure AppInsights をアプリケーションに埋め込みます。プレーンな JavaScript を使用した App Insight の初期化の詳細については、こちらをクリックしてください。 または、NPM を使用して App Insights の依存関係を取得することもできます。 NPM を使用した App Insight の初期化の詳細については、こちらをクリックしてください。
カスタムの質問をユーザーに提供し、その入力を収集する UI をアプリケーションで作成します。アプリケーションは応答を
improvementSuggestion
変数に文字列として収集するものとしますアンケート結果を ACS に送信し、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();
AppInsights を使用して送信されたユーザーの応答は、App Insights ワークスペースで使用できます。 ブックを使用して、複数のリソース間でクエリを実行し、通話の評価とカスタムのアンケート データを関連付けることができます。 通話の評価とカスタムのアンケート データを関連付ける手順:
- 新しいブックを作成し ([ACS リソース] -> [監視] -> [ブック] -> [新規])、ACS リソースから通話アンケート データのクエリを実行します。
- 新しいクエリを追加します ([+追加] -> [クエリの追加])
Data source
がLogs
で、Resource type
がCommunication
であることを確認します- クエリの名前を変更できます ([詳細設定] -> [ステップ名] [例: call-survey])
- アンケート データが Azure portal に表示されるまでに最大 2 時間かかる場合があることに注意してください。 通話の評価データのクエリを実行します。
ACSCallSurvey | where TimeGenerated > now(-24h)
- App Insights からデータを取得するための別のクエリを追加します ([+追加] -> [クエリの追加])
Data source
がLogs
で、Resource type
がApplication 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 ワークスペースを有効にする必要があります。 通信サービスでこれらのログを有効にするには、通話終了アンケートのログに関する記事を参照してください。
- Log Analytics ワークスペースを Power BI と統合することもできます。「Log Analytics を Power BI と統合する」を参照してください。
ベスト プラクティス
お勧めのアンケートの流れと、提案された、検討すべき質問プロンプトを次に示します。 お客様の開発では、私たちが推奨するものを使用することも、ビジュアル インターフェイス用にカスタマイズした質問プロンプトとフローを使用することもできます。
質問 1: ユーザーは全体的な通話品質体験をどのように受け止めたでしょうか? アンケートは、参加者の全体的な品質についてのみ質問することから始めることをお勧めします。 1 番目と 2 番目の質問を分けた場合は、アンケート参加者が通話品質の問題を体験したと回答した場合、オーディオ、ビデオ、画面共有の問題についてのみ回答を収集することができます。
- 提案されるプロンプト: "通話品質はどうでしたか?”
- API 質問の値: 全体的な通話
質問 2: ユーザーは通話でオーディオ、ビデオ、または画面共有の問題を感じましたか? アンケート参加者が質問 1 に回答し、通話全体のカットオフ値以下のスコアであった場合は、2 番目の質問を提示します。
- 提案されるプロンプト: "何が良かったでしょうか?”
- API 質問の値: オーディオ、ビデオ、画面共有
アンケートのガイドライン
- アンケートのバーンアウトを避けるため、通話参加者全員にアンケートをとらないでください。
- 質問の順序は重要です。 回答者が最初に目にするプロンプトにフィードバックを集中させることを想定して、質問 2 の省略可能なタグの順序をランダムにすることをお勧めします。
- 制御された実験で個別の Azure Communication Services リソースにアンケートを使用して、リリースへの影響を特定することを検討してください。
次のステップ
アンケート データを分析します。通話終了アンケートのログに関する記事を参照してください
通話終了アンケートの詳細については、「通話終了アンケートの概要」を参照
Log Analytics ワークスペースの使用方法を学習するには、「Log Analytics のチュートリアル」を参照してください
Log Analytics で独自のクエリを作成します。クエリの使用を開始するに関する記事を参照してください