azure-mgmt-botservice-py

Azure Bot Service Management SDK for Python

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "azure-mgmt-botservice-py" with this command: npx skills add claudedjale/skillset/claudedjale-skillset-azure-mgmt-botservice-py

Azure Bot Service Management SDK for Python

Manage Azure Bot Service resources including bots, channels, and connections.

Installation

pip install azure-mgmt-botservice pip install azure-identity

Environment Variables

AZURE_SUBSCRIPTION_ID=<your-subscription-id> AZURE_RESOURCE_GROUP=<your-resource-group>

Authentication

from azure.identity import DefaultAzureCredential from azure.mgmt.botservice import AzureBotService import os

credential = DefaultAzureCredential() client = AzureBotService( credential=credential, subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"] )

Create a Bot

from azure.mgmt.botservice import AzureBotService from azure.mgmt.botservice.models import Bot, BotProperties, Sku from azure.identity import DefaultAzureCredential import os

credential = DefaultAzureCredential() client = AzureBotService( credential=credential, subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"] )

resource_group = os.environ["AZURE_RESOURCE_GROUP"] bot_name = "my-chat-bot"

bot = client.bots.create( resource_group_name=resource_group, resource_name=bot_name, parameters=Bot( location="global", sku=Sku(name="F0"), # Free tier kind="azurebot", properties=BotProperties( display_name="My Chat Bot", description="A conversational AI bot", endpoint="https://my-bot-app.azurewebsites.net/api/messages", msa_app_id="<your-app-id>", msa_app_type="MultiTenant" ) ) )

print(f"Bot created: {bot.name}")

Get Bot Details

bot = client.bots.get( resource_group_name=resource_group, resource_name=bot_name )

print(f"Bot: {bot.properties.display_name}") print(f"Endpoint: {bot.properties.endpoint}") print(f"SKU: {bot.sku.name}")

List Bots in Resource Group

bots = client.bots.list_by_resource_group(resource_group_name=resource_group)

for bot in bots: print(f"Bot: {bot.name} - {bot.properties.display_name}")

List All Bots in Subscription

all_bots = client.bots.list()

for bot in all_bots: print(f"Bot: {bot.name} in {bot.id.split('/')[4]}")

Update Bot

bot = client.bots.update( resource_group_name=resource_group, resource_name=bot_name, properties=BotProperties( display_name="Updated Bot Name", description="Updated description" ) )

Delete Bot

client.bots.delete( resource_group_name=resource_group, resource_name=bot_name )

Configure Channels

Add Teams Channel

from azure.mgmt.botservice.models import ( BotChannel, MsTeamsChannel, MsTeamsChannelProperties )

channel = client.channels.create( resource_group_name=resource_group, resource_name=bot_name, channel_name="MsTeamsChannel", parameters=BotChannel( location="global", properties=MsTeamsChannel( properties=MsTeamsChannelProperties( is_enabled=True ) ) ) )

Add Direct Line Channel

from azure.mgmt.botservice.models import ( BotChannel, DirectLineChannel, DirectLineChannelProperties, DirectLineSite )

channel = client.channels.create( resource_group_name=resource_group, resource_name=bot_name, channel_name="DirectLineChannel", parameters=BotChannel( location="global", properties=DirectLineChannel( properties=DirectLineChannelProperties( sites=[ DirectLineSite( site_name="Default Site", is_enabled=True, is_v1_enabled=False, is_v3_enabled=True ) ] ) ) ) )

Add Web Chat Channel

from azure.mgmt.botservice.models import ( BotChannel, WebChatChannel, WebChatChannelProperties, WebChatSite )

channel = client.channels.create( resource_group_name=resource_group, resource_name=bot_name, channel_name="WebChatChannel", parameters=BotChannel( location="global", properties=WebChatChannel( properties=WebChatChannelProperties( sites=[ WebChatSite( site_name="Default Site", is_enabled=True ) ] ) ) ) )

Get Channel Details

channel = client.channels.get( resource_group_name=resource_group, resource_name=bot_name, channel_name="DirectLineChannel" )

List Channel Keys

keys = client.channels.list_with_keys( resource_group_name=resource_group, resource_name=bot_name, channel_name="DirectLineChannel" )

Access Direct Line keys

if hasattr(keys.properties, 'properties'): for site in keys.properties.properties.sites: print(f"Site: {site.site_name}") print(f"Key: {site.key}")

Bot Connections (OAuth)

Create Connection Setting

from azure.mgmt.botservice.models import ( ConnectionSetting, ConnectionSettingProperties )

connection = client.bot_connection.create( resource_group_name=resource_group, resource_name=bot_name, connection_name="graph-connection", parameters=ConnectionSetting( location="global", properties=ConnectionSettingProperties( client_id="<oauth-client-id>", client_secret="<oauth-client-secret>", scopes="User.Read", service_provider_id="<service-provider-id>" ) ) )

List Connections

connections = client.bot_connection.list_by_bot_service( resource_group_name=resource_group, resource_name=bot_name )

for conn in connections: print(f"Connection: {conn.name}")

Client Operations

Operation Method

client.bots

Bot CRUD operations

client.channels

Channel configuration

client.bot_connection

OAuth connection settings

client.direct_line

Direct Line channel operations

client.email

Email channel operations

client.operations

Available operations

client.host_settings

Host settings operations

SKU Options

SKU Description

F0

Free tier (limited messages)

S1

Standard tier (unlimited messages)

Channel Types

Channel Class Purpose

MsTeamsChannel

Microsoft Teams Teams integration

DirectLineChannel

Direct Line Custom client integration

WebChatChannel

Web Chat Embeddable web widget

SlackChannel

Slack Slack workspace integration

FacebookChannel

Facebook Messenger integration

EmailChannel

Email Email communication

Best Practices

  • Use DefaultAzureCredential for authentication

  • Start with F0 SKU for development, upgrade to S1 for production

  • Store MSA App ID/Secret securely — use Key Vault

  • Enable only needed channels — reduces attack surface

  • Rotate Direct Line keys periodically

  • Use managed identity when possible for bot connections

  • Configure proper CORS for Web Chat channel

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

github-issue-creator

No summary provided by upstream source.

Repository SourceNeeds Review
General

azure-observability

No summary provided by upstream source.

Repository SourceNeeds Review
General

azure-appconfiguration-java

No summary provided by upstream source.

Repository SourceNeeds Review
General

copilot-sdk

No summary provided by upstream source.

Repository SourceNeeds Review