次の方法で共有


Azure Communication Services でのトラブルシューティング

この記事では、Azure Communication Services ソリューションで発生する可能性がある問題のトラブルシューティングについて説明します。 SMS のトラブルシューティングを行う場合は、Azure Event Grid で配信レポートを有効にすることで、SMS の配信の詳細を取得できます。

ヘルプを取得

開発者の皆さんは、ご質問の送信、機能のご提案、および問題のレポートに関してぜひご協力ください。 詳細については、専用のサポートとヘルプ オプションのページを参照してください。

特定の問題のトラブルシューティングに役立てるため、次の情報が 1 つ以上必要な場合があります。

  • MS-CV ID: 通話とメッセージのトラブルシューティングを行います。
  • 通話 ID: Azure Communication Services の通話を識別します。
  • SMS メッセージ ID: SMS メッセージを識別します。
  • ショート コード プログラムの簡易 ID: ショート コード プログラムの簡単なアプリケーションを識別します。
  • 無料電話番号検証キャンペーン要約 ID: 無料電話番号検証キャンペーンの簡易アプリケーションを識別するために使用されます。
  • メール ID: メール送信要求を識別します。
  • 関連付け ID: Call Automation を使って行われた要求の識別に使われます。
  • 通話ログ: 通話とネットワークの問題のトラブルシューティングを行うために、詳細な情報を使用します。

調整と制限の詳細については、サービスの制限に関するページを参照してください。

MS-CV ID にアクセスする

SDK を初期化する際に、clientOptions オブジェクト インスタンスで診断を構成すると MS-CV ID にアクセスできます。 チャット、ID、VoIP 呼び出しなど、任意の Azure SDK の診断を構成できます。

クライアント オプションの例

次のコード スニペットは、診断の構成を示しています。 SDK の診断を有効にすると、構成済みのイベント リスナーに診断の詳細が出力されます。

// 1. Import Azure.Core.Diagnostics
using Azure.Core.Diagnostics;

// 2. Initialize an event source listener instance
using var listener = AzureEventSourceListener.CreateConsoleLogger();
Uri endpoint = new Uri("https://<RESOURCE-NAME>.communication.azure.net");
var (token, communicationUser) = await GetCommunicationUserAndToken();
CommunicationUserCredential communicationUserCredential = new CommunicationUserCredential(token);

// 3. Setup diagnostic settings
var clientOptions = new ChatClientOptions()
{
    Diagnostics =
    {
        LoggedHeaderNames = { "*" },
        LoggedQueryParameters = { "*" },
        IsLoggingContentEnabled = true,
    }
};

// 4. Initialize the ChatClient instance with the clientOptions
ChatClient chatClient = new ChatClient(endpoint, communicationUserCredential, clientOptions);
ChatThreadClient chatThreadClient = await chatClient.CreateChatThreadAsync("Thread Topic", new[] { new ChatThreadMember(communicationUser) });

Call Automation にアクセス ID を使用する

通話管理や記録の問題など、Call Automation SDK に関する問題をトラブルシューティングする場合は、失敗した通話または操作を特定するのに役立つ ID を収集する必要があります。 次の 2 つの ID のいずれかを指定できます。

  • API 応答のヘッダーから。 フィールド X-Ms-Skype-Chain-Id を見つけます。

    X-Ms-Skype-Chain-Id の応答ヘッダーを示すスクリーンショット。

  • アクションの実行後にアプリケーションが受け取るコールバック イベントから。 たとえば、関連付け ID を見つけるには、CallConnected または PlayFailed を使用します。

    関連付け ID を持つ切断された通話イベントを示すスクリーンショット

これらの ID のいずれかに加えて、失敗したユース ケースと、失敗が発生したときのタイムスタンプに関する詳細を指定する必要があります。

クライアント通話 ID にアクセスする

音声通話またはビデオ通話のトラブルシューティングを行う際に、call ID の提供が必要になることがあります。 call オブジェクトの id プロパティを使用して、この値にアクセスします。

// `call` is an instance of a call created by `callAgent.startCall` or `callAgent.join` methods
console.log(call.id)

SMS メッセージ ID にアクセスする

SMS の問題については、応答オブジェクトからメッセージ ID を収集できます。

// Instantiate the SMS client
const smsClient = new SmsClient(connectionString);
async function main() {
  const result = await smsClient.send({
    from: "+18445792722",
    to: ["+1972xxxxxxx"],
    message: "Hello World 👋🏻 via Sms"
  }, {
    enableDeliveryReport: true // Optional parameter
  });
console.log(result); // your message ID is in the result
}

