💬 Azure Mgmt Botservice Dotnet
Microsoft Azure サービス連携。メール・Slack等のやりとりをする人向け。
📺 まず動画で見る(YouTube)
▶ 【最新版】Claude(クロード)完全解説!20以上の便利機能をこの動画1本で全て解説 ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
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.
🇯🇵 日本人クリエイター向け解説
Microsoft Azure サービス連携。メール・Slack等のやりとりをする人向け。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o azure-mgmt-botservice-dotnet.zip https://jpskill.com/download/2506.zip && unzip -o azure-mgmt-botservice-dotnet.zip && rm azure-mgmt-botservice-dotnet.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/2506.zip -OutFile "$d\azure-mgmt-botservice-dotnet.zip"; Expand-Archive "$d\azure-mgmt-botservice-dotnet.zip" -DestinationPath $d -Force; ri "$d\azure-mgmt-botservice-dotnet.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
azure-mgmt-botservice-dotnet.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
azure-mgmt-botservice-dotnetフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-17
- 同梱ファイル
- 1
💬 こう話しかけるだけ — サンプルプロンプト
- › Azure Mgmt Botservice Dotnet で、お客様への返信文を作って
- › Azure Mgmt Botservice Dotnet を使って、社内向けアナウンスを書いて
- › Azure Mgmt Botservice Dotnet で、メールテンプレートを整備して
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Azure.ResourceManager.BotService (.NET)
Azure Resource Manager を介して Azure Bot Service リソースをプロビジョニングおよび管理するための管理プレーン SDK です。
インストール
dotnet add package Azure.ResourceManager.BotService
dotnet add package Azure.Identity
現在のバージョン: 安定版 v1.1.1、プレビュー版 v1.1.0-beta.1
環境変数
AZURE_SUBSCRIPTION_ID=<your-subscription-id>
# サービスプリンシパル認証の場合 (オプション)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
認証
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.BotService;
// DefaultAzureCredential を使用して認証します
var credential = new DefaultAzureCredential();
ArmClient armClient = new ArmClient(credential);
// サブスクリプションとリソースグループを取得します
SubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();
ResourceGroupResource resourceGroup = await subscription.GetResourceGroups().GetAsync("myResourceGroup");
// ボットコレクションにアクセスします
BotCollection botCollection = resourceGroup.GetBots();
リソース階層
ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── BotResource
├── BotChannelResource (DirectLine, Teams, Slack など)
├── BotConnectionSettingResource (OAuth 接続)
└── BotServicePrivateEndpointConnectionResource
主要なワークフロー
1. ボットリソースの作成
using Azure.ResourceManager.BotService;
using Azure.ResourceManager.BotService.Models;
// ボットデータを作成します
var botData = new BotData(AzureLocation.WestUS2)
{
Kind = BotServiceKind.Azurebot,
Sku = new BotServiceSku(BotServiceSkuName.F0),
Properties = new BotProperties(
displayName: "MyBot",
endpoint: new Uri("https://mybot.azurewebsites.net/api/messages"),
msaAppId: "<your-msa-app-id>")
{
Description = "My Azure Bot",
MsaAppType = BotMsaAppType.MultiTenant
}
};
// ボットを作成または更新します
ArmOperation<BotResource> operation = await botCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"myBotName",
botData);
BotResource bot = operation.Value;
Console.WriteLine($"Bot created: {bot.Data.Name}");
2. DirectLine チャネルの構成
// ボットを取得します
BotResource bot = await resourceGroup.GetBots().GetAsync("myBotName");
// チャネルコレクションを取得します
BotChannelCollection channels = bot.GetBotChannels();
// DirectLine チャネル構成を作成します
var channelData = new BotChannelData(AzureLocation.WestUS2)
{
Properties = new DirectLineChannel()
{
Properties = new DirectLineChannelProperties()
{
Sites =
{
new DirectLineSite("Default Site")
{
IsEnabled = true,
IsV1Enabled = false,
IsV3Enabled = true,
IsSecureSiteEnabled = true
}
}
}
}
};
// チャネルを作成または更新します
ArmOperation<BotChannelResource> channelOp = await channels.CreateOrUpdateAsync(
WaitUntil.Completed,
BotChannelName.DirectLineChannel,
channelData);
Console.WriteLine("DirectLine channel configured");
3. Microsoft Teams チャネルの構成
var teamsChannelData = new BotChannelData(AzureLocation.WestUS2)
{
Properties = new MsTeamsChannel()
{
Properties = new MsTeamsChannelProperties()
{
IsEnabled = true,
EnableCalling = false
}
}
};
await channels.CreateOrUpdateAsync(
WaitUntil.Completed,
BotChannelName.MsTeamsChannel,
teamsChannelData);
4. Web Chat チャネルの構成
var webChatChannelData = new BotChannelData(AzureLocation.WestUS2)
{
Properties = new WebChatChannel()
{
Properties = new WebChatChannelProperties()
{
Sites =
{
new WebChatSite("Default Site")
{
IsEnabled = true
}
}
}
}
};
await channels.CreateOrUpdateAsync(
WaitUntil.Completed,
BotChannelName.WebChatChannel,
webChatChannelData);
5. ボットの取得とチャネルの一覧表示
// ボットを取得します
BotResource bot = await botCollection.GetAsync("myBotName");
Console.WriteLine($"Bot: {bot.Data.Properties.DisplayName}");
Console.WriteLine($"Endpoint: {bot.Data.Properties.Endpoint}");
// チャネルを一覧表示します
await foreach (BotChannelResource channel in bot.GetBotChannels().GetAllAsync())
{
Console.WriteLine($"Channel: {channel.Data.Name}");
}
6. DirectLine キーの再生成
var regenerateRequest = new BotChannelRegenerateKeysContent(BotChannelName.DirectLineChannel)
{
SiteName = "Default Site"
};
BotChannelResource channelWithKeys = await bot.GetBotChannelWithRegenerateKeysAsync(regenerateRequest);
7. ボットの更新
BotResource bot = await botCollection.GetAsync("myBotName");
// パッチを使用して更新します
var updateData = new BotData(bot.Data.Location)
{
Properties = new BotProperties(
displayName: "Updated Bot Name",
endpoint: bot.Data.Properties.Endpoint,
msaAppId: bot.Data.Properties.MsaAppId)
{
Description = "Updated description"
}
};
await bot.UpdateAsync(updateData);
8. ボットの削除
BotResource bot = await botCollection.GetAsync("myBotName");
await bot.DeleteAsync(WaitUntil.Completed);
サポートされているチャネルタイプ
| チャネル | 定数 | クラス |
|---|---|---|
| Direct Line | BotChannelName.DirectLineChannel |
DirectLineChannel |
| Direct Line Speech | BotChannelName.DirectLineSpeechChannel |
DirectLineSpeechChannel |
| Microsoft Teams | BotChannelName.MsTeamsChannel |
MsTeamsChannel |
| Web Chat | BotChannelName.WebChatChannel |
WebChatChannel |
| Slack | BotChannelName.SlackChannel |
SlackChannel |
| `BotChannelN |
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Azure.ResourceManager.BotService (.NET)
Management plane SDK for provisioning and managing Azure Bot Service resources via Azure Resource Manager.
Installation
dotnet add package Azure.ResourceManager.BotService
dotnet add package Azure.Identity
Current Versions: Stable v1.1.1, Preview v1.1.0-beta.1
Environment Variables
AZURE_SUBSCRIPTION_ID=<your-subscription-id>
# For service principal auth (optional)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
Authentication
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.BotService;
// Authenticate using DefaultAzureCredential
var credential = new DefaultAzureCredential();
ArmClient armClient = new ArmClient(credential);
// Get subscription and resource group
SubscriptionResource subscription = await armClient.GetDefaultSubscriptionAsync();
ResourceGroupResource resourceGroup = await subscription.GetResourceGroups().GetAsync("myResourceGroup");
// Access bot collection
BotCollection botCollection = resourceGroup.GetBots();
Resource Hierarchy
ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── BotResource
├── BotChannelResource (DirectLine, Teams, Slack, etc.)
├── BotConnectionSettingResource (OAuth connections)
└── BotServicePrivateEndpointConnectionResource
Core Workflows
1. Create Bot Resource
using Azure.ResourceManager.BotService;
using Azure.ResourceManager.BotService.Models;
// Create bot data
var botData = new BotData(AzureLocation.WestUS2)
{
Kind = BotServiceKind.Azurebot,
Sku = new BotServiceSku(BotServiceSkuName.F0),
Properties = new BotProperties(
displayName: "MyBot",
endpoint: new Uri("https://mybot.azurewebsites.net/api/messages"),
msaAppId: "<your-msa-app-id>")
{
Description = "My Azure Bot",
MsaAppType = BotMsaAppType.MultiTenant
}
};
// Create or update the bot
ArmOperation<BotResource> operation = await botCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"myBotName",
botData);
BotResource bot = operation.Value;
Console.WriteLine($"Bot created: {bot.Data.Name}");
2. Configure DirectLine Channel
// Get the bot
BotResource bot = await resourceGroup.GetBots().GetAsync("myBotName");
// Get channel collection
BotChannelCollection channels = bot.GetBotChannels();
// Create DirectLine channel configuration
var channelData = new BotChannelData(AzureLocation.WestUS2)
{
Properties = new DirectLineChannel()
{
Properties = new DirectLineChannelProperties()
{
Sites =
{
new DirectLineSite("Default Site")
{
IsEnabled = true,
IsV1Enabled = false,
IsV3Enabled = true,
IsSecureSiteEnabled = true
}
}
}
}
};
// Create or update the channel
ArmOperation<BotChannelResource> channelOp = await channels.CreateOrUpdateAsync(
WaitUntil.Completed,
BotChannelName.DirectLineChannel,
channelData);
Console.WriteLine("DirectLine channel configured");
3. Configure Microsoft Teams Channel
var teamsChannelData = new BotChannelData(AzureLocation.WestUS2)
{
Properties = new MsTeamsChannel()
{
Properties = new MsTeamsChannelProperties()
{
IsEnabled = true,
EnableCalling = false
}
}
};
await channels.CreateOrUpdateAsync(
WaitUntil.Completed,
BotChannelName.MsTeamsChannel,
teamsChannelData);
4. Configure Web Chat Channel
var webChatChannelData = new BotChannelData(AzureLocation.WestUS2)
{
Properties = new WebChatChannel()
{
Properties = new WebChatChannelProperties()
{
Sites =
{
new WebChatSite("Default Site")
{
IsEnabled = true
}
}
}
}
};
await channels.CreateOrUpdateAsync(
WaitUntil.Completed,
BotChannelName.WebChatChannel,
webChatChannelData);
5. Get Bot and List Channels
// Get bot
BotResource bot = await botCollection.GetAsync("myBotName");
Console.WriteLine($"Bot: {bot.Data.Properties.DisplayName}");
Console.WriteLine($"Endpoint: {bot.Data.Properties.Endpoint}");
// List channels
await foreach (BotChannelResource channel in bot.GetBotChannels().GetAllAsync())
{
Console.WriteLine($"Channel: {channel.Data.Name}");
}
6. Regenerate DirectLine Keys
var regenerateRequest = new BotChannelRegenerateKeysContent(BotChannelName.DirectLineChannel)
{
SiteName = "Default Site"
};
BotChannelResource channelWithKeys = await bot.GetBotChannelWithRegenerateKeysAsync(regenerateRequest);
7. Update Bot
BotResource bot = await botCollection.GetAsync("myBotName");
// Update using patch
var updateData = new BotData(bot.Data.Location)
{
Properties = new BotProperties(
displayName: "Updated Bot Name",
endpoint: bot.Data.Properties.Endpoint,
msaAppId: bot.Data.Properties.MsaAppId)
{
Description = "Updated description"
}
};
await bot.UpdateAsync(updateData);
8. Delete Bot
BotResource bot = await botCollection.GetAsync("myBotName");
await bot.DeleteAsync(WaitUntil.Completed);
Supported Channel Types
| Channel | Constant | Class |
|---|---|---|
| Direct Line | BotChannelName.DirectLineChannel |
DirectLineChannel |
| Direct Line Speech | BotChannelName.DirectLineSpeechChannel |
DirectLineSpeechChannel |
| Microsoft Teams | BotChannelName.MsTeamsChannel |
MsTeamsChannel |
| Web Chat | BotChannelName.WebChatChannel |
WebChatChannel |
| Slack | BotChannelName.SlackChannel |
SlackChannel |
BotChannelName.FacebookChannel |
FacebookChannel |
|
BotChannelName.EmailChannel |
EmailChannel |
|
| Telegram | BotChannelName.TelegramChannel |
TelegramChannel |
| Telephony | BotChannelName.TelephonyChannel |
TelephonyChannel |
Key Types Reference
| Type | Purpose |
|---|---|
ArmClient |
Entry point for all ARM operations |
BotResource |
Represents an Azure Bot resource |
BotCollection |
Collection for bot CRUD |
BotData |
Bot resource definition |
BotProperties |
Bot configuration properties |
BotChannelResource |
Channel configuration |
BotChannelCollection |
Collection of channels |
BotChannelData |
Channel configuration data |
BotConnectionSettingResource |
OAuth connection settings |
BotServiceKind Values
| Value | Description |
|---|---|
BotServiceKind.Azurebot |
Azure Bot (recommended) |
BotServiceKind.Bot |
Legacy Bot Framework bot |
BotServiceKind.Designer |
Composer bot |
BotServiceKind.Function |
Function bot |
BotServiceKind.Sdk |
SDK bot |
BotServiceSkuName Values
| Value | Description |
|---|---|
BotServiceSkuName.F0 |
Free tier |
BotServiceSkuName.S1 |
Standard tier |
BotMsaAppType Values
| Value | Description |
|---|---|
BotMsaAppType.MultiTenant |
Multi-tenant app |
BotMsaAppType.SingleTenant |
Single-tenant app |
BotMsaAppType.UserAssignedMSI |
User-assigned managed identity |
Best Practices
- Always use
DefaultAzureCredential— supports multiple auth methods - Use
WaitUntil.Completedfor synchronous operations - Handle
RequestFailedExceptionfor API errors - Use async methods (
*Async) for all operations - Store MSA App credentials securely — use Key Vault for secrets
- Use managed identity (
BotMsaAppType.UserAssignedMSI) for production bots - Enable secure sites for DirectLine channels in production
Error Handling
using Azure;
try
{
var operation = await botCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
botName,
botData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
Console.WriteLine("Bot already exists");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}
Related SDKs
| SDK | Purpose | Install |
|---|---|---|
Azure.ResourceManager.BotService |
Bot management (this SDK) | dotnet add package Azure.ResourceManager.BotService |
Microsoft.Bot.Builder |
Bot Framework SDK | dotnet add package Microsoft.Bot.Builder |
Microsoft.Bot.Builder.Integration.AspNet.Core |
ASP.NET Core integration | dotnet add package Microsoft.Bot.Builder.Integration.AspNet.Core |
Reference Links
| Resource | URL |
|---|---|
| NuGet Package | https://www.nuget.org/packages/Azure.ResourceManager.BotService |
| API Reference | https://learn.microsoft.com/dotnet/api/azure.resourcemanager.botservice |
| GitHub Source | https://github.com/Azure/azure-sdk-for-net/tree/main/sdk/botservice/Azure.ResourceManager.BotService |
| Azure Bot Service Docs | https://learn.microsoft.com/azure/bot-service/ |
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.