2-acs-channel-detect

$npx mdskill add microsoft/acs-resource-explorer/2-acs-channel-detect

Use this skill for a fast (~30 seconds) check of which ACS channels are configured via child resources.

SKILL.md

.github/skills/2-acs-channel-detectView on GitHub ↗
---
name: 2-acs-channel-detect
description: Fast, resource-based detection of ACS channels (Email, Phone Numbers). Detects Email via EmailServices/Domains child resources and Phone Numbers via purchased phone Numbers under each ACS resource. Note: SMS, Chat, Call Automation, Job Router, Advance Messaging, and Rooms require metrics — use 3-acs-metrics-collect for complete detection.
---

## When to use this skill
Use this skill for a fast (~30 seconds) check of which ACS channels are configured via child resources.

Examples:
  - "Quick check for ACS channels (no metrics)"
  - "Detect which ACS services are configured"
  - "Fast scan for ACS Email and Phone Numbers"
  - "Do I have ACS Email domains set up?"

## Preconditions
- Azure authentication completed (use **azure/1-azure-auth-check** skill)
- ACS resources discovered (use **1-acs-resource-scan** skill)
- User has **Reader** access to resources

> **⚠️ Coverage Limitation:** This skill detects Email and Phone Numbers only.
> SMS, Chat, Call Automation, Job Router, Advance Messaging, and Rooms usage cannot be detected without metrics.
> For complete metrics-based channel detection, use **3-acs-metrics-collect**.

## ACS Channel Detection Configuration

| Channel | Detection Method | Child Resource Type |
|---------|-----------------|---------------------|
| Email | Child resources | `Microsoft.Communication/EmailServices/Domains` |
| Phone Numbers | Purchased numbers | Purchased numbers |
| SMS | ❌ Requires metrics | Use `3-acs-metrics-collect` |
| Chat | ❌ Requires metrics | Use `3-acs-metrics-collect` |
| Call Automation | ❌ Requires metrics | Use `3-acs-metrics-collect` |
| Job Router | ❌ Requires metrics | Use `3-acs-metrics-collect` |
| Advance Messaging | ❌ Requires metrics | Use `3-acs-metrics-collect` |
| Rooms | ❌ Requires metrics | Use `3-acs-metrics-collect` |

## Workflow

### 1) **Load ACS Resource Inventory**
   - Retrieve ACS resources from session state (saved by **1-acs-resource-scan**)
   - If no resources: Exit with "No ACS resources to analyze"

### 2) **For Each ACS Resource**
   - Display: "🔍 Analyzing: [Resource Name] ([Resource Group])"
   - Initialize detection results:
     ```
     {
       ResourceName: "...",
       EmailDetected: false,
       EmailDomainCount: 0,
       PhoneNumbersDetected: false,
       PhoneNumberCount: 0,
       SMSDetected: "Requires metrics",
       ChatDetected: "Requires metrics",
       CallAutomationDetected: "Requires metrics",
       JobRouterDetected: "Requires metrics",
       AdvanceMessagingDetected: "Requires metrics",
       RoomsDetected: "Requires metrics",
       DetectionMethod: "Resource-based (fast mode)"
     }
     ```

### 3) **Detect Email Service**
   - Query for Email domain resources in the resource group:
     ```bash
     az resource list \
       --resource-group <resource-group> \
       --resource-type "Microsoft.Communication/EmailServices/Domains" \
       --output json
     ```
   - **If domains found:**
     - Set EmailDetected = true
     - Count domains
     - Display: "  ✅ Email Service detected ([N] domain(s))"

   - **If no domains:**
     - Display: "  ⚪ Email Service not detected (no domains found)"

### 4) **Detect Phone Numbers**
   - Query for phone number resources:
     ```bash
     az resource list \
       --resource-group <resource-group> \
       --resource-type "Microsoft.Communication/CommunicationServices/phoneNumbers" \
       --output json
     ```
   - **If found:**
     - Set PhoneNumbersDetected = true
     - Count phone numbers
     - Display: "  ✅ Phone Numbers detected ([N] number(s))"

   - **If none found:**
     - Display: "  ⚪ Phone Numbers not detected"

