Anshu  Banga

Anshu Banga

1576956452

How to Build Microsoft Bot Framework with Python language

Creating Microsoft Bot Framework In Python. In this post, I am going to explain the step by step execution of how to create a Bot Framework application in Python language using Visual Studio.

Note

  • Python language support starts from Bot Framework SDK V4 and is in the preview stage.
  • Currently, the predefined template is not available for Visual Studio 2019. We are using Flask template to create the Bot Application**.**

This article focuses on how to write the “Hello World” application in Bot Framework using Python language. It has been divided into two sections. The first section focuses on the Project template changes and the next section focuses on the code changes.

  1. Project template changes
  2. Code file changes

Project template changes

Prerequisites

Visual Studio 2019 Preview (Version 16.4.0) and make sure Python development is installed.

This is image title

Create a Project

The project type: “Blank Flask Web Project”.

This is image title

Project Name

Enter the project name “HelloWorld” and create a project.

This is image title

The project is successfully created.

Create a virtual environment

Go to the Solution Explorer and open the “requirements.txt” file and add the below namespace:

botbuilder-core>=4.4.0b1 ,botbuilder-dialogs>=4.4.0b1 save and close the file.

This is image title

In the tab, view header click the “Create virtual environment” and create the environment

This is image title

Create a virtual environment,

This is image title

The virtual environment was created successfully.

This is image title

For conformation check the module name displayed in the solution explorer in the (“Env”) area.

This is image title

Our Project template changes are done. Next, I am going to change the code files

Code changes

Delete the default route function

Goto app.py file

Delete the hello() : function including app.route

@app.route('/')  
def hello():  
    """Renders a sample page."""  
    return "Hello World!"  

Port number update ( optional changes)

goto main function and change the port number

if __name__ == '__main__':  
    import os  
    HOST = os.environ.get('SERVER_HOST', 'localhost')  
    try:  
        PORT = int(os.environ.get('SERVER_PORT', '5555'))  
    except ValueError:  
        PORT = 5555  
    app.run(HOST, PORT)  

Delete the PORT = int(os.environ.get(‘SERVER_PORT’, ‘5555’)) line and hardcode the port value otherwise every time you run the application  anew port will be created, here I am using default bot framework port “PORT = 3978”

After changes the code looks like below:

if __name__ == '__main__':  
    import os  
    HOST = os.environ.get('SERVER_HOST', 'localhost')  
    try:  
        PORT = 3978  
    except ValueError:  
        PORT = 5555  
    app.run(HOST, PORT)  

Create on_turn function handling the IO operation.

Create a new Python class file (ex: file name is: “echobot.py”). Add the new class “EchoBot”,  this class adds the on_turn function. This function has two arguments

  1. Self, ref the current object
  2. “context” object, This object handles the activity details.

In this sample, we are reading the string which is sent by the user and sends back to the user the same string with the length of string.

from sys import exit  
  
class EchoBot:  
    async def on_turn(self, context):  
        if context.activity.type == "message" and context.activity.text:  
            strlen = len(context.activity.text)  
            sendInfo = "Hey you send text : " + context.activity.text + "  and  the lenght of the string is  " + str(strlen)  
            await context.send_activity(sendInfo)  

asyn/await concept

Go to the “app.py” and add “import asyncio”, this has supported the async/await concept and “import sys” provides the information about constants, functions, and methods.

import asyncio  
import sys  

Request and Response module

Add the request and response module in flask module.

from flask import Flask, request, Response  

Bot Framework module

Import the BotFrameworkAdapter, BotFrameworkAdapterSettings, TurnContext from botbuilder.core to handle the Bot related queries.

from botbuilder.core import (  
    BotFrameworkAdapter,  
    BotFrameworkAdapterSettings,     
    TurnContext,      
)  

Import the Activity from botbuilder.schema,

rom botbuilder.schema import Activity  

Add the EchoBot class in the app.py file to handle the activity type,

from echobot import*  

Object creation

Create the object for Echobot class and

bot = EchoBot()  
  
SETTINGS = BotFrameworkAdapterSettings("","")  
ADAPTER = BotFrameworkAdapter(SETTINGS)   

Create an object for event loop, when called from a coroutine or a callback, this function will always return the running event loop.

LOOP = asyncio.get_event_loop()  

Message handler function

This function is the heart of our application, and it handles all the requests and responses. Receiving the information from the request object as a JSON format and call the “await bot.on_turn(turn_context)” pass the turn_context as an argument.

In on_turn function we are checking the activity type. If its type is message, find the length of the string and send the information to the user using context.send_activity function.

