Microsoft Bot Framework

Microsoft Bot Framework is a wrapper for the Microsoft Bot API by Microsoft. It uses Flask to recieve the post messages from Microsoft and Celery to complete Async tasks.

The goal was to create a really simple to use library to enable you to interface with the Microsoft bot framework.

Full Docs can be found here:

To run this app using the local simulator

Download and run the simulator from:

Install the library

pip install microsoftbotframework

Define a task

Create a file in the root directory called In the file define a task as follows. More information on the ReplyToActivity object and others can be found at

from microsoftbotframework import ReplyToActivity

def echo_response(message):
    if message["type"] == "message":

Create the main file

from microsoftbotframework import MsBot
from tasks import *

bot = MsBot()

if __name__ == '__main__':

Run your app


Connect to your bot

By default the app runs at http://localhost:5000/api/messages.

Enter this address in the Enter your endpoint URL header of the emulator.

Start chatting! If you followed the above instructions it should repeat back what you type in.

To run this app using the online bot framework

In order to interact with the Microsoft bot framework you need to have a internet facing https endpoint with a valid certificate. This guide will show how to use gunicorn and heroku to host the application but you can easily use any wsgi hosting option as the MsBot object extends Flask.

Create a Microsoft Chatbot

Go to Register a bot and generate a 'Microsoft App ID' and 'Microsoft App Secret'. Don't worry about the messaging endpoint as we will create that soon. Create a config.yaml file in the root of your project and place the following information:

    app_client_id: <Microsoft App ID>
    app_client_secret: <Microsoft App Secret>

Publish to Heroku

Create a file called requirements.txt and add the following.


Create a file called "Procfile" and add the following. We are going to use gunicorn as our web server. You can remove "--log-level INFO" or set it to a lower level for production.

web: gunicorn -b ''$PORT --log-level INFO main:bot

Create a file called runtime.txt and add the following.


If you haven't yet install git

sudo apt-get install git

Signup for a Heroku account here: and create a new app. Follow the instructions to Deploy using Heroku Git

Go back into the Microsoft MyBots tab and update the Messaging Endpoint to be the Domain found in the Heroku settings tab. Make sure you add "/api/messages" at the of the url.

Congratulations you should now be able to chat to your bot on Skype!