### 5) **Display Channel Summary**
   ```
   === ACS Channel Detection Summary: [Resource Name] ===

   ✅ Email Service:   Detected (2 domains)
   ⚪ Phone Numbers:   Not detected
   ⚠️ SMS:             Requires metrics (use 3-acs-metrics-collect)
   ⚠️ Chat:            Requires metrics (use 3-acs-metrics-collect)
  ⚠️ Call Automation: Requires metrics (use 3-acs-metrics-collect)
  ⚠️ Job Router:      Requires metrics (use 3-acs-metrics-collect)
  ⚠️ Advance Msg:     Requires metrics (use 3-acs-metrics-collect)
    ⚠️ Rooms:           Requires metrics (use 3-acs-metrics-collect)

   Channels detected via resources: 1 out of 2 detectable (Email, Phone Numbers)
    Channels requiring metrics: 6 (SMS, Chat, Call Automation, Job Router, Advance Messaging, Rooms)
   ```

### 6) **Save Detection Results to Session State**
   - Update ACS resource inventory with detection results
   - Flag `RequiresMetricsForComplete = true` for all resources (always true for ACS)

### 7) **Recommend Next Steps**
   ```
   💡 Recommendations:
   - For Email/Phone Numbers only: Proceed to 4-acs-impact-analyze
  - For complete metrics-based channel detection: Run 3-acs-metrics-collect
   ```

## Output
- Email Service detection status (detected / not detected) + domain count
- Phone Numbers detection status + count
- Clear note that SMS, Chat, Call Automation, Job Router, Advance Messaging, and Rooms require metrics
- Updated session state with detection results

## Detection Speed
- **~30 seconds per subscription**
- Suitable for quick checks or when metrics access is unavailable

## When to Use Metrics Instead
Use **3-acs-metrics-collect** if you need:
- SMS usage detection
- Chat usage detection
- Call Automation usage detection
- Rooms usage detection
- Job Router usage detection
- Advance Messaging usage detection
- Usage-based detection (actual volume, not just configuration)
- Complete configured-channel coverage

## Related Skills
- Requires **azure/1-azure-auth-check**, **azure/2-azure-subscription-select**, **1-acs-resource-scan**
- Use **3-acs-metrics-collect** for complete detection
- Use **4-acs-impact-analyze** after detection

More from microsoft/acs-resource-explorer

SkillDescription
0-acs-full-scanFull ACS deprecation impact assessment orchestrator. Runs the complete workflow — auth check, subscription selection, ACS resource scan, channel detection (fast or full), impact analysis, and report generation. ACS-specific, no PowerShell script required.
1-acs-resource-scanScan Azure subscriptions for Azure Communication Services (ACS) resources (Microsoft.Communication/CommunicationServices). ACS-specific version of azure/3-azure-resource-scan with resource type pre-filled.
1-azure-auth-checkVerify Azure authentication status and display connection information (tenant, account, subscription context). Works with any Azure product or service.
2-azure-subscription-selectInteractive subscription selection workflow. Choose specific subscription(s) or scan all accessible subscriptions. Works with any Azure product or service.
3-acs-metrics-collectComprehensive ACS usage detection via Azure Monitor metrics. All configured ACS channels are pre-mapped (Email, SMS, Chat, Call Automation, Job Router, Advance Messaging, Rooms). Configurable lookback period of 1-93 days.
3-azure-resource-scanScan Azure subscriptions for specific resource types. Interactive prompts allow scanning any Azure product (ACS, Storage, Compute, Databases, etc). Returns resource inventory across selected subscriptions.
4-acs-impact-analyzeMap detected ACS channel usage to the appropriate Retirement Guide or Breaking Change Guide. Links each impacted resource to Microsoft migration resources per channel.
4-azure-channel-detectFast, resource-based feature detection for Azure resources. Detects features/channels by examining related child resources (domains, endpoints, configurations). Works with any Azure product where features are exposed as sub-resources.
5-acs-report-generateGenerate ACS deprecation impact reports in CSV, Markdown, or JSON format. Pre-configured with ACS channel columns, migration guide links, and ACS-specific report sections.
5-azure-metrics-collectComprehensive feature/usage detection via Azure Monitor metrics. Collects usage data over configurable lookback period (1-93 days). Works with any Azure product that emits metrics to Azure Monitor.