{"owner":"MicrosoftDocs","repo":"azure-docs","hasSkills":true,"totalSkillsCount":25,"totalTokensCount":10179,"categories":["anthropic-skill"],"hasMcp":false,"mcpConfig":null,"found":["articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-browser-verbose-log.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-client-logs.md",".github/copilot/skills/extended-zones-article-writer.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-diagnostic-audio-recordings.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-call-info.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-windows-audio-event-log.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-failed.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-start-failed.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-freeze.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-stopped-unexpectedly.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-permission-denied.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-timed-out.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md"],"skills":{"articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-browser-verbose-log.md":"---\ntitle: References - How to collect verbose log from browsers\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect verbose log from browsers.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect verbose log from browsers\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen an issue originates within the underlying layer, collecting verbose logs in addition to web logs can provide valuable information.\n\nTo collect the verbose log from the browser, initiate a web browser session with specific command line arguments. You open your video application within the browser and execute the scenario you're debugging.\nOnce the scenario is executed, you can close the browser.\nDuring log collection, ensure to keep only the necessary tabs open in the browser.\n\nTo collect the verbose log of the Edge browser, open a command line window and execute:\n\n`\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" --user-data-dir=C:\\edge-debug  --enable-logging --v=0 --vmodule=*/webrtc/*=2,*/libjingle/*=2,*media*=4 --no-sandbox`\n\nFor Chrome, replace the executable path in the command with `C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe`.\n\nDon’t omit the `--user-data-dir` argument. This argument is used to specify where the logs are saved.\n\nThis command enables verbose logging and saves the log to chrome\\_debug.log.\nIt's important to have only the necessary pages open in the Edge browser, such as `edge://webrtc-internals` and the application web page.\nKeeping only necessary pages open ensure that logs from different web applications don't mix in the same log file.\n\nLog file is located at: `C:\\edge-debug\\chrome_debug.log`\n\nThe verbose log is flushed each time the browser is opened with the specified command line.\nTherefore, after closing the browser, you should copy the log and check its file size and modification time to confirm that it contains the verbose log.\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-client-logs.md":"---\ntitle: References - How to collect client logs\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect client logs.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect client logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe client logs can help when we want to get more details while debugging an issue.\nTo collect client logs, you can use [@azure/logger](https://www.npmjs.com/package/@azure/logger), which is used by WebJS calling SDK internally.\n\n```typescript\nimport { setLogLevel, createClientLogger, AzureLogger } from '@azure/logger';\nsetLogLevel('verbose');\nlet logger = createClientLogger('ACS');\nconst callClient = new CallClient({ logger });\n\n// Redirect ACS Calling SDK's logs\nAzureLogger.log = (...args) => {\n    // To console, file, buffer, REST API, etc...\n    console.log(...args); \n};\n\n// Application logging\nlogger.info('....');\n```\n\n[@azure/logger](https://www.npmjs.com/package/@azure/logger) supports four different log levels:\n\n* verbose\n* info\n* warning\n* error\n\nFor debugging purposes, `info` level logging is sufficient in most cases.\n\nIn the browser environment, [@azure/logger](https://www.npmjs.com/package/@azure/logger) outputs logs to the console by default.\nYou can redirect logs by overriding `AzureLogger.log` method. For more information, see [@azure/logger](/javascript/api/overview/azure/logger-readme).\n\nYour app might keep logs in memory if it has a \\'download log file\\' feature.\nIf that is the case, you have to set a limit on the log size.\nNot setting a limit might cause memory issues on long running calls.\n\nAdditionally, if you send logs to a remote service, consider mechanisms such as compression and scheduling.\nIf the client has insufficient bandwidth, sending a large amount of log data in a short period of time can affect call quality.\n",".github/copilot/skills/extended-zones-article-writer.md":"# Extended Zones Article Writer\n\nWrite production-ready how-to, quickstart, tutorial, or overview articles for the Azure Extended Zones Learn documentation.\n\n## Context Sources\n\n### Existing articles (reference for style and structure)\n- **Directory:** `C:\\github\\azure-docs-pr\\articles\\extended-zones\\`\n- **Best style reference:** `create-storage-account.md` (canonical how-to example)\n- **TOC:** `TOC.yml` — defines the site navigation structure\n- **Overview:** `overview.md` — contains the supported services table\n\n### Team code repos (for technical accuracy)\n- `C:\\github\\AzureStack-Fiji-Workloads` — team workloads and service code\n- `C:\\github\\Extended-Zones-Core-Platform` — core platform code\n- `C:\\github\\Fiji-Services-EdgeZoneRP` — Edge Zone resource provider\n- `C:\\github\\Fiji-EdgeZones-TSG-TeamDocs` — troubleshooting and team docs\n- `C:\\github\\EdgeZones-Operations-Configuration` — operations config\n- `C:\\github\\EdgeZones-Operations-Validation` — validation scripts\n\n---\n\n## Frontmatter Template\n\n```yaml\n---\ntitle: <Descriptive title — verb + noun + \"in an Azure Extended Zone\">\ndescription: <One sentence, under 160 characters, starting with \"Learn how to...\">\nauthor: svaldesgzz\nms.author: svaldes\nms.service: azure-extended-zones\nms.topic: <how-to | quickstart | tutorial | overview | concept-article>\nms.date: <MM/DD/YYYY>\n---\n```\n\n---\n\n## Article Naming Conventions\n\n| Type | Pattern | Example |\n|---|---|---|\n| How-to | `[action]-[resource].md` | `create-storage-account.md` |\n| Quickstart | `deploy-[resource]-[method].md` | `deploy-vm-portal.md` |\n| Tutorial | `[action]-[resource].md` | `backup-virtual-machine.md` |\n| Overview | `overview.md` or `[topic]-overview.md` | `overview.md` |\n\n---\n\n## Article Structure by Type\n\n### How-to guide (`ms.topic: how-to`)\n1. H1 title\n2. Intro paragraph (\"In this article, you learn how to...\")\n3. `## Prerequisites` — subscription, Extended Zone access, tools\n4. `## Sign in to Azure` — standard portal sign-in step\n5. Main task sections (H2 per major step)\n6. `## Clean up resources` — portal resource group deletion\n7. `## Related content` — 3–4 bullet links to related articles\n\n### Quickstart (`ms.topic: quickstart`)\nSame as how-to but faster-paced, single focused task, ends with a \"Next steps\" section.\n\n### Tutorial (`ms.topic: tutorial`)\nMulti-step, progressive task. Each H2 section builds on the previous one.\n\n---\n\n## Key Formatting Rules\n\n**Tables** (use for all settings/configuration steps):\n```markdown\n| Setting | Value |\n| --- | --- |\n| Key vault name | Enter a unique name, such as *myKeyVault*. |\n| Region | Select the **parent region** of the target Extended Zone. |\n```\n\n**Note/Important/Caution blocks:**\n```markdown\n> [!NOTE]\n> Note text here.\n\n> [!IMPORTANT]\n> Critical info here.\n\n> [!CAUTION]\n> Warning text here.\n```\n\n**Code blocks** — always use language-specific fences:\n- Azure CLI: ` ```azurecli `\n- PowerShell: ` ```azurepowershell `\n- JSON: ` ```json `\n- Bash: ` ```bash `\n\n**Cross-links** — use relative paths:\n```markdown\n[Request access to an Azure Extended Zone](request-access.md)\n```\n\n**No screenshots** — use text instructions and tables only (no `:::image` directives).\n\n---\n\n## Extended Zone–Specific Notes\n\n- **Key Vault, Disk Encryption Sets, and most control-plane services** are created in the **parent Azure region**, not the Extended Zone itself.\n- **VMs, AKS clusters, storage accounts** are deployed **in the Extended Zone** using `--edge-zone <zone-name>` in the CLI or by selecting \"Deploy to an Azure Extended Zone\" in the portal under the Region field.\n- Always remind users: select the **parent region** first in the portal, then select **Deploy to an Azure Extended Zone** and choose the Extended Zone.\n- Storage in Extended Zones is **Premium only** with **LRS** redundancy.\n- Refer to `request-access.md` whenever Extended Zone access or zone names are needed.\n\n---\n\n## Publishing Checklist\n\nAfter writing the article:\n\n1. **Save the file** to `C:\\github\\azure-docs-pr\\articles\\extended-zones\\<filename>.md`\n\n2. **Update `TOC.yml`** — add an entry under the appropriate section:\n   ```yaml\n   - name: <Short descriptive name>\n     href: <filename>.md\n   ```\n   Sections in TOC: Overview, Quickstarts, Tutorials, Concepts, How-to guides, Arc-enabled PaaS workloads, Security, Reference, Resources\n\n3. **Update `overview.md`** if the article covers a new service — add it to the supported services table under the correct category row (`Compute`, `Networking`, `Storage`, `BCDR`, `Arc-enabled PaaS`, `Other`). Services use `<br>` as separator and are written as markdown links.\n\n4. **Verify frontmatter** — all required fields present (`title`, `description`, `author`, `ms.author`, `ms.service`, `ms.topic`, `ms.date`).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-diagnostic-audio-recordings.md":"---\ntitle: References - How to collect diagnostic audio recordings\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect diagnostic audio recordings.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect diagnostic audio recordings\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nTo debug some issue, you may need audio recordings, especially when investigating audio quality problems, such as distorted audio and echo issues.\n\nTo collect diagnostic audio recordings, open the chrome://webrtc-internals(Chrome) or edge://webrtc-internals(Edge) page.\n\nWhen you click *Enable diagnostic audio recordings*, the browser prompts a dialog asking for the download file location.\n\n:::image type=\"content\" source=\"./media/enable-diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recordings settings.\":::\n\nAfter you finish an ACS call, you should be able to see files saved in the folder you choose.\n\n:::image type=\"content\" source=\"./media/diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recording files.\":::\n\n`*.output.N.wav` is the audio output sent to the speaker.\n\n`*.input.M.wav` is the audio input captured from the microphone.\n\n`*.aecdump` contains the necessary wav files for debugging audio after processed by the audio processing module in browsers.\n\n## How to build tools for inspecting aecdump files\nTo inspect `*.aecdump` files, you must use the `unpack_aecdump` utility program, the source code can be found at [unpack\\_aecdump](https://chromium.googlesource.com/external/webrtc/+/HEAD/rtc_tools/unpack_aecdump?autodive=0)\n\nYou need to prepare the build environment (Here we use Windows as an example)\n\nPrerequisites:\n\n* Visual Studio 2022\n* Python 3\n* depot\\_tools: See Install depot\\_tools in [Checking out and Building Chromium for Windows](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md#Install) \n\nMake sure you add depot\\_tools to the start of your PATH and it must be ahead of any installs of Python.\n\nRun the following commands\n```sh\nmkdir webrtc\ncd webrtc\ngclient\nfetch --nohooks webrtc\ngclient sync\ncd src\ngn gen out/Default\nninja -C out/Default unpack_aecdump\n```\nThe file is available at webrtc/src/out/Default/unpack\\_aecdump.exe\n\n## How to inspect aecdump files\n\nRun the command:\n\n```\nunpack_aecdump.exe audio_debug.5.aecdump\n```\n\n:::image type=\"content\" source=\"./media/extract-aecdump.png\" alt-text=\"Screenshot of the extracted aecdump file.\":::\n\nThere are three different types of audio files extracted from the aecdump file\n\n* reverseN.wav: the rendered audio originated from the same process\n* inputN.wav: the captured audio, before audio processing.\n* ref\\_outN.wav: the captured audio, after audio processing and will be sent to the network.\n\nIf you think that audio quality issues are on the sending end, you can first check ref\\_outN.wav, find the possible problem time points, and compare them with the same time points in inputN.wav to see if the audio quality issues are caused by the audio processing module, or if the audio quality was already poor in the source.\n\n\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-call-info.md":"---\ntitle: References - How to collect call info\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect call info.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 05/22/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect call info\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen you report an issue, providing important call information can help us quickly locate the problematic area and gain a deeper understanding of the issue.\n\n* ACS resource ID\n* call ID\n* participant ID\n\n## How to get ACS resource ID\n\nYou can get this information from [https://portal.azure.com](https://portal.azure.com).\n\n:::image type=\"content\" source=\"./media/get-azure-communication-services-resource-id.png\" alt-text=\"Screenshot of getting ACS resource ID.\" lightbox=\"./media/get-azure-communication-services-resource-id.png\":::\n\n## How to get call ID and participant ID\nThe participant ID is important when there are multiple users in the same call.\n```typescript\n// call ID\ncall.id\n// local participant ID\ncall.info.participantId\n\n```\n\n\n\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-windows-audio-event-log.md":"---\ntitle: References - How to collect Windows audio event log\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect Windows audio event log.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect Windows audio event logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe Windows audio event log provides information on the audio device state around the time when the issue we're investigating occurred.\n\nTo collect the audio event log:\n* open Windows Event Viewer\n* browse the logs in *Application and Services Logs > Microsoft > Windows > Audio > Operational*\n* you can either\n    * select logs within time range, right click and choose *Save Selected Events*.\n    * right click on Operational, and choose *Save All Events As*.\n\n:::image type=\"content\" source=\"./media/windows-audio-event-log.png\" alt-text=\"Screenshot of Windows Audio Event Log.\":::\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-failed.md":"---\ntitle: Understanding cameraStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartFailed UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the source is unavailable.\nThis error typically happens when the specified video device is being used by another process.\nFor example, the user may see this `cameraStartFailed` UFD event when they attempt to join a call with video on a browser such as Chrome while another Edge browser has been using the same camera.\n\n| cameraStartFailed                     | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // cameraStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `cameraStartFailed` UFD event is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on the UI to alert users of camera start failures. To resolve this issue, users can check if there are other processes using the same camera and close them if necessary.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-start-failed.md":"---\ntitle: Understanding capturerStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of capturerStartFailed UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# capturerStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `capturerStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the screen sharing stream because the source is unavailable.\nThis issue can happen when the underlying layer prevents the sharing of the selected source.\n\n| capturerStartFailed         | Details                |\n| ----------------------------|------------------------|\n| UFD type                    | MediaDiagnostics       |\n| value type                  | DiagnosticFlag         |\n| possible values             | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'capturerStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The capturerStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `capturerStartFailed` is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on your user interface to alert users of screen sharing failures.\nUsers can then take steps to resolve the issue on their own, such as checking if there are other processes causing this issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-freeze.md":"---\ntitle: Understanding cameraFreeze UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraFreeze UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraFreeze UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nA `cameraFreeze` UFD event with a `true` value occurs when the SDK detects that the input framerate goes down to zero, causing the video output to appear frozen or not changing.\n\nThe underlying issue may suggest problems with the user's video camera, or in certain instances, the device may cease sending video frames.\nFor example, on certain Android device models, you may see a `cameraFreeze` UFD event when the user locks the screen or puts the browser in the background.\nIn this situation, the Android operating system stops sending video frames, and thus on the other end of the call a user may see a `cameraFreeze` UFD event.\n\n| cameraFreeze                          | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraFreeze UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraFreeze') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraFreeze UFD recovered, notify the user\n       }\n    }\n});\n```\n\n## How to mitigate or resolve\nYour calling application should subscribe to events from the User Facing Diagnostics.\nYou should also consider displaying a message on your user interface to alert users of potential camera issues.\nThe user can try to stop and start the video again, switch to other cameras or switch calling devices to resolve the issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-stopped-unexpectedly.md":"---\ntitle: Understanding cameraStoppedUnexpectedly UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStoppedUnexpectedly UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStoppedUnexpectedly UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStoppedUnexpectedly` UFD event with a `true` value occurs when the SDK detects that the camera track was muted.\n\nKeep in mind that this event relates to the camera track's `mute` event triggered by an external source.\nThe event can be triggered on mobile browsers when the browser goes to background.\nAdditionally, in some browser implementations, the browser sends black frames when the video input track is muted.\n\n| cameraStoppedUnexpectedly             | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStoppedUnexpectedly') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStoppedUnexpectedly UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should subscribe to events from the User Facing Diagnostics and display a message on the user interface to alert users of any camera state changes.\nThis way ensures that users are aware of camera stopped issues and aren't surprised if other participants can't see the video.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-permission-denied.md":"---\ntitle: Understanding cameraPermissionDenied UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraPermissionDenied UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraPermissionDenied UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraPermissionDenied` UFD event with a `true` value occurs when the SDK detects that the camera permission was denied either at browser layer or at Operating System level.\n\n| cameraPermissionDenied                | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraPermissionDenied UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraPermissionDenied') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraPermissionDenied UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nIf the permission to use the camera is denied, the application should display a message on your user interface.\nAdditionally, your application should acquire camera browser permission before listing the available camera devices.\nIf there's no permission granted, the application is unable to get the detailed information of the camera devices on the user's system.\n\nThe camera permission can also be revoked during a call, so your application should also subscribe to events from the User Facing Diagnostics events to display a message on the user interface.\nUsers can then take steps to resolve the issue on their own, such as enabling the browser permission or checking whether they disabled the camera access at OS level.\n\n> [!NOTE]\n> Some browser platforms cache the permission results.\n\nIf a user denied the permission at browser layer previously, invoking `askDevicePermission` API doesn't trigger the permission UI prompt, but it can know the permission was denied.\nYour application should show instructions and ask the user to reset or grant the browser camera permission manually.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-timed-out.md":"---\ntitle: Understanding cameraStartTimedOut UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartTimedOut UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartTimedOut UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartTimedOut` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the promise returned by `getUserMedia` browser method doesn't resolve within a certain period of time.\nThis issue can happen when the user starts a call with video enabled, but the browser displays a UI permission prompt and the user doesn't respond to it.\n\n| cameraStartTimedOut                   | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartTimedOut') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStartTimedOut UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nInvoking `DeviceManager.askDevicePermission` also reduces the possibility that the user doesn't respond to the UI permission prompt after the call starts.\n\nIf the timeout issue is caused by hardware problems, users can try selecting a different camera device when starting the video stream.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md)"},"files":{"articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-browser-verbose-log.md":"---\ntitle: References - How to collect verbose log from browsers\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect verbose log from browsers.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect verbose log from browsers\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen an issue originates within the underlying layer, collecting verbose logs in addition to web logs can provide valuable information.\n\nTo collect the verbose log from the browser, initiate a web browser session with specific command line arguments. You open your video application within the browser and execute the scenario you're debugging.\nOnce the scenario is executed, you can close the browser.\nDuring log collection, ensure to keep only the necessary tabs open in the browser.\n\nTo collect the verbose log of the Edge browser, open a command line window and execute:\n\n`\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" --user-data-dir=C:\\edge-debug  --enable-logging --v=0 --vmodule=*/webrtc/*=2,*/libjingle/*=2,*media*=4 --no-sandbox`\n\nFor Chrome, replace the executable path in the command with `C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe`.\n\nDon’t omit the `--user-data-dir` argument. This argument is used to specify where the logs are saved.\n\nThis command enables verbose logging and saves the log to chrome\\_debug.log.\nIt's important to have only the necessary pages open in the Edge browser, such as `edge://webrtc-internals` and the application web page.\nKeeping only necessary pages open ensure that logs from different web applications don't mix in the same log file.\n\nLog file is located at: `C:\\edge-debug\\chrome_debug.log`\n\nThe verbose log is flushed each time the browser is opened with the specified command line.\nTherefore, after closing the browser, you should copy the log and check its file size and modification time to confirm that it contains the verbose log.\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-client-logs.md":"---\ntitle: References - How to collect client logs\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect client logs.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect client logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe client logs can help when we want to get more details while debugging an issue.\nTo collect client logs, you can use [@azure/logger](https://www.npmjs.com/package/@azure/logger), which is used by WebJS calling SDK internally.\n\n```typescript\nimport { setLogLevel, createClientLogger, AzureLogger } from '@azure/logger';\nsetLogLevel('verbose');\nlet logger = createClientLogger('ACS');\nconst callClient = new CallClient({ logger });\n\n// Redirect ACS Calling SDK's logs\nAzureLogger.log = (...args) => {\n    // To console, file, buffer, REST API, etc...\n    console.log(...args); \n};\n\n// Application logging\nlogger.info('....');\n```\n\n[@azure/logger](https://www.npmjs.com/package/@azure/logger) supports four different log levels:\n\n* verbose\n* info\n* warning\n* error\n\nFor debugging purposes, `info` level logging is sufficient in most cases.\n\nIn the browser environment, [@azure/logger](https://www.npmjs.com/package/@azure/logger) outputs logs to the console by default.\nYou can redirect logs by overriding `AzureLogger.log` method. For more information, see [@azure/logger](/javascript/api/overview/azure/logger-readme).\n\nYour app might keep logs in memory if it has a \\'download log file\\' feature.\nIf that is the case, you have to set a limit on the log size.\nNot setting a limit might cause memory issues on long running calls.\n\nAdditionally, if you send logs to a remote service, consider mechanisms such as compression and scheduling.\nIf the client has insufficient bandwidth, sending a large amount of log data in a short period of time can affect call quality.\n",".github/copilot/skills/extended-zones-article-writer.md":"# Extended Zones Article Writer\n\nWrite production-ready how-to, quickstart, tutorial, or overview articles for the Azure Extended Zones Learn documentation.\n\n## Context Sources\n\n### Existing articles (reference for style and structure)\n- **Directory:** `C:\\github\\azure-docs-pr\\articles\\extended-zones\\`\n- **Best style reference:** `create-storage-account.md` (canonical how-to example)\n- **TOC:** `TOC.yml` — defines the site navigation structure\n- **Overview:** `overview.md` — contains the supported services table\n\n### Team code repos (for technical accuracy)\n- `C:\\github\\AzureStack-Fiji-Workloads` — team workloads and service code\n- `C:\\github\\Extended-Zones-Core-Platform` — core platform code\n- `C:\\github\\Fiji-Services-EdgeZoneRP` — Edge Zone resource provider\n- `C:\\github\\Fiji-EdgeZones-TSG-TeamDocs` — troubleshooting and team docs\n- `C:\\github\\EdgeZones-Operations-Configuration` — operations config\n- `C:\\github\\EdgeZones-Operations-Validation` — validation scripts\n\n---\n\n## Frontmatter Template\n\n```yaml\n---\ntitle: <Descriptive title — verb + noun + \"in an Azure Extended Zone\">\ndescription: <One sentence, under 160 characters, starting with \"Learn how to...\">\nauthor: svaldesgzz\nms.author: svaldes\nms.service: azure-extended-zones\nms.topic: <how-to | quickstart | tutorial | overview | concept-article>\nms.date: <MM/DD/YYYY>\n---\n```\n\n---\n\n## Article Naming Conventions\n\n| Type | Pattern | Example |\n|---|---|---|\n| How-to | `[action]-[resource].md` | `create-storage-account.md` |\n| Quickstart | `deploy-[resource]-[method].md` | `deploy-vm-portal.md` |\n| Tutorial | `[action]-[resource].md` | `backup-virtual-machine.md` |\n| Overview | `overview.md` or `[topic]-overview.md` | `overview.md` |\n\n---\n\n## Article Structure by Type\n\n### How-to guide (`ms.topic: how-to`)\n1. H1 title\n2. Intro paragraph (\"In this article, you learn how to...\")\n3. `## Prerequisites` — subscription, Extended Zone access, tools\n4. `## Sign in to Azure` — standard portal sign-in step\n5. Main task sections (H2 per major step)\n6. `## Clean up resources` — portal resource group deletion\n7. `## Related content` — 3–4 bullet links to related articles\n\n### Quickstart (`ms.topic: quickstart`)\nSame as how-to but faster-paced, single focused task, ends with a \"Next steps\" section.\n\n### Tutorial (`ms.topic: tutorial`)\nMulti-step, progressive task. Each H2 section builds on the previous one.\n\n---\n\n## Key Formatting Rules\n\n**Tables** (use for all settings/configuration steps):\n```markdown\n| Setting | Value |\n| --- | --- |\n| Key vault name | Enter a unique name, such as *myKeyVault*. |\n| Region | Select the **parent region** of the target Extended Zone. |\n```\n\n**Note/Important/Caution blocks:**\n```markdown\n> [!NOTE]\n> Note text here.\n\n> [!IMPORTANT]\n> Critical info here.\n\n> [!CAUTION]\n> Warning text here.\n```\n\n**Code blocks** — always use language-specific fences:\n- Azure CLI: ` ```azurecli `\n- PowerShell: ` ```azurepowershell `\n- JSON: ` ```json `\n- Bash: ` ```bash `\n\n**Cross-links** — use relative paths:\n```markdown\n[Request access to an Azure Extended Zone](request-access.md)\n```\n\n**No screenshots** — use text instructions and tables only (no `:::image` directives).\n\n---\n\n## Extended Zone–Specific Notes\n\n- **Key Vault, Disk Encryption Sets, and most control-plane services** are created in the **parent Azure region**, not the Extended Zone itself.\n- **VMs, AKS clusters, storage accounts** are deployed **in the Extended Zone** using `--edge-zone <zone-name>` in the CLI or by selecting \"Deploy to an Azure Extended Zone\" in the portal under the Region field.\n- Always remind users: select the **parent region** first in the portal, then select **Deploy to an Azure Extended Zone** and choose the Extended Zone.\n- Storage in Extended Zones is **Premium only** with **LRS** redundancy.\n- Refer to `request-access.md` whenever Extended Zone access or zone names are needed.\n\n---\n\n## Publishing Checklist\n\nAfter writing the article:\n\n1. **Save the file** to `C:\\github\\azure-docs-pr\\articles\\extended-zones\\<filename>.md`\n\n2. **Update `TOC.yml`** — add an entry under the appropriate section:\n   ```yaml\n   - name: <Short descriptive name>\n     href: <filename>.md\n   ```\n   Sections in TOC: Overview, Quickstarts, Tutorials, Concepts, How-to guides, Arc-enabled PaaS workloads, Security, Reference, Resources\n\n3. **Update `overview.md`** if the article covers a new service — add it to the supported services table under the correct category row (`Compute`, `Networking`, `Storage`, `BCDR`, `Arc-enabled PaaS`, `Other`). Services use `<br>` as separator and are written as markdown links.\n\n4. **Verify frontmatter** — all required fields present (`title`, `description`, `author`, `ms.author`, `ms.service`, `ms.topic`, `ms.date`).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-diagnostic-audio-recordings.md":"---\ntitle: References - How to collect diagnostic audio recordings\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect diagnostic audio recordings.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect diagnostic audio recordings\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nTo debug some issue, you may need audio recordings, especially when investigating audio quality problems, such as distorted audio and echo issues.\n\nTo collect diagnostic audio recordings, open the chrome://webrtc-internals(Chrome) or edge://webrtc-internals(Edge) page.\n\nWhen you click *Enable diagnostic audio recordings*, the browser prompts a dialog asking for the download file location.\n\n:::image type=\"content\" source=\"./media/enable-diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recordings settings.\":::\n\nAfter you finish an ACS call, you should be able to see files saved in the folder you choose.\n\n:::image type=\"content\" source=\"./media/diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recording files.\":::\n\n`*.output.N.wav` is the audio output sent to the speaker.\n\n`*.input.M.wav` is the audio input captured from the microphone.\n\n`*.aecdump` contains the necessary wav files for debugging audio after processed by the audio processing module in browsers.\n\n## How to build tools for inspecting aecdump files\nTo inspect `*.aecdump` files, you must use the `unpack_aecdump` utility program, the source code can be found at [unpack\\_aecdump](https://chromium.googlesource.com/external/webrtc/+/HEAD/rtc_tools/unpack_aecdump?autodive=0)\n\nYou need to prepare the build environment (Here we use Windows as an example)\n\nPrerequisites:\n\n* Visual Studio 2022\n* Python 3\n* depot\\_tools: See Install depot\\_tools in [Checking out and Building Chromium for Windows](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md#Install) \n\nMake sure you add depot\\_tools to the start of your PATH and it must be ahead of any installs of Python.\n\nRun the following commands\n```sh\nmkdir webrtc\ncd webrtc\ngclient\nfetch --nohooks webrtc\ngclient sync\ncd src\ngn gen out/Default\nninja -C out/Default unpack_aecdump\n```\nThe file is available at webrtc/src/out/Default/unpack\\_aecdump.exe\n\n## How to inspect aecdump files\n\nRun the command:\n\n```\nunpack_aecdump.exe audio_debug.5.aecdump\n```\n\n:::image type=\"content\" source=\"./media/extract-aecdump.png\" alt-text=\"Screenshot of the extracted aecdump file.\":::\n\nThere are three different types of audio files extracted from the aecdump file\n\n* reverseN.wav: the rendered audio originated from the same process\n* inputN.wav: the captured audio, before audio processing.\n* ref\\_outN.wav: the captured audio, after audio processing and will be sent to the network.\n\nIf you think that audio quality issues are on the sending end, you can first check ref\\_outN.wav, find the possible problem time points, and compare them with the same time points in inputN.wav to see if the audio quality issues are caused by the audio processing module, or if the audio quality was already poor in the source.\n\n\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-call-info.md":"---\ntitle: References - How to collect call info\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect call info.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 05/22/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect call info\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen you report an issue, providing important call information can help us quickly locate the problematic area and gain a deeper understanding of the issue.\n\n* ACS resource ID\n* call ID\n* participant ID\n\n## How to get ACS resource ID\n\nYou can get this information from [https://portal.azure.com](https://portal.azure.com).\n\n:::image type=\"content\" source=\"./media/get-azure-communication-services-resource-id.png\" alt-text=\"Screenshot of getting ACS resource ID.\" lightbox=\"./media/get-azure-communication-services-resource-id.png\":::\n\n## How to get call ID and participant ID\nThe participant ID is important when there are multiple users in the same call.\n```typescript\n// call ID\ncall.id\n// local participant ID\ncall.info.participantId\n\n```\n\n\n\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-windows-audio-event-log.md":"---\ntitle: References - How to collect Windows audio event log\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect Windows audio event log.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect Windows audio event logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe Windows audio event log provides information on the audio device state around the time when the issue we're investigating occurred.\n\nTo collect the audio event log:\n* open Windows Event Viewer\n* browse the logs in *Application and Services Logs > Microsoft > Windows > Audio > Operational*\n* you can either\n    * select logs within time range, right click and choose *Save Selected Events*.\n    * right click on Operational, and choose *Save All Events As*.\n\n:::image type=\"content\" source=\"./media/windows-audio-event-log.png\" alt-text=\"Screenshot of Windows Audio Event Log.\":::\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-failed.md":"---\ntitle: Understanding cameraStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartFailed UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the source is unavailable.\nThis error typically happens when the specified video device is being used by another process.\nFor example, the user may see this `cameraStartFailed` UFD event when they attempt to join a call with video on a browser such as Chrome while another Edge browser has been using the same camera.\n\n| cameraStartFailed                     | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // cameraStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `cameraStartFailed` UFD event is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on the UI to alert users of camera start failures. To resolve this issue, users can check if there are other processes using the same camera and close them if necessary.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-start-failed.md":"---\ntitle: Understanding capturerStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of capturerStartFailed UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# capturerStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `capturerStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the screen sharing stream because the source is unavailable.\nThis issue can happen when the underlying layer prevents the sharing of the selected source.\n\n| capturerStartFailed         | Details                |\n| ----------------------------|------------------------|\n| UFD type                    | MediaDiagnostics       |\n| value type                  | DiagnosticFlag         |\n| possible values             | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'capturerStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The capturerStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `capturerStartFailed` is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on your user interface to alert users of screen sharing failures.\nUsers can then take steps to resolve the issue on their own, such as checking if there are other processes causing this issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-freeze.md":"---\ntitle: Understanding cameraFreeze UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraFreeze UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraFreeze UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nA `cameraFreeze` UFD event with a `true` value occurs when the SDK detects that the input framerate goes down to zero, causing the video output to appear frozen or not changing.\n\nThe underlying issue may suggest problems with the user's video camera, or in certain instances, the device may cease sending video frames.\nFor example, on certain Android device models, you may see a `cameraFreeze` UFD event when the user locks the screen or puts the browser in the background.\nIn this situation, the Android operating system stops sending video frames, and thus on the other end of the call a user may see a `cameraFreeze` UFD event.\n\n| cameraFreeze                          | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraFreeze UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraFreeze') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraFreeze UFD recovered, notify the user\n       }\n    }\n});\n```\n\n## How to mitigate or resolve\nYour calling application should subscribe to events from the User Facing Diagnostics.\nYou should also consider displaying a message on your user interface to alert users of potential camera issues.\nThe user can try to stop and start the video again, switch to other cameras or switch calling devices to resolve the issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-stopped-unexpectedly.md":"---\ntitle: Understanding cameraStoppedUnexpectedly UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStoppedUnexpectedly UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStoppedUnexpectedly UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStoppedUnexpectedly` UFD event with a `true` value occurs when the SDK detects that the camera track was muted.\n\nKeep in mind that this event relates to the camera track's `mute` event triggered by an external source.\nThe event can be triggered on mobile browsers when the browser goes to background.\nAdditionally, in some browser implementations, the browser sends black frames when the video input track is muted.\n\n| cameraStoppedUnexpectedly             | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStoppedUnexpectedly') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStoppedUnexpectedly UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should subscribe to events from the User Facing Diagnostics and display a message on the user interface to alert users of any camera state changes.\nThis way ensures that users are aware of camera stopped issues and aren't surprised if other participants can't see the video.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-permission-denied.md":"---\ntitle: Understanding cameraPermissionDenied UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraPermissionDenied UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraPermissionDenied UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraPermissionDenied` UFD event with a `true` value occurs when the SDK detects that the camera permission was denied either at browser layer or at Operating System level.\n\n| cameraPermissionDenied                | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraPermissionDenied UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraPermissionDenied') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraPermissionDenied UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nIf the permission to use the camera is denied, the application should display a message on your user interface.\nAdditionally, your application should acquire camera browser permission before listing the available camera devices.\nIf there's no permission granted, the application is unable to get the detailed information of the camera devices on the user's system.\n\nThe camera permission can also be revoked during a call, so your application should also subscribe to events from the User Facing Diagnostics events to display a message on the user interface.\nUsers can then take steps to resolve the issue on their own, such as enabling the browser permission or checking whether they disabled the camera access at OS level.\n\n> [!NOTE]\n> Some browser platforms cache the permission results.\n\nIf a user denied the permission at browser layer previously, invoking `askDevicePermission` API doesn't trigger the permission UI prompt, but it can know the permission was denied.\nYour application should show instructions and ask the user to reset or grant the browser camera permission manually.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-timed-out.md":"---\ntitle: Understanding cameraStartTimedOut UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartTimedOut UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartTimedOut UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartTimedOut` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the promise returned by `getUserMedia` browser method doesn't resolve within a certain period of time.\nThis issue can happen when the user starts a call with video enabled, but the browser displays a UI permission prompt and the user doesn't respond to it.\n\n| cameraStartTimedOut                   | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartTimedOut') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStartTimedOut UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nInvoking `DeviceManager.askDevicePermission` also reduces the possibility that the user doesn't respond to the UI permission prompt after the call starts.\n\nIf the timeout issue is caused by hardware problems, users can try selecting a different camera device when starting the video stream.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md)","articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md)"},"items":[{"name":"extended-zones-article-writer.md","path":".github/copilot/skills/extended-zones-article-writer.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/.github/copilot/skills/extended-zones-article-writer.md","title":"Skills Skill","category":"anthropic-skill","format":"markdown","content":"# Extended Zones Article Writer\n\nWrite production-ready how-to, quickstart, tutorial, or overview articles for the Azure Extended Zones Learn documentation.\n\n## Context Sources\n\n### Existing articles (reference for style and structure)\n- **Directory:** `C:\\github\\azure-docs-pr\\articles\\extended-zones\\`\n- **Best style reference:** `create-storage-account.md` (canonical how-to example)\n- **TOC:** `TOC.yml` — defines the site navigation structure\n- **Overview:** `overview.md` — contains the supported services table\n\n### Team code repos (for technical accuracy)\n- `C:\\github\\AzureStack-Fiji-Workloads` — team workloads and service code\n- `C:\\github\\Extended-Zones-Core-Platform` — core platform code\n- `C:\\github\\Fiji-Services-EdgeZoneRP` — Edge Zone resource provider\n- `C:\\github\\Fiji-EdgeZones-TSG-TeamDocs` — troubleshooting and team docs\n- `C:\\github\\EdgeZones-Operations-Configuration` — operations config\n- `C:\\github\\EdgeZones-Operations-Validation` — validation scripts\n\n---\n\n## Frontmatter Template\n\n```yaml\n---\ntitle: <Descriptive title — verb + noun + \"in an Azure Extended Zone\">\ndescription: <One sentence, under 160 characters, starting with \"Learn how to...\">\nauthor: svaldesgzz\nms.author: svaldes\nms.service: azure-extended-zones\nms.topic: <how-to | quickstart | tutorial | overview | concept-article>\nms.date: <MM/DD/YYYY>\n---\n```\n\n---\n\n## Article Naming Conventions\n\n| Type | Pattern | Example |\n|---|---|---|\n| How-to | `[action]-[resource].md` | `create-storage-account.md` |\n| Quickstart | `deploy-[resource]-[method].md` | `deploy-vm-portal.md` |\n| Tutorial | `[action]-[resource].md` | `backup-virtual-machine.md` |\n| Overview | `overview.md` or `[topic]-overview.md` | `overview.md` |\n\n---\n\n## Article Structure by Type\n\n### How-to guide (`ms.topic: how-to`)\n1. H1 title\n2. Intro paragraph (\"In this article, you learn how to...\")\n3. `## Prerequisites` — subscription, Extended Zone access, tools\n4. `## Sign in to Azure` — standard portal sign-in step\n5. Main task sections (H2 per major step)\n6. `## Clean up resources` — portal resource group deletion\n7. `## Related content` — 3–4 bullet links to related articles\n\n### Quickstart (`ms.topic: quickstart`)\nSame as how-to but faster-paced, single focused task, ends with a \"Next steps\" section.\n\n### Tutorial (`ms.topic: tutorial`)\nMulti-step, progressive task. Each H2 section builds on the previous one.\n\n---\n\n## Key Formatting Rules\n\n**Tables** (use for all settings/configuration steps):\n```markdown\n| Setting | Value |\n| --- | --- |\n| Key vault name | Enter a unique name, such as *myKeyVault*. |\n| Region | Select the **parent region** of the target Extended Zone. |\n```\n\n**Note/Important/Caution blocks:**\n```markdown\n> [!NOTE]\n> Note text here.\n\n> [!IMPORTANT]\n> Critical info here.\n\n> [!CAUTION]\n> Warning text here.\n```\n\n**Code blocks** — always use language-specific fences:\n- Azure CLI: ` ```azurecli `\n- PowerShell: ` ```azurepowershell `\n- JSON: ` ```json `\n- Bash: ` ```bash `\n\n**Cross-links** — use relative paths:\n```markdown\n[Request access to an Azure Extended Zone](request-access.md)\n```\n\n**No screenshots** — use text instructions and tables only (no `:::image` directives).\n\n---\n\n## Extended Zone–Specific Notes\n\n- **Key Vault, Disk Encryption Sets, and most control-plane services** are created in the **parent Azure region**, not the Extended Zone itself.\n- **VMs, AKS clusters, storage accounts** are deployed **in the Extended Zone** using `--edge-zone <zone-name>` in the CLI or by selecting \"Deploy to an Azure Extended Zone\" in the portal under the Region field.\n- Always remind users: select the **parent region** first in the portal, then select **Deploy to an Azure Extended Zone** and choose the Extended Zone.\n- Storage in Extended Zones is **Premium only** with **LRS** redundancy.\n- Refer to `request-access.md` whenever Extended Zone access or zone names are needed.\n\n---\n\n## Publishing Checklist\n\nAfter writing the article:\n\n1. **Save the file** to `C:\\github\\azure-docs-pr\\articles\\extended-zones\\<filename>.md`\n\n2. **Update `TOC.yml`** — add an entry under the appropriate section:\n   ```yaml\n   - name: <Short descriptive name>\n     href: <filename>.md\n   ```\n   Sections in TOC: Overview, Quickstarts, Tutorials, Concepts, How-to guides, Arc-enabled PaaS workloads, Security, Reference, Resources\n\n3. **Update `overview.md`** if the article covers a new service — add it to the supported services table under the correct category row (`Compute`, `Networking`, `Storage`, `BCDR`, `Arc-enabled PaaS`, `Other`). Services use `<br>` as separator and are written as markdown links.\n\n4. **Verify frontmatter** — all required fields present (`title`, `description`, `author`, `ms.author`, `ms.service`, `ms.topic`, `ms.date`).\n","isInternal":false,"tokens":1188,"sizeBytes":4784},{"name":"how-to-collect-browser-verbose-log.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-browser-verbose-log.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-browser-verbose-log.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: References - How to collect verbose log from browsers\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect verbose log from browsers.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect verbose log from browsers\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen an issue originates within the underlying layer, collecting verbose logs in addition to web logs can provide valuable information.\n\nTo collect the verbose log from the browser, initiate a web browser session with specific command line arguments. You open your video application within the browser and execute the scenario you're debugging.\nOnce the scenario is executed, you can close the browser.\nDuring log collection, ensure to keep only the necessary tabs open in the browser.\n\nTo collect the verbose log of the Edge browser, open a command line window and execute:\n\n`\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" --user-data-dir=C:\\edge-debug  --enable-logging --v=0 --vmodule=*/webrtc/*=2,*/libjingle/*=2,*media*=4 --no-sandbox`\n\nFor Chrome, replace the executable path in the command with `C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe`.\n\nDon’t omit the `--user-data-dir` argument. This argument is used to specify where the logs are saved.\n\nThis command enables verbose logging and saves the log to chrome\\_debug.log.\nIt's important to have only the necessary pages open in the Edge browser, such as `edge://webrtc-internals` and the application web page.\nKeeping only necessary pages open ensure that logs from different web applications don't mix in the same log file.\n\nLog file is located at: `C:\\edge-debug\\chrome_debug.log`\n\nThe verbose log is flushed each time the browser is opened with the specified command line.\nTherefore, after closing the browser, you should copy the log and check its file size and modification time to confirm that it contains the verbose log.\n","frontmatter":{"title":"References - How to collect verbose log from browsers","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Learn how to collect verbose log from browsers.","author":"enricohuang","ms.author":"enricohuang","services":"azure-communication-services","ms.date":"02/24/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":464,"sizeBytes":2157},{"name":"how-to-collect-call-info.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-call-info.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-call-info.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: References - How to collect call info\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect call info.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 05/22/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect call info\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen you report an issue, providing important call information can help us quickly locate the problematic area and gain a deeper understanding of the issue.\n\n* ACS resource ID\n* call ID\n* participant ID\n\n## How to get ACS resource ID\n\nYou can get this information from [https://portal.azure.com](https://portal.azure.com).\n\n:::image type=\"content\" source=\"./media/get-azure-communication-services-resource-id.png\" alt-text=\"Screenshot of getting ACS resource ID.\" lightbox=\"./media/get-azure-communication-services-resource-id.png\":::\n\n## How to get call ID and participant ID\nThe participant ID is important when there are multiple users in the same call.\n```typescript\n// call ID\ncall.id\n// local participant ID\ncall.info.participantId\n\n```\n\n\n\n","frontmatter":{"title":"References - How to collect call info","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Learn how to collect call info.","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"05/22/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":275,"sizeBytes":1238},{"name":"how-to-collect-client-logs.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-client-logs.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-client-logs.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: References - How to collect client logs\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect client logs.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect client logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe client logs can help when we want to get more details while debugging an issue.\nTo collect client logs, you can use [@azure/logger](https://www.npmjs.com/package/@azure/logger), which is used by WebJS calling SDK internally.\n\n```typescript\nimport { setLogLevel, createClientLogger, AzureLogger } from '@azure/logger';\nsetLogLevel('verbose');\nlet logger = createClientLogger('ACS');\nconst callClient = new CallClient({ logger });\n\n// Redirect ACS Calling SDK's logs\nAzureLogger.log = (...args) => {\n    // To console, file, buffer, REST API, etc...\n    console.log(...args); \n};\n\n// Application logging\nlogger.info('....');\n```\n\n[@azure/logger](https://www.npmjs.com/package/@azure/logger) supports four different log levels:\n\n* verbose\n* info\n* warning\n* error\n\nFor debugging purposes, `info` level logging is sufficient in most cases.\n\nIn the browser environment, [@azure/logger](https://www.npmjs.com/package/@azure/logger) outputs logs to the console by default.\nYou can redirect logs by overriding `AzureLogger.log` method. For more information, see [@azure/logger](/javascript/api/overview/azure/logger-readme).\n\nYour app might keep logs in memory if it has a \\'download log file\\' feature.\nIf that is the case, you have to set a limit on the log size.\nNot setting a limit might cause memory issues on long running calls.\n\nAdditionally, if you send logs to a remote service, consider mechanisms such as compression and scheduling.\nIf the client has insufficient bandwidth, sending a large amount of log data in a short period of time can affect call quality.\n","frontmatter":{"title":"References - How to collect client logs","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Learn how to collect client logs.","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"02/24/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":462,"sizeBytes":2066},{"name":"how-to-collect-diagnostic-audio-recordings.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-diagnostic-audio-recordings.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-diagnostic-audio-recordings.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: References - How to collect diagnostic audio recordings\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect diagnostic audio recordings.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect diagnostic audio recordings\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nTo debug some issue, you may need audio recordings, especially when investigating audio quality problems, such as distorted audio and echo issues.\n\nTo collect diagnostic audio recordings, open the chrome://webrtc-internals(Chrome) or edge://webrtc-internals(Edge) page.\n\nWhen you click *Enable diagnostic audio recordings*, the browser prompts a dialog asking for the download file location.\n\n:::image type=\"content\" source=\"./media/enable-diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recordings settings.\":::\n\nAfter you finish an ACS call, you should be able to see files saved in the folder you choose.\n\n:::image type=\"content\" source=\"./media/diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recording files.\":::\n\n`*.output.N.wav` is the audio output sent to the speaker.\n\n`*.input.M.wav` is the audio input captured from the microphone.\n\n`*.aecdump` contains the necessary wav files for debugging audio after processed by the audio processing module in browsers.\n\n## How to build tools for inspecting aecdump files\nTo inspect `*.aecdump` files, you must use the `unpack_aecdump` utility program, the source code can be found at [unpack\\_aecdump](https://chromium.googlesource.com/external/webrtc/+/HEAD/rtc_tools/unpack_aecdump?autodive=0)\n\nYou need to prepare the build environment (Here we use Windows as an example)\n\nPrerequisites:\n\n* Visual Studio 2022\n* Python 3\n* depot\\_tools: See Install depot\\_tools in [Checking out and Building Chromium for Windows](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md#Install) \n\nMake sure you add depot\\_tools to the start of your PATH and it must be ahead of any installs of Python.\n\nRun the following commands\n```sh\nmkdir webrtc\ncd webrtc\ngclient\nfetch --nohooks webrtc\ngclient sync\ncd src\ngn gen out/Default\nninja -C out/Default unpack_aecdump\n```\nThe file is available at webrtc/src/out/Default/unpack\\_aecdump.exe\n\n## How to inspect aecdump files\n\nRun the command:\n\n```\nunpack_aecdump.exe audio_debug.5.aecdump\n```\n\n:::image type=\"content\" source=\"./media/extract-aecdump.png\" alt-text=\"Screenshot of the extracted aecdump file.\":::\n\nThere are three different types of audio files extracted from the aecdump file\n\n* reverseN.wav: the rendered audio originated from the same process\n* inputN.wav: the captured audio, before audio processing.\n* ref\\_outN.wav: the captured audio, after audio processing and will be sent to the network.\n\nIf you think that audio quality issues are on the sending end, you can first check ref\\_outN.wav, find the possible problem time points, and compare them with the same time points in inputN.wav to see if the audio quality issues are caused by the audio processing module, or if the audio quality was already poor in the source.\n\n\n","frontmatter":{"title":"References - How to collect diagnostic audio recordings","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Learn how to collect diagnostic audio recordings.","author":"enricohuang","ms.author":"enricohuang","services":"azure-communication-services","ms.date":"02/24/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":774,"sizeBytes":3358},{"name":"how-to-collect-windows-audio-event-log.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-windows-audio-event-log.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-windows-audio-event-log.md","title":"References Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: References - How to collect Windows audio event log\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect Windows audio event log.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect Windows audio event logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe Windows audio event log provides information on the audio device state around the time when the issue we're investigating occurred.\n\nTo collect the audio event log:\n* open Windows Event Viewer\n* browse the logs in *Application and Services Logs > Microsoft > Windows > Audio > Operational*\n* you can either\n    * select logs within time range, right click and choose *Save Selected Events*.\n    * right click on Operational, and choose *Save All Events As*.\n\n:::image type=\"content\" source=\"./media/windows-audio-event-log.png\" alt-text=\"Screenshot of Windows Audio Event Log.\":::\n","frontmatter":{"title":"References - How to collect Windows audio event log","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Learn how to collect Windows audio event log.","author":"enricohuang","ms.author":"enricohuang","services":"azure-communication-services","ms.date":"02/24/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":243,"sizeBytes":1122},{"name":"camera-freeze.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-freeze.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-freeze.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: Understanding cameraFreeze UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraFreeze UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraFreeze UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nA `cameraFreeze` UFD event with a `true` value occurs when the SDK detects that the input framerate goes down to zero, causing the video output to appear frozen or not changing.\n\nThe underlying issue may suggest problems with the user's video camera, or in certain instances, the device may cease sending video frames.\nFor example, on certain Android device models, you may see a `cameraFreeze` UFD event when the user locks the screen or puts the browser in the background.\nIn this situation, the Android operating system stops sending video frames, and thus on the other end of the call a user may see a `cameraFreeze` UFD event.\n\n| cameraFreeze                          | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraFreeze UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraFreeze') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraFreeze UFD recovered, notify the user\n       }\n    }\n});\n```\n\n## How to mitigate or resolve\nYour calling application should subscribe to events from the User Facing Diagnostics.\nYou should also consider displaying a message on your user interface to alert users of potential camera issues.\nThe user can try to stop and start the video again, switch to other cameras or switch calling devices to resolve the issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","frontmatter":{"title":"Understanding cameraFreeze UFD - User Facing Diagnostics","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Overview and details reference for understanding cameraFreeze UFD.","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"03/27/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":507,"sizeBytes":2429},{"name":"camera-permission-denied.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-permission-denied.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-permission-denied.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: Understanding cameraPermissionDenied UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraPermissionDenied UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraPermissionDenied UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraPermissionDenied` UFD event with a `true` value occurs when the SDK detects that the camera permission was denied either at browser layer or at Operating System level.\n\n| cameraPermissionDenied                | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraPermissionDenied UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraPermissionDenied') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraPermissionDenied UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nIf the permission to use the camera is denied, the application should display a message on your user interface.\nAdditionally, your application should acquire camera browser permission before listing the available camera devices.\nIf there's no permission granted, the application is unable to get the detailed information of the camera devices on the user's system.\n\nThe camera permission can also be revoked during a call, so your application should also subscribe to events from the User Facing Diagnostics events to display a message on the user interface.\nUsers can then take steps to resolve the issue on their own, such as enabling the browser permission or checking whether they disabled the camera access at OS level.\n\n> [!NOTE]\n> Some browser platforms cache the permission results.\n\nIf a user denied the permission at browser layer previously, invoking `askDevicePermission` API doesn't trigger the permission UI prompt, but it can know the permission was denied.\nYour application should show instructions and ask the user to reset or grant the browser camera permission manually.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","frontmatter":{"title":"Understanding cameraPermissionDenied UFD - User Facing Diagnostics","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Overview and details reference for understanding cameraPermissionDenied UFD.","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"03/27/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":570,"sizeBytes":2945},{"name":"camera-start-failed.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-failed.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-failed.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: Understanding cameraStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartFailed UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the source is unavailable.\nThis error typically happens when the specified video device is being used by another process.\nFor example, the user may see this `cameraStartFailed` UFD event when they attempt to join a call with video on a browser such as Chrome while another Edge browser has been using the same camera.\n\n| cameraStartFailed                     | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // cameraStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `cameraStartFailed` UFD event is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on the UI to alert users of camera start failures. To resolve this issue, users can check if there are other processes using the same camera and close them if necessary.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","frontmatter":{"title":"Understanding cameraStartFailed UFD - User Facing Diagnostics","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Overview and detailed reference of cameraStartFailed UFD","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"03/27/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":456,"sizeBytes":2214},{"name":"camera-start-timed-out.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-timed-out.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-timed-out.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: Understanding cameraStartTimedOut UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartTimedOut UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartTimedOut UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartTimedOut` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the promise returned by `getUserMedia` browser method doesn't resolve within a certain period of time.\nThis issue can happen when the user starts a call with video enabled, but the browser displays a UI permission prompt and the user doesn't respond to it.\n\n| cameraStartTimedOut                   | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartTimedOut') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStartTimedOut UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nInvoking `DeviceManager.askDevicePermission` also reduces the possibility that the user doesn't respond to the UI permission prompt after the call starts.\n\nIf the timeout issue is caused by hardware problems, users can try selecting a different camera device when starting the video stream.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","frontmatter":{"title":"Understanding cameraStartTimedOut UFD - User Facing Diagnostics","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Overview and detailed reference of cameraStartTimedOut UFD","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"03/27/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":471,"sizeBytes":2267},{"name":"camera-stopped-unexpectedly.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-stopped-unexpectedly.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-stopped-unexpectedly.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: Understanding cameraStoppedUnexpectedly UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStoppedUnexpectedly UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStoppedUnexpectedly UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStoppedUnexpectedly` UFD event with a `true` value occurs when the SDK detects that the camera track was muted.\n\nKeep in mind that this event relates to the camera track's `mute` event triggered by an external source.\nThe event can be triggered on mobile browsers when the browser goes to background.\nAdditionally, in some browser implementations, the browser sends black frames when the video input track is muted.\n\n| cameraStoppedUnexpectedly             | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStoppedUnexpectedly') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStoppedUnexpectedly UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should subscribe to events from the User Facing Diagnostics and display a message on the user interface to alert users of any camera state changes.\nThis way ensures that users are aware of camera stopped issues and aren't surprised if other participants can't see the video.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","frontmatter":{"title":"Understanding cameraStoppedUnexpectedly UFD - User Facing Diagnostics","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Overview and detailed reference of cameraStoppedUnexpectedly UFD.","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"03/27/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":445,"sizeBytes":2205},{"name":"capturer-start-failed.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-start-failed.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-start-failed.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"---\ntitle: Understanding capturerStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of capturerStartFailed UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# capturerStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `capturerStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the screen sharing stream because the source is unavailable.\nThis issue can happen when the underlying layer prevents the sharing of the selected source.\n\n| capturerStartFailed         | Details                |\n| ----------------------------|------------------------|\n| UFD type                    | MediaDiagnostics       |\n| value type                  | DiagnosticFlag         |\n| possible values             | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'capturerStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The capturerStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `capturerStartFailed` is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on your user interface to alert users of screen sharing failures.\nUsers can then take steps to resolve the issue on their own, such as checking if there are other processes causing this issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n","frontmatter":{"title":"Understanding capturerStartFailed UFD - User Facing Diagnostics","titleSuffix":"Azure Communication Services - Troubleshooting Guide","description":"Overview and detailed reference of capturerStartFailed UFD.","author":"sloanster","ms.author":"micahvivion","services":"azure-communication-services","ms.date":"03/27/2024","ms.topic":"troubleshooting","ms.service":"azure-communication-services","ms.subservice":"calling"},"isInternal":false,"tokens":424,"sizeBytes":2006},{"name":"capturer-stopped-unexpectedly.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md)","tokens":300,"sizeBytes":367},{"name":"microphone-mute-unexpectedly.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md)","tokens":300,"sizeBytes":365},{"name":"microphone-not-functioning.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md)","tokens":300,"sizeBytes":361},{"name":"microphone-permission-denied.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md)","tokens":300,"sizeBytes":365},{"name":"network-receive-quality.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md)","tokens":300,"sizeBytes":355},{"name":"network-reconnect.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md)","tokens":300,"sizeBytes":343},{"name":"network-relays-not-reachable.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md)","tokens":300,"sizeBytes":365},{"name":"network-send-quality.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md)","tokens":300,"sizeBytes":349},{"name":"no-microphone-devices-enumerated.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md)","tokens":300,"sizeBytes":373},{"name":"no-network.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md)","tokens":300,"sizeBytes":329},{"name":"no-speaker-devices-enumerated.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md)","tokens":300,"sizeBytes":367},{"name":"screenshare-recording-disabled.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md)","tokens":300,"sizeBytes":369},{"name":"speaking-while-microphone-is-muted.md","path":"articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md","rawUrl":"https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md","title":"Ufd Skill","category":"anthropic-skill","format":"markdown","content":"# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md)","tokens":300,"sizeBytes":377}],"systemPromptSnippet":"<yakaai_skills repo=\"MicrosoftDocs/azure-docs\">\n<!-- File: .github/copilot/skills/extended-zones-article-writer.md (Tokens: ~1188 | Category: anthropic-skill) -->\n# Extended Zones Article Writer\n\nWrite production-ready how-to, quickstart, tutorial, or overview articles for the Azure Extended Zones Learn documentation.\n\n## Context Sources\n\n### Existing articles (reference for style and structure)\n- **Directory:** `C:\\github\\azure-docs-pr\\articles\\extended-zones\\`\n- **Best style reference:** `create-storage-account.md` (canonical how-to example)\n- **TOC:** `TOC.yml` — defines the site navigation structure\n- **Overview:** `overview.md` — contains the supported services table\n\n### Team code repos (for technical accuracy)\n- `C:\\github\\AzureStack-Fiji-Workloads` — team workloads and service code\n- `C:\\github\\Extended-Zones-Core-Platform` — core platform code\n- `C:\\github\\Fiji-Services-EdgeZoneRP` — Edge Zone resource provider\n- `C:\\github\\Fiji-EdgeZones-TSG-TeamDocs` — troubleshooting and team docs\n- `C:\\github\\EdgeZones-Operations-Configuration` — operations config\n- `C:\\github\\EdgeZones-Operations-Validation` — validation scripts\n\n---\n\n## Frontmatter Template\n\n```yaml\n---\ntitle: <Descriptive title — verb + noun + \"in an Azure Extended Zone\">\ndescription: <One sentence, under 160 characters, starting with \"Learn how to...\">\nauthor: svaldesgzz\nms.author: svaldes\nms.service: azure-extended-zones\nms.topic: <how-to | quickstart | tutorial | overview | concept-article>\nms.date: <MM/DD/YYYY>\n---\n```\n\n---\n\n## Article Naming Conventions\n\n| Type | Pattern | Example |\n|---|---|---|\n| How-to | `[action]-[resource].md` | `create-storage-account.md` |\n| Quickstart | `deploy-[resource]-[method].md` | `deploy-vm-portal.md` |\n| Tutorial | `[action]-[resource].md` | `backup-virtual-machine.md` |\n| Overview | `overview.md` or `[topic]-overview.md` | `overview.md` |\n\n---\n\n## Article Structure by Type\n\n### How-to guide (`ms.topic: how-to`)\n1. H1 title\n2. Intro paragraph (\"In this article, you learn how to...\")\n3. `## Prerequisites` — subscription, Extended Zone access, tools\n4. `## Sign in to Azure` — standard portal sign-in step\n5. Main task sections (H2 per major step)\n6. `## Clean up resources` — portal resource group deletion\n7. `## Related content` — 3–4 bullet links to related articles\n\n### Quickstart (`ms.topic: quickstart`)\nSame as how-to but faster-paced, single focused task, ends with a \"Next steps\" section.\n\n### Tutorial (`ms.topic: tutorial`)\nMulti-step, progressive task. Each H2 section builds on the previous one.\n\n---\n\n## Key Formatting Rules\n\n**Tables** (use for all settings/configuration steps):\n```markdown\n| Setting | Value |\n| --- | --- |\n| Key vault name | Enter a unique name, such as *myKeyVault*. |\n| Region | Select the **parent region** of the target Extended Zone. |\n```\n\n**Note/Important/Caution blocks:**\n```markdown\n> [!NOTE]\n> Note text here.\n\n> [!IMPORTANT]\n> Critical info here.\n\n> [!CAUTION]\n> Warning text here.\n```\n\n**Code blocks** — always use language-specific fences:\n- Azure CLI: ` ```azurecli `\n- PowerShell: ` ```azurepowershell `\n- JSON: ` ```json `\n- Bash: ` ```bash `\n\n**Cross-links** — use relative paths:\n```markdown\n[Request access to an Azure Extended Zone](request-access.md)\n```\n\n**No screenshots** — use text instructions and tables only (no `:::image` directives).\n\n---\n\n## Extended Zone–Specific Notes\n\n- **Key Vault, Disk Encryption Sets, and most control-plane services** are created in the **parent Azure region**, not the Extended Zone itself.\n- **VMs, AKS clusters, storage accounts** are deployed **in the Extended Zone** using `--edge-zone <zone-name>` in the CLI or by selecting \"Deploy to an Azure Extended Zone\" in the portal under the Region field.\n- Always remind users: select the **parent region** first in the portal, then select **Deploy to an Azure Extended Zone** and choose the Extended Zone.\n- Storage in Extended Zones is **Premium only** with **LRS** redundancy.\n- Refer to `request-access.md` whenever Extended Zone access or zone names are needed.\n\n---\n\n## Publishing Checklist\n\nAfter writing the article:\n\n1. **Save the file** to `C:\\github\\azure-docs-pr\\articles\\extended-zones\\<filename>.md`\n\n2. **Update `TOC.yml`** — add an entry under the appropriate section:\n   ```yaml\n   - name: <Short descriptive name>\n     href: <filename>.md\n   ```\n   Sections in TOC: Overview, Quickstarts, Tutorials, Concepts, How-to guides, Arc-enabled PaaS workloads, Security, Reference, Resources\n\n3. **Update `overview.md`** if the article covers a new service — add it to the supported services table under the correct category row (`Compute`, `Networking`, `Storage`, `BCDR`, `Arc-enabled PaaS`, `Other`). Services use `<br>` as separator and are written as markdown links.\n\n4. **Verify frontmatter** — all required fields present (`title`, `description`, `author`, `ms.author`, `ms.service`, `ms.topic`, `ms.date`).\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-browser-verbose-log.md (Tokens: ~464 | Category: anthropic-skill) -->\n---\ntitle: References - How to collect verbose log from browsers\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect verbose log from browsers.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect verbose log from browsers\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen an issue originates within the underlying layer, collecting verbose logs in addition to web logs can provide valuable information.\n\nTo collect the verbose log from the browser, initiate a web browser session with specific command line arguments. You open your video application within the browser and execute the scenario you're debugging.\nOnce the scenario is executed, you can close the browser.\nDuring log collection, ensure to keep only the necessary tabs open in the browser.\n\nTo collect the verbose log of the Edge browser, open a command line window and execute:\n\n`\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\" --user-data-dir=C:\\edge-debug  --enable-logging --v=0 --vmodule=*/webrtc/*=2,*/libjingle/*=2,*media*=4 --no-sandbox`\n\nFor Chrome, replace the executable path in the command with `C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe`.\n\nDon’t omit the `--user-data-dir` argument. This argument is used to specify where the logs are saved.\n\nThis command enables verbose logging and saves the log to chrome\\_debug.log.\nIt's important to have only the necessary pages open in the Edge browser, such as `edge://webrtc-internals` and the application web page.\nKeeping only necessary pages open ensure that logs from different web applications don't mix in the same log file.\n\nLog file is located at: `C:\\edge-debug\\chrome_debug.log`\n\nThe verbose log is flushed each time the browser is opened with the specified command line.\nTherefore, after closing the browser, you should copy the log and check its file size and modification time to confirm that it contains the verbose log.\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-call-info.md (Tokens: ~275 | Category: anthropic-skill) -->\n---\ntitle: References - How to collect call info\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect call info.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 05/22/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect call info\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nWhen you report an issue, providing important call information can help us quickly locate the problematic area and gain a deeper understanding of the issue.\n\n* ACS resource ID\n* call ID\n* participant ID\n\n## How to get ACS resource ID\n\nYou can get this information from [https://portal.azure.com](https://portal.azure.com).\n\n:::image type=\"content\" source=\"./media/get-azure-communication-services-resource-id.png\" alt-text=\"Screenshot of getting ACS resource ID.\" lightbox=\"./media/get-azure-communication-services-resource-id.png\":::\n\n## How to get call ID and participant ID\nThe participant ID is important when there are multiple users in the same call.\n```typescript\n// call ID\ncall.id\n// local participant ID\ncall.info.participantId\n\n```\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-client-logs.md (Tokens: ~462 | Category: anthropic-skill) -->\n---\ntitle: References - How to collect client logs\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect client logs.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect client logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe client logs can help when we want to get more details while debugging an issue.\nTo collect client logs, you can use [@azure/logger](https://www.npmjs.com/package/@azure/logger), which is used by WebJS calling SDK internally.\n\n```typescript\nimport { setLogLevel, createClientLogger, AzureLogger } from '@azure/logger';\nsetLogLevel('verbose');\nlet logger = createClientLogger('ACS');\nconst callClient = new CallClient({ logger });\n\n// Redirect ACS Calling SDK's logs\nAzureLogger.log = (...args) => {\n    // To console, file, buffer, REST API, etc...\n    console.log(...args); \n};\n\n// Application logging\nlogger.info('....');\n```\n\n[@azure/logger](https://www.npmjs.com/package/@azure/logger) supports four different log levels:\n\n* verbose\n* info\n* warning\n* error\n\nFor debugging purposes, `info` level logging is sufficient in most cases.\n\nIn the browser environment, [@azure/logger](https://www.npmjs.com/package/@azure/logger) outputs logs to the console by default.\nYou can redirect logs by overriding `AzureLogger.log` method. For more information, see [@azure/logger](/javascript/api/overview/azure/logger-readme).\n\nYour app might keep logs in memory if it has a \\'download log file\\' feature.\nIf that is the case, you have to set a limit on the log size.\nNot setting a limit might cause memory issues on long running calls.\n\nAdditionally, if you send logs to a remote service, consider mechanisms such as compression and scheduling.\nIf the client has insufficient bandwidth, sending a large amount of log data in a short period of time can affect call quality.\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-diagnostic-audio-recordings.md (Tokens: ~774 | Category: anthropic-skill) -->\n---\ntitle: References - How to collect diagnostic audio recordings\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect diagnostic audio recordings.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect diagnostic audio recordings\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nTo debug some issue, you may need audio recordings, especially when investigating audio quality problems, such as distorted audio and echo issues.\n\nTo collect diagnostic audio recordings, open the chrome://webrtc-internals(Chrome) or edge://webrtc-internals(Edge) page.\n\nWhen you click *Enable diagnostic audio recordings*, the browser prompts a dialog asking for the download file location.\n\n:::image type=\"content\" source=\"./media/enable-diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recordings settings.\":::\n\nAfter you finish an ACS call, you should be able to see files saved in the folder you choose.\n\n:::image type=\"content\" source=\"./media/diagnostic-audio-recordings.png\" alt-text=\"Screenshot of diagnostic audio recording files.\":::\n\n`*.output.N.wav` is the audio output sent to the speaker.\n\n`*.input.M.wav` is the audio input captured from the microphone.\n\n`*.aecdump` contains the necessary wav files for debugging audio after processed by the audio processing module in browsers.\n\n## How to build tools for inspecting aecdump files\nTo inspect `*.aecdump` files, you must use the `unpack_aecdump` utility program, the source code can be found at [unpack\\_aecdump](https://chromium.googlesource.com/external/webrtc/+/HEAD/rtc_tools/unpack_aecdump?autodive=0)\n\nYou need to prepare the build environment (Here we use Windows as an example)\n\nPrerequisites:\n\n* Visual Studio 2022\n* Python 3\n* depot\\_tools: See Install depot\\_tools in [Checking out and Building Chromium for Windows](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md#Install) \n\nMake sure you add depot\\_tools to the start of your PATH and it must be ahead of any installs of Python.\n\nRun the following commands\n```sh\nmkdir webrtc\ncd webrtc\ngclient\nfetch --nohooks webrtc\ngclient sync\ncd src\ngn gen out/Default\nninja -C out/Default unpack_aecdump\n```\nThe file is available at webrtc/src/out/Default/unpack\\_aecdump.exe\n\n## How to inspect aecdump files\n\nRun the command:\n\n```\nunpack_aecdump.exe audio_debug.5.aecdump\n```\n\n:::image type=\"content\" source=\"./media/extract-aecdump.png\" alt-text=\"Screenshot of the extracted aecdump file.\":::\n\nThere are three different types of audio files extracted from the aecdump file\n\n* reverseN.wav: the rendered audio originated from the same process\n* inputN.wav: the captured audio, before audio processing.\n* ref\\_outN.wav: the captured audio, after audio processing and will be sent to the network.\n\nIf you think that audio quality issues are on the sending end, you can first check ref\\_outN.wav, find the possible problem time points, and compare them with the same time points in inputN.wav to see if the audio quality issues are caused by the audio processing module, or if the audio quality was already poor in the source.\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/how-to-collect-windows-audio-event-log.md (Tokens: ~243 | Category: anthropic-skill) -->\n---\ntitle: References - How to collect Windows audio event log\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Learn how to collect Windows audio event log.\nauthor: enricohuang\nms.author: enricohuang\n\nservices: azure-communication-services\nms.date: 02/24/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# How to collect Windows audio event logs\n\n[!INCLUDE [Retirement and breaking changes](../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe Windows audio event log provides information on the audio device state around the time when the issue we're investigating occurred.\n\nTo collect the audio event log:\n* open Windows Event Viewer\n* browse the logs in *Application and Services Logs > Microsoft > Windows > Audio > Operational*\n* you can either\n    * select logs within time range, right click and choose *Save Selected Events*.\n    * right click on Operational, and choose *Save All Events As*.\n\n:::image type=\"content\" source=\"./media/windows-audio-event-log.png\" alt-text=\"Screenshot of Windows Audio Event Log.\":::\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-freeze.md (Tokens: ~507 | Category: anthropic-skill) -->\n---\ntitle: Understanding cameraFreeze UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraFreeze UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraFreeze UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nA `cameraFreeze` UFD event with a `true` value occurs when the SDK detects that the input framerate goes down to zero, causing the video output to appear frozen or not changing.\n\nThe underlying issue may suggest problems with the user's video camera, or in certain instances, the device may cease sending video frames.\nFor example, on certain Android device models, you may see a `cameraFreeze` UFD event when the user locks the screen or puts the browser in the background.\nIn this situation, the Android operating system stops sending video frames, and thus on the other end of the call a user may see a `cameraFreeze` UFD event.\n\n| cameraFreeze                          | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraFreeze UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraFreeze') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraFreeze UFD recovered, notify the user\n       }\n    }\n});\n```\n\n## How to mitigate or resolve\nYour calling application should subscribe to events from the User Facing Diagnostics.\nYou should also consider displaying a message on your user interface to alert users of potential camera issues.\nThe user can try to stop and start the video again, switch to other cameras or switch calling devices to resolve the issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-permission-denied.md (Tokens: ~570 | Category: anthropic-skill) -->\n---\ntitle: Understanding cameraPermissionDenied UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and details reference for understanding cameraPermissionDenied UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraPermissionDenied UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraPermissionDenied` UFD event with a `true` value occurs when the SDK detects that the camera permission was denied either at browser layer or at Operating System level.\n\n| cameraPermissionDenied                | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example code to catch a cameraPermissionDenied UFD event\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraPermissionDenied') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraPermissionDenied UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nIf the permission to use the camera is denied, the application should display a message on your user interface.\nAdditionally, your application should acquire camera browser permission before listing the available camera devices.\nIf there's no permission granted, the application is unable to get the detailed information of the camera devices on the user's system.\n\nThe camera permission can also be revoked during a call, so your application should also subscribe to events from the User Facing Diagnostics events to display a message on the user interface.\nUsers can then take steps to resolve the issue on their own, such as enabling the browser permission or checking whether they disabled the camera access at OS level.\n\n> [!NOTE]\n> Some browser platforms cache the permission results.\n\nIf a user denied the permission at browser layer previously, invoking `askDevicePermission` API doesn't trigger the permission UI prompt, but it can know the permission was denied.\nYour application should show instructions and ask the user to reset or grant the browser camera permission manually.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-failed.md (Tokens: ~456 | Category: anthropic-skill) -->\n---\ntitle: Understanding cameraStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartFailed UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the source is unavailable.\nThis error typically happens when the specified video device is being used by another process.\nFor example, the user may see this `cameraStartFailed` UFD event when they attempt to join a call with video on a browser such as Chrome while another Edge browser has been using the same camera.\n\n| cameraStartFailed                     | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // cameraStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `cameraStartFailed` UFD event is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on the UI to alert users of camera start failures. To resolve this issue, users can check if there are other processes using the same camera and close them if necessary.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-start-timed-out.md (Tokens: ~471 | Category: anthropic-skill) -->\n---\ntitle: Understanding cameraStartTimedOut UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStartTimedOut UFD\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStartTimedOut UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStartTimedOut` UFD event with a `true` value occurs when the SDK is unable to acquire the camera stream because the promise returned by `getUserMedia` browser method doesn't resolve within a certain period of time.\nThis issue can happen when the user starts a call with video enabled, but the browser displays a UI permission prompt and the user doesn't respond to it.\n\n| cameraStartTimedOut                   | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStartTimedOut') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStartTimedOut UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe application should invoke `DeviceManager.askDevicePermission` before the call starts to check whether the permission was granted or not.\nInvoking `DeviceManager.askDevicePermission` also reduces the possibility that the user doesn't respond to the UI permission prompt after the call starts.\n\nIf the timeout issue is caused by hardware problems, users can try selecting a different camera device when starting the video stream.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/camera-stopped-unexpectedly.md (Tokens: ~445 | Category: anthropic-skill) -->\n---\ntitle: Understanding cameraStoppedUnexpectedly UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of cameraStoppedUnexpectedly UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# cameraStoppedUnexpectedly UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `cameraStoppedUnexpectedly` UFD event with a `true` value occurs when the SDK detects that the camera track was muted.\n\nKeep in mind that this event relates to the camera track's `mute` event triggered by an external source.\nThe event can be triggered on mobile browsers when the browser goes to background.\nAdditionally, in some browser implementations, the browser sends black frames when the video input track is muted.\n\n| cameraStoppedUnexpectedly             | Details                |\n| --------------------------------------|------------------------|\n| UFD type                              | MediaDiagnostics       |\n| value type                            | DiagnosticFlag         |\n| possible values                       | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'cameraStoppedUnexpectedly') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The cameraStoppedUnexpectedly UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nYour application should subscribe to events from the User Facing Diagnostics and display a message on the user interface to alert users of any camera state changes.\nThis way ensures that users are aware of camera stopped issues and aren't surprised if other participants can't see the video.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-start-failed.md (Tokens: ~424 | Category: anthropic-skill) -->\n---\ntitle: Understanding capturerStartFailed UFD - User Facing Diagnostics\ntitleSuffix: Azure Communication Services - Troubleshooting Guide\ndescription: Overview and detailed reference of capturerStartFailed UFD.\nauthor: sloanster\nms.author: micahvivion\n\nservices: azure-communication-services\nms.date: 03/27/2024\nms.topic: troubleshooting\nms.service: azure-communication-services\nms.subservice: calling\n---\n\n# capturerStartFailed UFD\n\n[!INCLUDE [Retirement and breaking changes](../../../../../includes/acs-retirement-breakingchange-callout.md)]\nThe `capturerStartFailed` UFD event with a `true` value occurs when the SDK is unable to acquire the screen sharing stream because the source is unavailable.\nThis issue can happen when the underlying layer prevents the sharing of the selected source.\n\n| capturerStartFailed         | Details                |\n| ----------------------------|------------------------|\n| UFD type                    | MediaDiagnostics       |\n| value type                  | DiagnosticFlag         |\n| possible values             | true, false            |\n\n## Example\n```typescript\ncall.feature(Features.UserFacingDiagnostics).media.on('diagnosticChanged', (diagnosticInfo) => {\n    if (diagnosticInfo.diagnostic === 'capturerStartFailed') {\n       if (diagnosticInfo.value === true) {\n           // show a warning message on UI\n       } else {\n           // The capturerStartFailed UFD recovered, notify the user\n       }\n    }\n});\n```\n## How to mitigate or resolve\nThe `capturerStartFailed` is due to external reasons, so your application should subscribe to events from the User Facing Diagnostics and display a message on your user interface to alert users of screen sharing failures.\nUsers can then take steps to resolve the issue on their own, such as checking if there are other processes causing this issue.\n\n## Next steps\n* Learn more about [User Facing Diagnostics feature](../../../../../concepts/voice-video-calling/user-facing-diagnostics.md?pivots=platform-web).\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/capturer-stopped-unexpectedly.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-mute-unexpectedly.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-not-functioning.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/microphone-permission-denied.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-receive-quality.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-reconnect.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-relays-not-reachable.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/network-send-quality.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-microphone-devices-enumerated.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-network.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/no-speaker-devices-enumerated.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/screenshare-recording-disabled.md)\n\n<!-- File: articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md (Tokens: ~300 | Category: anthropic-skill) -->\n# Ufd Skill\n\nPath: `articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/HEAD/articles/communication-services/resources/troubleshooting/voice-video-calling/references/ufd/speaking-while-microphone-is-muted.md)\n</yakaai_skills>"}