@app.route("/api/messages", methods=["POST"])  
def messages():  
    if "application/json" in request.headers["Content-Type"]:  
        body = request.json  
    else:  
        return Response(status=415)  
  
    activity = Activity().deserialize(body)  
    auth_header = (  
        request.headers["Authorization"] if "Authorization" in request.headers else ""  
    )  
  
    async def aux_func(turn_context):  
        await bot.on_turn(turn_context)  
  
    try:  
        task = LOOP.create_task(  
            ADAPTER.process_activity(activity, auth_header, aux_func)  
        )  
        LOOP.run_until_complete(task)  
        return Response(status=201)  
    except Exception as exception:  
        raise exception  

That’s it – all the changes are done. Rebuild and run the application.

Testing Steps

  1. Open the bot emulator and connect to the URL (http://localhost:3978/api/messages).
  2. Once it is connected, send the message
  3. Bot response to the channel and the information display in the emulator.

Output

This is image title

Please find the source from here

Conclusion

I hope you can understand the concept of how to create a bot application using Python.

Thank for reading and Happy coding!!!

#Python #Bot #BotFramework #Visual Studio #python

What is GEEK

Buddha Community

How to Build Microsoft Bot Framework with Python language
Ray  Patel

Ray Patel

1619518440

top 30 Python Tips and Tricks for Beginners

Welcome to my Blog , In this article, you are going to learn the top 10 python tips and tricks.

1) swap two numbers.

2) Reversing a string in Python.

3) Create a single string from all the elements in list.

4) Chaining Of Comparison Operators.

5) Print The File Path Of Imported Modules.

6) Return Multiple Values From Functions.

7) Find The Most Frequent Value In A List.

8) Check The Memory Usage Of An Object.

#python #python hacks tricks #python learning tips #python programming tricks #python tips #python tips and tricks #python tips and tricks advanced #python tips and tricks for beginners #python tips tricks and techniques #python tutorial #tips and tricks in python #tips to learn python #top 30 python tips and tricks for beginners

Sival Alethea

Sival Alethea

1624410000

Create A Twitter Bot With Python

Create a Twitter bot with Python that tweets images or status updates at a set interval. The Python script also scrapes the web for data.

📺 The video in this post was made by freeCodeCamp.org
The origin of the article: https://www.youtube.com/watch?v=8u-zJVVVhT4&list=PLWKjhJtqVAbnqBxcdjVGgT3uVR10bzTEB&index=14
🔥 If you’re a beginner. I believe the article below will be useful to you ☞ What You Should Know Before Investing in Cryptocurrency - For Beginner
⭐ ⭐ ⭐The project is of interest to the community. Join to Get free ‘GEEK coin’ (GEEKCASH coin)!
☞ **-----CLICK HERE-----**⭐ ⭐ ⭐
Thanks for visiting and watching! Please don’t forget to leave a like, comment and share!

#python #a twitter bot #a twitter bot with python #bot #bot with python #create a twitter bot with python

Ray  Patel

Ray Patel

1619510796

Lambda, Map, Filter functions in python

Welcome to my Blog, In this article, we will learn python lambda function, Map function, and filter function.

Lambda function in python: Lambda is a one line anonymous function and lambda takes any number of arguments but can only have one expression and python lambda syntax is

Syntax: x = lambda arguments : expression

Now i will show you some python lambda function examples:

#python #anonymous function python #filter function in python #lambda #lambda python 3 #map python #python filter #python filter lambda #python lambda #python lambda examples #python map

Anshu  Banga

Anshu Banga

1576956452

How to Build Microsoft Bot Framework with Python language

Creating Microsoft Bot Framework In Python. In this post, I am going to explain the step by step execution of how to create a Bot Framework application in Python language using Visual Studio.

Note

  • Python language support starts from Bot Framework SDK V4 and is in the preview stage.
  • Currently, the predefined template is not available for Visual Studio 2019. We are using Flask template to create the Bot Application**.**

This article focuses on how to write the “Hello World” application in Bot Framework using Python language. It has been divided into two sections. The first section focuses on the Project template changes and the next section focuses on the code changes.

  1. Project template changes
  2. Code file changes

Project template changes

Prerequisites

Visual Studio 2019 Preview (Version 16.4.0) and make sure Python development is installed.

This is image title

Create a Project

The project type: “Blank Flask Web Project”.

This is image title

Project Name

Enter the project name “HelloWorld” and create a project.

This is image title

The project is successfully created.

Create a virtual environment

Go to the Solution Explorer and open the “requirements.txt” file and add the below namespace:

botbuilder-core>=4.4.0b1 ,botbuilder-dialogs>=4.4.0b1 save and close the file.

This is image title

In the tab, view header click the “Create virtual environment” and create the environment

This is image title

Create a virtual environment,

This is image title

The virtual environment was created successfully.

This is image title

For conformation check the module name displayed in the solution explorer in the (“Env”) area.

This is image title

Our Project template changes are done. Next, I am going to change the code files

Code changes

Delete the default route function

Goto app.py file

Delete the hello() : function including app.route