ショート コード プログラムの brief ID にアクセスする

プログラムの簡易 ID は、Azure portal[ショート コード] セクションにあります。

ショート コード プログラムの簡易 ID を示すスクリーンショット。


無料電話番号検証キャンペーンの簡易 ID にアクセスする

プログラムの簡易 ID は、Azure portal規制のドキュメントのセクションにあります。

無料電話番号検証キャンペーンの簡易 ID を示すスクリーンショット。


メール操作 ID にアクセスする

メールの送信状態またはメールの状態要求に関するトラブルシューティングを行うときに、オペレーション ID の提供が必要になる場合があります。 応答でこの値にアクセスできます。

var emailSendOperation = await emailClient.SendAsync(
    wait: WaitUntil.Completed,
    senderAddress: sender,
    recipientAddress: recipient,
    subject: subject,
    htmlContent: htmlContent);

/// Get the OperationId so that it can be used for tracking the message for troubleshooting
Console.WriteLine($"Email operation id = {emailSendOperation.Id}");

Calling SDK でサポート ファイルにアクセスする

Calling SDK では、ログ ファイルにアクセスするための便利なメソッドが提供されます。 これらのファイルは、Microsoft のサポート スペシャリストやエンジニアに役立ちます。 問題を検出したときに、これらのログを収集することをお勧めします。

呼び出しログを有効にしてアクセスする

通話ログを有効にしてアクセスする方法について説明します。

JavaScript

Azure Communication Services Calling SDK は、内部的に @azure/logger ライブラリを使用してログ記録を制御します。

ログ出力レベルを構成するには、@azure/logger パッケージの setLogLevel メソッドを使用します。 ロガーを作成し、それを CallClient コンストラクターに渡します。

import { setLogLevel, createClientLogger, AzureLogger } from '@azure/logger';
setLogLevel('verbose');
let logger = createClientLogger('ACS');
const callClient = new CallClient({ logger });

AzureLogger を使用して、AzureLogger.log メソッドをオーバーライドして、Azure SDK からのログ出力をリダイレクトできます。

ブラウザー コンソール、ファイル、またはバッファーにログを記録できます。 独自のサービスに送信することもできます。 このメソッドはブラウザーのパフォーマンスに悪影響を与えるため、ログをネットワーク経由で独自サービスに送信する場合は、ログ行ごとに要求を送信しないでください。 代わりに、ログ行を蓄積し、バッチで送信します。

// Redirect log output
AzureLogger.log = (...args) => {
    // To console, file, buffer, REST API, etc...
    console.log(...args); 
};

ネイティブ SDK (Android/iOS)

Android、iOS、Windows の場合、Azure Communication Services Calling SDK によりログ ファイルへのアクセスが提供されます。

Calling ネイティブ SDK については、「ログ ファイルへのアクセスのチュートリアル」を参照してください

UI ライブラリ (Android、iOS)

Android または iOS 用の Azure Communication Services UI ライブラリをお使いの場合は、組み込みのサポート フォームを使用してユーザー フィードバックを募ることができます。

Calling UI サポート フォームのサポート機能の詳細については、サポート フォーム統合のチュートリアルを参照してください。 この記事では、必要なイベント ハンドラーを追加し、サポート情報を一元的に保存するための基本的なクライアント/サーバー実装を作成する方法について説明します。 この記事では、組織で使用するサポート サービスと統合する手順について説明します。

ACS 統合でエンド ツー エンドのサポート フローを構築する

Calling SDK と Calling UI SDK のどちらを使用するかに関係なく、顧客にサポートを提供することは、堅牢な統合における重要な要素です。

ユーザー サポートの提供」記事では、サポート フィードバック ループの各ポイントでの重要な考慮事項を取り上げ、詳細を学ぶ必要がある箇所を指摘します。


Microsoft Entra 情報を見つける

Microsoft Entra 情報を見つけるには、次の手順に従います。

ディレクトリ ID を取得する

ディレクトリ (テナント) ID を見つけるには、次の手順に従います。

  1. Azure portal にサインインします。

  2. サービス メニューで、[Microsoft Entra ID] を選択します。

  3. Microsoft Entra ID の [概要] ページで、ディレクトリ ID (テナント ID) をコピーし、アプリケーション コードに保存します。

    Microsoft Entra テナント ID をコピーして保存する方法を示すスクリーンショット。

