Azure 通訊服務中的疑難排解
本文件將協助針對通訊服務解決方案中可能遇到的問題進行疑難排解。 如果您要對 SMS 進行疑難排解,您可以使用事件方格啟用傳遞報告以擷取 SMS 傳遞詳細資料。
取得說明
我們鼓勵開發人員提交問題、建議功能,以及回報問題。 如需詳細資訊,請參閱專用的支援和說明選項頁面。
為了協助您針對某些問題進行疑難排解,您可能需要下列一或多項資訊:
- MS-CV 識別碼:針對呼叫和訊息進行疑難排解。
- 通話識別碼:識別通訊服務通話。
- 簡訊識別碼:識別簡訊。
- 簡短代碼程式概要識別碼:識別簡短代碼程式概要應用程式。
- 免付費電話驗證活動概要識別碼:識別免付費電話驗證活動概要應用程式。
- 電子郵件訊息識別碼:識別傳送電子郵件要求。
- 相互關聯識別碼:識別使用通話自動化提出的要求。
- 通話記錄:包含可用來對通話和網路問題進行疑難排解的詳細資訊。
如需節流和限制的詳細資訊,請參閱服務限制。
存取您的 MS-CV 識別碼
初始化您的 SDK 時,您可以在 clientOptions
物件執行個體中設定診斷,以存取 MS-CV 識別碼。 您可以設定任何 Azure SDK 的診斷,包括聊天、身分識別和 VoIP 通話。
用戶端選項範例
下列程式碼片段示範診斷組態。 當您啟用 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) });
通話自動化所需的存取識別碼
針對通話自動化 SDK 的問題進行疑難排解時,例如通話管理或錄製問題,您必須收集識別碼,以協助識別失敗的通話或作業。 您可以提供下列兩個識別碼之一。
從 API 回應的標頭中,找出
X-Ms-Skype-Chain-Id
欄位。從回呼事件中,您的應用程式會在執行動作之後收到。 例如
CallConnected
或PlayFailed
,找出 correlationID。
除了這些識別碼的其中之一外,發生失敗時,您還必須提供失敗使用案例的詳細資料和時間戳記。
存取用戶端呼叫識別碼
針對語音或視訊通話進行疑難排解時,您可能需要提供 call ID
。 透過 call
物件的 id
屬性存取此值:
// `call` is an instance of a call created by `callAgent.startCall` or `callAgent.join` methods
console.log(call.id)
存取您的 SMS 訊息識別碼
針對 SMS 問題,您可以從回應物件收集訊息識別碼。
// 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
}
存取簡短代碼程式概要識別碼
在 Azure 入口網站的 [簡短代碼] 區段中尋找程式概要識別碼。
存取免付費電話驗證活動概要識別碼
在 Azure 入口網站的 [法規文件] 區段中尋找程式概要識別碼。
存取電子郵件作業識別碼
針對傳送電子郵件或電子郵件訊息狀態要求進行疑難排解時,您可能需要提供 operation 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}");
存取通話 SDK 中的支援檔案
呼叫 SDK 提供方便的方法來存取記錄檔。 這些檔案可為 Microsoft 支援服務專家和工程師提供寶貴的服務。 建議您在偵測到問題時收集這些記錄。
啟用和存取通話記錄
[JavaScript]
Azure 通訊服務呼叫 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.log
方法,使用 AzureLogger 重新導向 Azure SDK 的記錄輸出:
您可以登入瀏覽器主控台、檔案、緩衝區、傳送至我們自己的服務等等。 如果要透過網路將記錄傳送至自己的服務,請勿按每個記錄行傳送要求,因為這會對瀏覽器效能造成負面影響。 而是累積記錄行,並以批次方式傳送它們。
// Redirect log output
AzureLogger.log = (...args) => {
// To console, file, buffer, REST API, etc...
console.log(...args);
};
Native SDK (Android/iOS)
針對 Android、iOS 和 Windows,Azure 通訊服務通話 SDK 提供記錄檔的存取權。
如需呼叫原生 SDK,請參閱記錄檔存取教學課程
UI 程式庫 (Android、iOS)
如果您使用適用於 Android 或 iOS 的 Azure 通訊服務 UI 程式庫,可以透過內建支援表單來徵求使用者意見反應。
如需電話撥接 UI 支援表單支援函式的詳細資訊,請參閱支援表單整合教學課程。 本文件會引導您新增必要的事件處理常式,以及建立基本用戶端/伺服器實作,以集中儲存支援資訊。 本指南說明如何與貴組織所使用支援服務整合的路徑。
在 ACS 整合中建置端對端支援流程
無論您是使用通話 SDK 或通話 UI SDK,為客戶提供支援都是任何強固整合的重要元件。 下列文件強調支援意見反應迴圈每個時間點的重要考量,並提供跳躍點以深入了解。
尋找 Microsoft Entra 資訊
- 取得目錄識別碼
- 取得應用程式識別碼
- 取得使用者識別碼
取得目錄識別碼
若要尋找您的目錄 (租用戶) 識別碼,請遵循下列步驟:
導覽至 Azure 入口網站,然後使用認證登入 Azure 入口網站。
從左窗格中,選取 [Microsoft Entra ID]。
從 Microsoft Entra ID 的 [概觀] 頁面,複製目錄 (租用戶) 識別碼並儲存在您的應用程式程式碼中。
取得應用程式識別碼
若要尋找您的應用程式識別碼,請遵循下列步驟:
導覽至 Azure 入口網站,然後使用認證登入 Azure 入口網站。
從左窗格中,選取 [Microsoft Entra ID]。
在 Microsoft Entra ID 的 [應用程式註冊] 中,選取應用程式。
複製 [應用程式識別碼] 並儲存在您的應用程式碼中。
您也可以在應用程式概觀頁面中找到目錄 (租用戶) 識別碼。
取得使用者識別碼
若要尋找您的使用者識別碼,請遵循下列步驟:
導覽至 Azure 入口網站,然後使用認證登入 Azure 入口網站。
從左窗格中,選取 [Microsoft Entra ID]。
從 Microsoft Entra ID 的 [使用者] 中,選取使用者。
在 Microsoft Entra 使用者的 [設定檔] 頁面中,複製 [物件識別碼] 並將其儲存在應用程式程式碼中。
取得固定的資源識別碼
有時候,您也需要提供通訊服務資源的固定資源識別碼。 若要尋找,請遵循下列步驟:
- 導覽至 Azure 入口網站,然後使用認證登入 Azure 入口網站。
- 開啟通訊服務資源。
- 從左窗格中,選取 [概觀],然後切換至 [JSON 檢視]
- 從 [資源 JSON] 頁面複製
immutableResourceId
值並提供給支援小組。
驗證 Teams 授權資格,確認是否可以使用 Teams 使用者的 Azure 通訊服務支援
有兩種方法可用來驗證 Teams 授權資格,確認是否可以使用 Teams 使用者的 Azure 通訊服務支援:
- 透過 Teams Web 用戶端進行驗證
- 透過 Microsoft Graph API 檢查您目前的 Teams 授權
透過 Teams Web 用戶端進行驗證
若要透過 Teams Web 用戶端來驗證您的 Teams 授權資格,請遵循下列步驟:
- 開啟瀏覽器並導覽至 Teams Web 用戶端。
- 使用具有有效 Teams 授權的認證進行登入。
- 如果驗證成功且您留在 https://teams.microsoft.com/ 網域中,則您的 Teams 授權符合資格。 如果驗證失敗或系統將您重新導向至 https://teams.live.com/v2/ 網域,則您的 Teams 授權不符合資格,無法使用 Teams 使用者的 Azure 通訊服務支援。
透過 Microsoft Graph API 檢查您目前的 Teams 授權
您可以使用 licenseDetails Microsoft Graph API 尋找目前的 Teams 授權,該 API 傳回指派給使用者的授權。 請遵循下列步驟,使用 Graph 總管工具來檢視指派給使用者的授權:
開啟瀏覽器,然後導覽至 Graph 總管
使用認證登入 Graph 總管。
在查詢方塊中,輸入下列 API,然後按一下 [執行查詢]:
https://graph.microsoft.com/v1.0/me/licenseDetails
或者,您可以使用下列 API 提供使用者識別碼來查詢特定使用者:
https://graph.microsoft.com/v1.0/users/{id}/licenseDetails
[回應預覽] 窗格會顯示輸出,如下所示:
為了方便閱讀,此處顯示的回應物件可能會縮短。
{ "@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" } ] } ] }
尋找授權詳細資料,其中
servicePlanName
屬性含有合格的 Teams 授權資料表所列的其中一個值