@app.route('/')  
def hello():  
    """Renders a sample page."""  
    return "Hello World!"  

Port number update ( optional changes)

goto main function and change the port number

if __name__ == '__main__':  
    import os  
    HOST = os.environ.get('SERVER_HOST', 'localhost')  
    try:  
        PORT = int(os.environ.get('SERVER_PORT', '5555'))  
    except ValueError:  
        PORT = 5555  
    app.run(HOST, PORT)  

Delete the PORT = int(os.environ.get(‘SERVER_PORT’, ‘5555’)) line and hardcode the port value otherwise every time you run the application  anew port will be created, here I am using default bot framework port “PORT = 3978”

After changes the code looks like below:

if __name__ == '__main__':  
    import os  
    HOST = os.environ.get('SERVER_HOST', 'localhost')  
    try:  
        PORT = 3978  
    except ValueError:  
        PORT = 5555  
    app.run(HOST, PORT)  

Create on_turn function handling the IO operation.

Create a new Python class file (ex: file name is: “echobot.py”). Add the new class “EchoBot”,  this class adds the on_turn function. This function has two arguments

  1. Self, ref the current object
  2. “context” object, This object handles the activity details.

In this sample, we are reading the string which is sent by the user and sends back to the user the same string with the length of string.

from sys import exit  
  
class EchoBot:  
    async def on_turn(self, context):  
        if context.activity.type == "message" and context.activity.text:  
            strlen = len(context.activity.text)  
            sendInfo = "Hey you send text : " + context.activity.text + "  and  the lenght of the string is  " + str(strlen)  
            await context.send_activity(sendInfo)  

asyn/await concept

Go to the “app.py” and add “import asyncio”, this has supported the async/await concept and “import sys” provides the information about constants, functions, and methods.

import asyncio  
import sys  

Request and Response module

Add the request and response module in flask module.

from flask import Flask, request, Response  

Bot Framework module

Import the BotFrameworkAdapter, BotFrameworkAdapterSettings, TurnContext from botbuilder.core to handle the Bot related queries.

from botbuilder.core import (  
    BotFrameworkAdapter,  
    BotFrameworkAdapterSettings,     
    TurnContext,      
)  

Import the Activity from botbuilder.schema,

rom botbuilder.schema import Activity  

Add the EchoBot class in the app.py file to handle the activity type,

from echobot import*  

Object creation

Create the object for Echobot class and

bot = EchoBot()  
  
SETTINGS = BotFrameworkAdapterSettings("","")  
ADAPTER = BotFrameworkAdapter(SETTINGS)   

Create an object for event loop, when called from a coroutine or a callback, this function will always return the running event loop.

LOOP = asyncio.get_event_loop()  

Message handler function

This function is the heart of our application, and it handles all the requests and responses. Receiving the information from the request object as a JSON format and call the “await bot.on_turn(turn_context)” pass the turn_context as an argument.

In on_turn function we are checking the activity type. If its type is message, find the length of the string and send the information to the user using context.send_activity function.

@app.route("/api/messages", methods=["POST"])  
def messages():  
    if "application/json" in request.headers["Content-Type"]:  
        body = request.json  
    else:  
        return Response(status=415)  
  
    activity = Activity().deserialize(body)  
    auth_header = (  
        request.headers["Authorization"] if "Authorization" in request.headers else ""  
    )  
  
    async def aux_func(turn_context):  
        await bot.on_turn(turn_context)  
  
    try:  
        task = LOOP.create_task(  
            ADAPTER.process_activity(activity, auth_header, aux_func)  
        )  
        LOOP.run_until_complete(task)  
        return Response(status=201)  
    except Exception as exception:  
        raise exception  

That’s it – all the changes are done. Rebuild and run the application.

Testing Steps

  1. Open the bot emulator and connect to the URL (http://localhost:3978/api/messages).
  2. Once it is connected, send the message
  3. Bot response to the channel and the information display in the emulator.

Output

This is image title

Please find the source from here

Conclusion

I hope you can understand the concept of how to create a bot application using Python.

Thank for reading and Happy coding!!!

#Python #Bot #BotFramework #Visual Studio #python

Art  Lind

Art Lind

1602968400

Python Tricks Every Developer Should Know

Python is awesome, it’s one of the easiest languages with simple and intuitive syntax but wait, have you ever thought that there might ways to write your python code simpler?

In this tutorial, you’re going to learn a variety of Python tricks that you can use to write your Python code in a more readable and efficient way like a pro.

Let’s get started

Swapping value in Python

Instead of creating a temporary variable to hold the value of the one while swapping, you can do this instead

>>> FirstName = "kalebu"
>>> LastName = "Jordan"
>>> FirstName, LastName = LastName, FirstName 
>>> print(FirstName, LastName)
('Jordan', 'kalebu')

#python #python-programming #python3 #python-tutorials #learn-python #python-tips #python-skills #python-development