[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M715DRKCFEGN744WAFE66THT":3,"skill-same:01M715DRKCFEGN744WAFE66THT":65},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":14,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M715DRKCFEGN744WAFE66THT","azure-mgmt-botservice-dotnet",null,"Azure Resource Manager SDK for Bot Service in .NET. Management plane operations for creating and managing Azure Bot resources, channels (Teams, DirectLine, Slack), and connection settings.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcursor\u002Fazure-mgmt-botservice-dotnet\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"dotnet","azure","azure mgmt botservice dotnet","service","2026","unknown","for","manager","plane","connection","channels","azure resource manager","resources","bot","community","operations","settings","teams","sdk","slack","2026-11-10 10:12:30",false,"---\nname: azure-mgmt-botservice-dotnet\ndescription: Azure Resource Manager SDK for Bot Service in .NET. Management plane operations for creating and managing Azure Bot resources, channels (Teams, DirectLine, Slack), and connection settings.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure.ResourceManager.BotService (.NET)\n\nManagement plane SDK for provisioning and managing Azure Bot Service resources via Azure Resource Manager.\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.BotService\ndotnet add package Azure.Identity\n```\n\n**Current Versions**: Stable v1.1.1, Preview v1.1.0-beta.1\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=\u003Cyour-subscription-id>\n# For service principal auth (optional)\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.BotService;\n\n\u002F\u002F Authenticate using DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nArmClient armClient = new ArmClient(credential);\n\n\u002F\u002F Get subscription and resource group\nSubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();\nResourceGroupResource resourceGroup = await subscription.GetResourceGroups().GetAsync(\"myResourceGroup\");\n\n\u002F\u002F Access bot collection\nBotCollection botCollection = resourceGroup.GetBots();\n```\n\n## Resource Hierarchy\n\n```\nArmClient\n└── SubscriptionResource\n    └── ResourceGroupResource\n        └── BotResource\n            ├── BotChannelResource (DirectLine, Teams, Slack, etc.)\n            ├── BotConnectionSettingResource (OAuth connections)\n            └── BotServicePrivateEndpointConnectionResource\n```\n\n## Core Workflows\n\n### 1. Create Bot Resource\n\n```csharp\nusing Azure.ResourceManager.BotService;\nusing Azure.ResourceManager.BotService.Models;\n\n\u002F\u002F Create bot data\nvar botData = new BotData(AzureLocation.WestUS2)\n{\n    Kind = BotServiceKind.Azurebot,\n    Sku = new BotServiceSku(BotServiceSkuName.F0),\n    Properties = new BotProperties(\n        displayName: \"MyBot\",\n        endpoint: new Uri(\"https:\u002F\u002Fmybot.azurewebsites.net\u002Fapi\u002Fmessages\"),\n        msaAppId: \"\u003Cyour-msa-app-id>\")\n    {\n        Description = \"My Azure Bot\",\n        MsaAppType = BotMsaAppType.MultiTenant\n    }\n};\n\n\u002F\u002F Create or update the bot\nArmOperation\u003CBotResource> operation = await botCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed, \n    \"myBotName\", \n    botData);\n    \nBotResource bot = operation.Value;\nConsole.WriteLine($\"Bot created: {bot.Data.Name}\");\n```\n\n### 2. Configure DirectLine Channel\n\n```csharp\n\u002F\u002F Get the bot\nBotResource bot = await resourceGroup.GetBots().GetAsync(\"myBotName\");\n\n\u002F\u002F Get channel collection\nBotChannelCollection channels = bot.GetBotChannels();\n\n\u002F\u002F Create DirectLine channel configuration\nvar channelData = new BotChannelData(AzureLocation.WestUS2)\n{\n    Properties = new DirectLineChannel()\n    {\n        Properties = new DirectLineChannelProperties()\n        {\n            Sites = \n            {\n                new DirectLineSite(\"Default Site\")\n                {\n                    IsEnabled = true,\n                    IsV1Enabled = false,\n                    IsV3Enabled = true,\n                    IsSecureSiteEnabled = true\n                }\n            }\n        }\n    }\n};\n\n\u002F\u002F Create or update the channel\nArmOperation\u003CBotChannelResource> channelOp = await channels.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    BotChannelName.DirectLineChannel,\n    channelData);\n\nConsole.WriteLine(\"DirectLine channel configured\");\n```\n\n### 3. Configure Microsoft Teams Channel\n\n```csharp\nvar teamsChannelData = new BotChannelData(AzureLocation.WestUS2)\n{\n    Properties = new MsTeamsChannel()\n    {\n        Properties = new MsTeamsChannelProperties()\n        {\n            IsEnabled = true,\n            EnableCalling = false\n        }\n    }\n};\n\nawait channels.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    BotChannelName.MsTeamsChannel,\n    teamsChannelData);\n```\n\n### 4. Configure Web Chat Channel\n\n```csharp\nvar webChatChannelData = new BotChannelData(AzureLocation.WestUS2)\n{\n    Properties = new WebChatChannel()\n    {\n        Properties = new WebChatChannelProperties()\n        {\n            Sites =\n            {\n                new WebChatSite(\"Default Site\")\n                {\n                    IsEnabled = true\n                }\n            }\n        }\n    }\n};\n\nawait channels.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    BotChannelName.WebChatChannel,\n    webChatChannelData);\n```\n\n### 5. Get Bot and List Channels\n\n```csharp\n\u002F\u002F Get bot\nBotResource bot = await botCollection.GetAsync(\"myBotName\");\nConsole.WriteLine($\"Bot: {bot.Data.Properties.DisplayName}\");\nConsole.WriteLine($\"Endpoint: {bot.Data.Properties.Endpoint}\");\n\n\u002F\u002F List channels\nawait foreach (BotChannelResource channel in bot.GetBotChannels().GetAllAsync())\n{\n    Console.WriteLine($\"Channel: {channel.Data.Name}\");\n}\n```\n\n### 6. Regenerate DirectLine Keys\n\n```csharp\nvar regenerateRequest = new BotChannelRegenerateKeysContent(BotChannelName.DirectLineChannel)\n{\n    SiteName = \"Default Site\"\n};\n\nBotChannelResource channelWithKeys = await bot.GetBotChannelWithRegenerateKeysAsync(regenerateRequest);\n```\n\n### 7. Update Bot\n\n```csharp\nBotResource bot = await botCollection.GetAsync(\"myBotName\");\n\n\u002F\u002F Update using patch\nvar updateData = new BotData(bot.Data.Location)\n{\n    Properties = new BotProperties(\n        displayName: \"Updated Bot Name\",\n        endpoint: bot.Data.Properties.Endpoint,\n        msaAppId: bot.Data.Properties.MsaAppId)\n    {\n        Description = \"Updated description\"\n    }\n};\n\nawait bot.UpdateAsync(updateData);\n```\n\n### 8. Delete Bot\n\n```csharp\nBotResource bot = await botCollection.GetAsync(\"myBotName\");\nawait bot.DeleteAsync(WaitUntil.Completed);\n```\n\n## Supported Channel Types\n\n| Channel | Constant | Class |\n|---------|----------|-------|\n| Direct Line | `BotChannelName.DirectLineChannel` | `DirectLineChannel` |\n| Direct Line Speech | `BotChannelName.DirectLineSpeechChannel` | `DirectLineSpeechChannel` |\n| Microsoft Teams | `BotChannelName.MsTeamsChannel` | `MsTeamsChannel` |\n| Web Chat | `BotChannelName.WebChatChannel` | `WebChatChannel` |\n| Slack | `BotChannelName.SlackChannel` | `SlackChannel` |\n| Facebook | `BotChannelName.FacebookChannel` | `FacebookChannel` |\n| Email | `BotChannelName.EmailChannel` | `EmailChannel` |\n| Telegram | `BotChannelName.TelegramChannel` | `TelegramChannel` |\n| Telephony | `BotChannelName.TelephonyChannel` | `TelephonyChannel` |\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ArmClient` | Entry point for all ARM operations |\n| `BotResource` | Represents an Azure Bot resource |\n| `BotCollection` | Collection for bot CRUD |\n| `BotData` | Bot resource definition |\n| `BotProperties` | Bot configuration properties |\n| `BotChannelResource` | Channel configuration |\n| `BotChannelCollection` | Collection of channels |\n| `BotChannelData` | Channel configuration data |\n| `BotConnectionSettingResource` | OAuth connection settings |\n\n## BotServiceKind Values\n\n| Value | Description |\n|-------|-------------|\n| `BotServiceKind.Azurebot` | Azure Bot (recommended) |\n| `BotServiceKind.Bot` | Legacy Bot Framework bot |\n| `BotServiceKind.Designer` | Composer bot |\n| `BotServiceKind.Function` | Function bot |\n| `BotServiceKind.Sdk` | SDK bot |\n\n## BotServiceSkuName Values\n\n| Value | Description |\n|-------|-------------|\n| `BotServiceSkuName.F0` | Free tier |\n| `BotServiceSkuName.S1` | Standard tier |\n\n## BotMsaAppType Values\n\n| Value | Description |\n|-------|-------------|\n| `BotMsaAppType.MultiTenant` | Multi-tenant app |\n| `BotMsaAppType.SingleTenant` | Single-tenant app |\n| `BotMsaAppType.UserAssignedMSI` | User-assigned managed identity |\n\n## Best Practices\n\n1. **Always use `DefaultAzureCredential`** — supports multiple auth methods\n2. **Use `WaitUntil.Completed`** for synchronous operations\n3. **Handle `RequestFailedException`** for API errors\n4. **Use async methods** (`*Async`) for all operations\n5. **Store MSA App credentials securely** — use Key Vault for secrets\n6. **Use managed identity** (`BotMsaAppType.UserAssignedMSI`) for production bots\n7. **Enable secure sites** for DirectLine channels in production\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var operation = await botCollection.CreateOrUpdateAsync(\n        WaitUntil.Completed, \n        botName, \n        botData);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Bot already exists\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.ResourceManager.BotService` | Bot management (this SDK) | `dotnet add package Azure.ResourceManager.BotService` |\n| `Microsoft.Bot.Builder` | Bot Framework SDK | `dotnet add package Microsoft.Bot.Builder` |\n| `Microsoft.Bot.Builder.Integration.AspNet.Core` | ASP.NET Core integration | `dotnet add package Microsoft.Bot.Builder.Integration.AspNet.Core` |\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| NuGet Package | https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FAzure.ResourceManager.BotService |\n| API Reference | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fazure.resourcemanager.botservice |\n| GitHub Source | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Ftree\u002Fmain\u002Fsdk\u002Fbotservice\u002FAzure.ResourceManager.BotService |\n| Azure Bot Service Docs | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fbot-service\u002F |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Azure.ResourceManager.BotService (.NET)\n\nManagement plane SDK for provisioning and managing Azure Bot Service resources via Azure Resource Manager.\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.BotService\ndotnet add package Azure.Identity\n```\n\n**Current Versions**: Stable v1.1.1, Preview v1.1.0-beta.1\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=\u003Cyour-subscription-id>\n# For service principal auth (optional)\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.BotService;\n\n\u002F\u002F Authenticate using DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nArmClient armClient = new ArmClient(credential);\n\n\u002F\u002F Get subscription and resource group\nSubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();\nResourceGroupResource resourceGroup = await subscription.GetResourceGroups().GetAsync(\"myResourceGroup\");\n\n\u002F\u002F Access bot collection\nBotCollection botCollection = resourceGroup.GetBots();\n```\n\n## Resource Hierarchy\n\n```\nArmClient\n└── SubscriptionResource\n    └── ResourceGroupResource\n        └── BotResource\n            ├── BotChannelResource (DirectLine, Teams, Slack, etc.)\n            ├── BotConnectionSettingResource (OAuth connections)\n            └── BotServicePrivateEndpointConnectionResource\n```\n\n## Core Workflows\n\n### 1. Create Bot Resource\n\n```csharp\nusing Azure.ResourceManager.BotService;\nusing Azure.ResourceManager.BotService.Models;\n\n\u002F\u002F Create bot data\nvar botData = new BotData(AzureLocation.WestUS2)\n{\n    Kind = BotServiceKind.Azurebot,\n    Sku = new BotServiceSku(BotServiceSkuName.F0),\n    Properties = new BotProperties(\n        displayName: \"MyBot\",\n        endpoint: new Uri(\"https:\u002F\u002Fmybot.azurewebsites.net\u002Fapi\u002Fmessages\"),\n        msaAppId: \"\u003Cyour-msa-app-id>\")\n    {\n        Description = \"My Azure Bot\",\n        MsaAppType = BotMsaAppType.MultiTenant\n    }\n};\n\n\u002F\u002F Create or update the bot\nArmOperation\u003CBotResource> operation = await botCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed, \n    \"myBotName\", \n    botData);\n    \nBotResource bot = operation.Value;\nConsole.WriteLine($\"Bot created: {bot.Data.Name}\");\n```\n\n### 2. Configure DirectLine Channel\n\n```csharp\n\u002F\u002F Get the bot\nBotResource bot = await resourceGroup.GetBots().GetAsync(\"myBotName\");\n\n\u002F\u002F Get channel collection\nBotChannelCollection channels = bot.GetBotChannels();\n\n\u002F\u002F Create DirectLine channel configuration\nvar channelData = new BotChannelData(AzureLocation.WestUS2)\n{\n    Properties = new DirectLineChannel()\n    {\n        Properties = new DirectLineChannelProperties()\n        {\n            Sites = \n            {\n                new DirectLineSite(\"Default Site\")\n                {\n                    IsEnabled = true,\n                    IsV1Enabled = false,\n                    IsV3Enabled = true,\n                    IsSecureSiteEnabled = true\n                }\n            }\n        }\n    }\n};\n\n\u002F\u002F Create or update the channel\nArmOperation\u003CBotChannelResource> channelOp = await channels.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    BotChannelName.DirectLineChannel,\n    channelData);\n\nConsole.WriteLine(\"DirectLine channel configured\");\n```\n\n### 3. Configure Microsoft Teams Channel\n\n```csharp\nvar teamsChannelData = new BotChannelData(AzureLocation.WestUS2)\n{\n    Properties = new MsTeamsChannel()\n    {\n        Properties = new MsTeamsChannelProperties()\n        {\n            IsEnabled = true,\n            EnableCalling = false\n        }\n    }\n};\n\nawait channels.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    BotChannelName.MsTeamsChannel,\n    teamsChannelData);\n```\n\n### 4. Configure Web Chat Channel\n\n```csharp\nvar webChatChannelData = new BotChannelData(AzureLocation.WestUS2)\n{\n    Properties = new WebChatChannel()\n    {\n        Properties = new WebChatChannelProperties()\n        {\n            Sites =\n            {\n                new WebChatSite(\"Default Site\")\n                {\n                    IsEnabled = true\n                }\n            }\n        }\n    }\n};\n\nawait channels.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    BotChannelName.WebChatChannel,\n    webChatChannelData);\n```\n\n### 5. Get Bot and List Channels\n\n```csharp\n\u002F\u002F Get bot\nBotResource bot = await botCollection.GetAsync(\"myBotName\");\nConsole.WriteLine($\"Bot: {bot.Data.Properties.DisplayName}\");\nConsole.WriteLine($\"Endpoint: {bot.Data.Properties.Endpoint}\");\n\n\u002F\u002F List channels\nawait foreach (BotChannelResource channel in bot.GetBotChannels().GetAllAsync())\n{\n    Console.WriteLine($\"Channel: {channel.Data.Name}\");\n}\n```\n\n### 6. Regenerate DirectLine Keys\n\n```csharp\nvar regenerateRequest = new BotChannelRegenerateKeysContent(BotChannelName.DirectLineChannel)\n{\n    SiteName = \"Default Site\"\n};\n\nBotChannelResource channelWithKeys = await bot.GetBotChannelWithRegenerateKeysAsync(regenerateRequest);\n```\n\n### 7. Update Bot\n\n```csharp\nBotResource bot = await botCollection.GetAsync(\"myBotName\");\n\n\u002F\u002F Update using patch\nvar updateData = new BotData(bot.Data.Location)\n{\n    Properties = new BotProperties(\n        displayName: \"Updated Bot Name\",\n        endpoint: bot.Data.Properties.Endpoint,\n        msaAppId: bot.Data.Properties.MsaAppId)\n    {\n        Description = \"Updated description\"\n    }\n};\n\nawait bot.UpdateAsync(updateData);\n```\n\n### 8. Delete Bot\n\n```csharp\nBotResource bot = await botCollection.GetAsync(\"myBotName\");\nawait bot.DeleteAsync(WaitUntil.Completed);\n```\n\n## Supported Channel Types\n\n| Channel | Constant | Class |\n|---------|----------|-------|\n| Direct Line | `BotChannelName.DirectLineChannel` | `DirectLineChannel` |\n| Direct Line Speech | `BotChannelName.DirectLineSpeechChannel` | `DirectLineSpeechChannel` |\n| Microsoft Teams | `BotChannelName.MsTeamsChannel` | `MsTeamsChannel` |\n| Web Chat | `BotChannelName.WebChatChannel` | `WebChatChannel` |\n| Slack | `BotChannelName.SlackChannel` | `SlackChannel` |\n| Facebook | `BotChannelName.FacebookChannel` | `FacebookChannel` |\n| Email | `BotChannelName.EmailChannel` | `EmailChannel` |\n| Telegram | `BotChannelName.TelegramChannel` | `TelegramChannel` |\n| Telephony | `BotChannelName.TelephonyChannel` | `TelephonyChannel` |\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ArmClient` | Entry point for all ARM operations |\n| `BotResource` | Represents an Azure Bot resource |\n| `BotCollection` | Collection for bot CRUD |\n| `BotData` | Bot resource definition |\n| `BotProperties` | Bot configuration properties |\n| `BotChannelResource` | Channel configuration |\n| `BotChannelCollection` | Collection of channels |\n| `BotChannelData` | Channel configuration data |\n| `BotConnectionSettingResource` | OAuth connection settings |\n\n## BotServiceKind Values\n\n| Value | Description |\n|-------|-------------|\n| `BotServiceKind.Azurebot` | Azure Bot (recommended) |\n| `BotServiceKind.Bot` | Legacy Bot Framework bot |\n| `BotServiceKind.Designer` | Composer bot |\n| `BotServiceKind.Function` | Function bot |\n| `BotServiceKind.Sdk` | SDK bot |\n\n## BotServiceSkuName Values\n\n| Value | Description |\n|-------|-------------|\n| `BotServiceSkuName.F0` | Free tier |\n| `BotServiceSkuName.S1` | Standard tier |\n\n## BotMsaAppType Values\n\n| Value | Description |\n|-------|-------------|\n| `BotMsaAppType.MultiTenant` | Multi-tenant app |\n| `BotMsaAppType.SingleTenant` | Single-tenant app |\n| `BotMsaAppType.UserAssignedMSI` | User-assigned managed identity |\n\n## Best Practices\n\n1. **Always use `DefaultAzureCredential`** — supports multiple auth methods\n2. **Use `WaitUntil.Completed`** for synchronous operations\n3. **Handle `RequestFailedException`** for API errors\n4. **Use async methods** (`*Async`) for all operations\n5. **Store MSA App credentials securely** — use Key Vault for secrets\n6. **Use managed identity** (`BotMsaAppType.UserAssignedMSI`) for production bots\n7. **Enable secure sites** for DirectLine channels in production\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var operation = await botCollection.CreateOrUpdateAsync(\n        WaitUntil.Completed, \n        botName, \n        botData);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Bot already exists\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Azure.ResourceManager.BotService` | Bot management (this SDK) | `dotnet add package Azure.ResourceManager.BotService` |\n| `Microsoft.Bot.Builder` | Bot Framework SDK | `dotnet add package Microsoft.Bot.Builder` |\n| `Microsoft.Bot.Builder.Integration.AspNet.Core` | ASP.NET Core integration | `dotnet add package Microsoft.Bot.Builder.Integration.AspNet.Core` |\n\n## Reference Links\n\n| Resource | URL |\n|----------|-----|\n| NuGet Package | https:\u002F\u002Fwww.nuget.org\u002Fpackages\u002FAzure.ResourceManager.BotService |\n| API Reference | https:\u002F\u002Flearn.microsoft.com\u002Fdotnet\u002Fapi\u002Fazure.resourcemanager.botservice |\n| GitHub Source | https:\u002F\u002Fgithub.com\u002FAzure\u002Fazure-sdk-for-net\u002Ftree\u002Fmain\u002Fsdk\u002Fbotservice\u002FAzure.ResourceManager.BotService |\n| Azure Bot Service Docs | https:\u002F\u002Flearn.microsoft.com\u002Fazure\u002Fbot-service\u002F |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":24,"source":33,"date_added":44,"description":7},"2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcursor\u002Fazure-mgmt-botservice-dotnet","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill azure-mgmt-botservice-dotnet",{"tool":57,"command":58},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill azure-mgmt-botservice-dotnet",{"tool":60,"command":61},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill azure-mgmt-botservice-dotnet","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcursor\u002Fazure-mgmt-botservice-dotnet\u002FSKILL.md",true,[],[66,90,116,126,139,158],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":77,"publishedAt":39},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[78,79,80,81,82,83,84,85,86,87,88,89],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch","with",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":39},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[97,98,99,100,101,102,80,103,104,105,106,107,108,109,110,111,112,113,114,115],"trend","trend tap","tap","api keys","Bash","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":39},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[123,124,97,108,109,110,111,101,80,113,125,114,115,107,105,104,103,112,102,100],"trend radar","radar","pulse",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":39},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[133,134,135,136,137,138],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":140,"name":141,"nameZh":6,"description":142,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":143,"categories":144,"keywords":150,"publishedAt":39},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[145],{"categoryNo":146,"categoryName":147,"taxonomyType":148,"taxonomyTypeDesc":149},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[141,86,151,152,153,89,108,154,155,156,99,157,112],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":39},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[160,165,166,167,112,168,155,169,170,171,172,173],"status","play","go","latest","github","discover","control","cmd","volume"]