アプリケーション ID を取得する

アプリケーション ID を見つけるには、次の手順に従います。

  1. Azure portal にサインインします。

  2. サービス メニューで、[Microsoft Entra ID] を選択します。

  3. Microsoft Entra ID の [アプリの登録] から、アプリケーションを選択します。

  4. アプリケーション (クライアント) ID をコピーし、アプリケーション コードに保存します。

    Microsoft Entra アプリケーション ID をコピーして保存する方法を示すスクリーンショット。

    ディレクトリ (テナント) ID は、アプリケーションの [概要] ページでも確認できます。

ユーザー ID を取得する

ユーザー ID を見つけるには、次の手順に従います。

  1. Azure portal にサインインします。

  2. サービス メニューで、[Microsoft Entra ID] を選択します。

  3. Microsoft Entra ID の [ユーザー] から、ユーザーを選択します。

  4. Microsoft Entra ユーザーの [プロファイル] ページで、オブジェクト ID をコピーし、アプリケーション コードに保存します。

    Microsoft Entra ユーザー ID をコピーして保存する方法を示すスクリーンショット。

不変リソース ID を取得する

場合によっては、Azure Communication Services リソースの不変リソース ID も指定する必要があります。 これを見つけるには、次の手順に従います。

  1. Azure portal にサインインします。

  2. Azure Communication Services リソースを開きます。

  3. サービス メニューで [概要] を選択し、JSON ビューに切り替えます。

    Azure Communication Services リソースの [概要] を JSON ビューに切り替える方法を示すスクリーンショット。

  4. [リソース JSON] ページの immutableResourceId 値をコピーし、サポート チームに渡してください。

    [リソース JSON] ページを示すスクリーンショット。

Teams ユーザーに対する Azure Communication Services サポートを使用するための Teams ライセンス適格性を検証する

Teams ユーザーに対する Azure Communication Services サポートを使用するための Teams ライセンス適格性を検証するには、2 つの方法があります。

Teams Web クライアント経由で検証する

Teams Web クライアント経由で Teams ライセンス適格性を検証するには、次の手順に従います。

  1. ブラウザーを開き、Teams Web クライアントに移動します。
  2. 有効な Teams ライセンスを持つ資格情報でサインインします。
  3. 認証が成功し、https://teams.microsoft.com/ ドメインの中にいる場合、お持ちの Teams ライセンスは適格です。 認証に失敗する場合や、https://teams.live.com/v2/ ドメインにリダイレクトされる場合、お持ちの Teams ライセンスは Teams ユーザーに対する Azure Communication Services サポートを使用する資格がありません。

Microsoft Graph API を使用して現在の Teams ライセンスを確認する

現在の Teams ライセンスは、licenseDetails を使用して確認できます。 Microsoft Graph API は、ユーザーに割り当てられたライセンスを返します。 Graph エクスプローラー ツールを使用して、ユーザーに割り当てられたライセンスを表示するには、次の手順に従います。

  1. ブラウザーを開き、Graph エクスプローラーに移動します。

  2. 資格情報を使用して Graph エクスプローラーにサインインします。

    Graph エクスプローラーにサインインする方法を示すスクリーンショット。

  3. クエリ ボックスに次の API を入力して、[クエリの実行] を選択します。

    https://graph.microsoft.com/v1.0/me/licenseDetails
    

    Graph エクスプローラーで API を入力する方法を示すスクリーンショット。

    または、次の API を使用してユーザー ID を指定して、特定のユーザーに対してクエリをすることもできます。

    https://graph.microsoft.com/v1.0/users/{id}/licenseDetails
    
  4. [Response preview]\(応答のプレビュー\) ペインに出力が表示されます。

    ここに示されている応答オブジェクトは、読みやすくするために短縮されている可能性があります。

    {
        "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('071cc716-8147-4397-a5ba-b2105951cc0b')/assignedLicenses",
        "value": [
            {
                "skuId": "b05e124f-c7cc-45a0-a6aa-8cf78c946968",
                "servicePlans":[
                    {
                        "servicePlanId":"57ff2da0-773e-42df-b2af-ffb7a2317929",
                        "servicePlanName":"TEAMS1",
                        "provisioningStatus":"Success",
                        "appliesTo":"User"
                    }
                ]
            }
        ]
    }
    
  5. servicePlanName プロパティに、[対象となる Teams ライセンス] 表のいずれかの値があるライセンスの詳細を見つけます。