APPLIES TO: SDK v4
This article describes how to build your first bot with the Bot Framework SDK for C#, Java, JavaScript or Python, and how to test your bot with the Bot Framework Emulator.
Creating your first bot doesn't require an Azure subscription or an Azure AI Bot Service resource. This quickstart focuses on creating your first bot locally. If you'd like to learn how to create a bot in Azure, see Create an Azure Bot resource.
Note
To build agents with your choice of AI services, orchestration, and knowledge, consider using the Microsoft 365 Agents SDK. The Agents SDK has support for C#, JavaScript or Python. You can learn more about the Agents SDK at aka.ms/agents. If you're looking for a SaaS-based agent platform, consider Microsoft Copilot Studio. If you have an existing bot built with the Bot Framework SDK, you can update your bot to the Agents SDK. You can review the core changes and updates at Bot Framework SDK to Agents SDK migration guidance. Support tickets for the Bot Framework SDK will no longer be serviced as of December 31, 2025.
Prerequisites
C# templates
The current bot samples use .NET Core 3.1 templates.
To add the bot templates to Visual Studio, download and install the Bot Framework v4 SDK Templates for Visual Studio VSIX file.
Note
You can install the templates from within Visual Studio.
- In the menu, select Extensions then Manage Extensions.
- In the Manage Extensions dialog, search for and install Bot Framework v4 SDK templates for Visual Studio.
For information about deploying .NET bots to Azure, see how to Provision and publish a bot.
.NET Core Templates will help you to quickly build new conversational AI bots using Bot Framework v4.
As of May 2020, these templates and the code they generate require .NET Core 3.1 or later.
To install the Bot Framework templates:
Open a console window.
Download and install .NET Core SDK download version 3.1 or later.
You can use this command to determine which versions of the .NET Core command-line interface are installed.
dotnet --version
Install the three Bot Framework C# templates: the echo, core, and empty bot templates.
dotnet new -i Microsoft.Bot.Framework.CSharp.EchoBot
dotnet new -i Microsoft.Bot.Framework.CSharp.CoreBot
dotnet new -i Microsoft.Bot.Framework.CSharp.EmptyBot
Verify the templates have been installed correctly.
dotnet new --list
Note
The steps above install all three Bot Framework templates. You don't need to install all the templates and can install just the ones you'll use. This article makes use of the echo bot template.
Java templates
Use the Yeoman generator to quickly create a conversational AI bot using core AI capabilities in the Bot Framework v4. For more information, see yeoman.io.
The generator supports three different template options as shown below.
Template |
Description |
Echo Bot |
A good template if you want a little more than "Hello World!", but not much more. This template handles the very basics of sending messages to a bot, and having the bot process the messages by repeating them back to the user. This template produces a bot that simply "echoes" back to the user anything the user says to the bot. |
Empty Bot |
A good template if you're familiar with Bot Framework v4, and simply want a basic skeleton project. Also a good option if you want to take sample code from the documentation and paste it into a minimal bot in order to learn. |
Core Bot |
A good template if you want to create advanced bots, as it uses multi-turn dialogs and Azure AI LUIS to implement language understanding. This template creates a bot that can extract places and dates to book a flight. |
Install Yeoman
Assure that you have installed node.js version 12.10 or later.
Install latest npm.
npm install -g npm
Install Yeoman. Make sure to install globally.
npm install -g yo
Install generator-botbuilder-java. Make sure to install globally.
npm install -g generator-botbuilder-java
Verify that Yeoman and generator-botbuilder-java have been installed correctly.
yo botbuilder-java --help
JavaScript and TypeScript templates
To install Yeoman and the Yeoman generator for Bot Framework v4:
Open a terminal or elevated command prompt.
Switch to the directory for your JavaScript bots. Create it first if you don't already have one.
mkdir myJsBots
cd myJsBots
Make sure you have the latest versions of npm and Yeoman.
npm install -g npm
npm install -g yo
Install the Yeoman generator.
Yeoman is a tool for creating applications. For more information, see yeoman.io.
npm install -g generator-botbuilder
Note
The install of Windows build tools listed below is only required if you use Windows as your development operating system.
For some installations, the install step for restify is giving an error related to node-gyp
.
If this is the case you can try running this command with elevated permissions.
This call may also hang without exiting if Python is already installed on your system:
Only run this command if you're on Windows.
npm install -g windows-build-tools
Create and enable a virtual environment
A virtual environment is a combination of a specific Python interpreter and libraries that are different from your global settings. The virtual environment is specific to a project and is maintained in the project folder. A benefit to using a virtual environment is that as you develop a project over time, the virtual environment always reflects the project's exact dependencies. To learn more about virtual environments, see Creation of virtual environments.
Navigate to the directory where you want to create your bot. Then run the following commands for your preferred platform. After you activate your virtual environment, your command line/terminal should be prefaced with (venv)
. This lets you know that the virtual environment is active. You can deactivate your virtual environment at any time by typing: deactivate
.
macOS/Linux
python3 -m venv venv
source venv/bin/activate
Windows
python -m venv venv
venv\Scripts\activate.bat
Python templates
Install the necessary packages by running the following pip install
commands:
pip install botbuilder-core
pip install asyncio
pip install aiohttp
pip install cookiecutter==1.7.0
Important
If you're using a 32-bit version of Python, make sure you also run pip install cryptography==2.8
.
Create a bot
In Visual Studio, create a new bot project and use the Echo Bot (Bot Framework v4 - .NET Core 3.1) template. To see only bot templates, choose the AI Bots project type.
Make sure that .NET Core 3.1 or later is installed.
In Visual Studio Code, open a new terminal window.
Go to the directory in which you want to create your bot project.
Create a new echo bot project using the following command. Replace <your-bot-name>
with the name to use for your bot project.
dotnet new echobot -n <your-bot-name>
Open a new terminal window.
Go to the directory in which you want to create your bot project.
Create a new echo bot project using the following command. Replace <your-bot-name>
with the name to use for your bot project.
dotnet new echobot -n <your-bot-name>
Thanks to the template, your project contains all the necessary code to create the bot in this quickstart. You don't need any more code to test your bot.
Run the following command to create an echo bot from templates. The command uses default options for its parameters.
yo botbuilder-java -T "echo"
Yeoman prompts you for some information with which to create your bot. For this tutorial, use the default values.
? What's the name of your bot? (echo)
? What's the fully qualified package name of your bot? (com.mycompany.echo)
? Which template would you like to start with? (Use arrow keys) Select "Echo Bot"
? Looking good. Shall I go ahead and create your new bot? (Y/n) Enter "y"
The generator supports many command-line options you can use to change the generator's defaults or to pre-seed a prompt. The options are case-sensitive.
Command-line option |
Description |
--help, -h |
List help text for all supported command-line options |
--botName, -N |
The name given to the bot project |
--packageName, -P |
The Java package name to use for the bot |
--template, -T |
The template used to generate the project. Options are echo , empty , core . For more information about the different templates, see the GitHub repository for your language, C#, JavaScript, Python, or Java. |
--noprompt |
The generator won't prompt for confirmation before creating a new bot. Any requirement options not passed on the command line will use a reasonable default value. This option is intended to enable automated bot generation for testing purposes. |
Thanks to the template, your project contains all the code that's necessary to create the bot in this quickstart. You don't need any other code to test your bot.
Use the generator to create an echo bot.
yo botbuilder
Yeoman prompts you for some information with which to create your bot. For this tutorial, use the default values.
? What's the name of your bot? my-chat-bot
? What will your bot do? Demonstrate the core capabilities of the Microsoft Bot Framework
? What programming language do you want to use? JavaScript
? Which template would you like to start with? Echo Bot - https://aka.ms/bot-template-echo
? Looking good. Shall I go ahead and create your new bot? Yes
Thanks to the template, your project contains all the code that's necessary to create the bot in this quickstart. You don't need any other code to test your bot.
From your working directory, run the following command to download the echo bot template and its dependencies:
cookiecutter https://github.com/microsoft/BotBuilder-Samples/releases/download/Templates/echo.zip
You'll be prompted to give your bot a name and description. Enter the following values:
- bot_name: echo_bot
- bot_description: A bot that echoes back user response.
Start your bot
In Visual Studio:
- Open your bot project.
- Run the project without debugging.
- Visual Studio builds the application, deploys it to localhost, and launches the web browser to display the application's
default.htm
page.
At this point, your bot is running locally on port 3978.
In Visual Studio Code:
Open your bot project folder.
If you're prompted to select a project, select the one for the bot you created.
From the menu, select Run, and then Run Without Debugging.
- If prompted to select an environment, select .Net Core.
- If this command updated your launch settings, save the changes and rerun the command.
The run command builds the application, deploys it to localhost, and launches the web browser to display the application's default.htm
page.
At this point, your bot is running locally on port 3978.
From a command prompt or terminal:
Change directories to the project folder for your bot.
Use dotnet run
to start the bot.
dotnet run
This command builds the application and deploys it to localhost.
The application's default web page won't display, but at this point, your bot is running locally on port 3978.
From a terminal, navigate to the directory where you saved your bot, then execute the commands listed below.
Build the Maven project and packages it into a .jar file (archive).
mvn package
Run the bot locally. Replace the archive-name with the actual name from the previous command.
java -jar .\target\<archive-name>.jar
You're now ready to start the Emulator.
In a terminal or command prompt change directories to the one created for your bot, and start it with npm start
.
cd my-chat-bot
npm start
At this point, your bot is running locally on port 3978.
From the command line/terminal, change directories to echo_bot
.
cd echo_bot
Install the dependencies for the echo bot template.
pip install -r requirements.txt
After the dependencies are installed, run the following command to start your bot:
python app.py
You'll know your bot is ready to test when you see the last line shown in the screenshot below:
Copy the http address in the last line. You'll need it when you use the Emulator to interact with your bot.
Start the Emulator and connect your bot
Start the Bot Framework Emulator.
Select Open Bot on the Emulator's Welcome tab.
Enter your bot's URL, which is your local host and port, with /api/messages
added to the path. The address is usually: http://localhost:3978/api/messages
.
Then select Connect.
Send a message to your bot, and the bot will respond back.
Next steps
- For information about how to debug using Visual Studio or Visual Studio Code and the Bot Framework Emulator, see Debug a bot.
- For information about devtunnel, see Tunneling (devtunnel).