Registry / devops / botbuilder-dialogs

botbuilder-dialogs

JSON →
library4.17.1pypypiunverified

Part of the Microsoft Bot Framework SDK for Python, providing dialog-based conversational logic including waterfall dialogs, prompts, and component dialogs. Current version 4.17.1, maintained by Microsoft with monthly releases.

pip install botbuilder-dialogs
INSTALL
IMPORT
SIG · BOTBUILDER-DIALOGS
B
botbuilder-dialogs
devopspythonv4.17.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

WaterfallDialog
from botbuilder.dialogs import WaterfallDialog
from botbuilder.dialogs import WaterfallDialog
ComponentDialog
from botbuilder.dialogs import ComponentDialog
DialogSet
from botbuilder.dialogs import DialogSet

Basic bot with a waterfall dialog using TextPrompt.

import os from botbuilder.core import ActivityHandler, TurnContext, MemoryStorage, ConversationState from botbuilder.dialogs import DialogSet, WaterfallDialog, DialogTurnStatus from botbuilder.dialogs.prompts import TextPrompt, PromptOptions class MyBot(ActivityHandler): def __init__(self): self.memory = MemoryStorage() self.conv_state = ConversationState(self.memory) self.dialog_state = self.conv_state.create_property('dialog_state') self.dialogs = DialogSet(self.dialog_state) self.dialogs.add(TextPrompt('text_prompt')) self.dialogs.add(WaterfallDialog('waterfall', [self.step1])) async def step1(self, step_context): return await step_context.prompt('text_prompt', PromptOptions(prompt=Activity(text='What is your name?'))) async def on_message_activity(self, turn_context: TurnContext): dc = await self.dialogs.create_context(turn_context) result = await dc.continue_dialog() if result.status == DialogTurnStatus.Empty: await dc.begin_dialog('waterfall')
Debug
Known issues
breakingIn v4.11, ComponentDialog no longer automatically includes its child dialogs' state; you must add them explicitly to the outer dialog set.
fix
When using ComponentDialog, ensure all child dialogs are added to the parent dialog set (e.g., self.add_dialog(child_dialog)).
affects: >=4.11
deprecatedPromptOptions.style is deprecated and ignored in v4.17. Use Activity properties directly for formatting.
fix
Instead of PromptOptions(style=ListStyle.hero_card), pass custom Activity to PromptOptions.prompt.
affects: 4.17+
gotchaDialogSet requires a ConversationState property. If you forget to create the property or pass None, you'll get a runtime error about missing state.
fix
Always initialize with: self.dialog_state = self.conv_state.create_property('dialog_state') and pass to DialogSet.
affects: all
gotchaWaterfallDialog step methods must be async. Synchronous steps will cause a TypeError when awaited.
fix
Define steps as 'async def step_name(self, step_context):'.
affects: all
deprecatedUse of 'await step_context.prompt(...)' without returning the result will lead to dialog not advancing. In v4.17 this still works but future versions may change behavior.
fix
Always 'return await step_context.prompt(...)' to return DialogTurnResult.
affects: 4.17+
Upgrade
Version history
4.17.1latest on PyPI · released Jan 5, 2026
Audit
Dependencies
botbuilder-corerequiredRequired for activity handling, turn context, and middleware
botbuilder-schemarequiredRequired for activity and channel data types
Agent activity
6 hits · last 30 days
node
6
Resources