jpskill.com
💬 コミュニケーション コミュニティ 🟢 非エンジニアでもOK 👤 管理職・人事・カスタマー対応

💬 Azure Mgmt Botservice Dotnet

azure-mgmt-botservice-dotnet

Microsoft Azure サービス連携。メール・Slack等のやりとりをする人向け。

⏱ クレーム返信ドラフト 15分 → 2分

📺 まず動画で見る(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本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
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
🪟 Windows (PowerShell)
$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. 1. 下の青いボタンを押して azure-mgmt-botservice-dotnet.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → azure-mgmt-botservice-dotnet フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

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
Facebook `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
Facebook BotChannelName.FacebookChannel FacebookChannel
Email 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

  1. Always use DefaultAzureCredential — supports multiple auth methods
  2. Use WaitUntil.Completed for synchronous operations
  3. Handle RequestFailedException for API errors
  4. Use async methods (*Async) for all operations
  5. Store MSA App credentials securely — use Key Vault for secrets
  6. Use managed identity (BotMsaAppType.UserAssignedMSI) for production bots
  7. 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.