Making Your Own Chatbot


Intro & Overview
Putting Your Solution In Motion
Course Conclusion
Start course

Power Virtual Agents is part of the Microsoft Power Platform and is a useful tool for creating automated chatbots to help guide users on a path.

This course will teach you how to use and build your own chatbots. You will learn how to identify common components like topics, entities, and actions, as well as how to build chatbots that can be started with keywords.

Also, you will learn how to prepare your bots for use on websites, Teams, and other channels. This course will help you in preparing for Microsoft certification.

Learning Objectives

  • Describe the different uses for Power Virtual Agents
  • Create topics with questions, conditions, messages, and links
  • Find and use entities to structure your data
  • Test and deploy your bots
  • Keep tabs on the analytics of your agents to track usage and performance

Intended Audience

  • IT professionals who are interested in obtaining a Microsoft certification
  • Those who would like to help customers and teams find the right information quickly through an automated chatbot


There are no prerequisites for this course. The application to create Power Virtual Agents is free to try and anyone with a Microsoft license can use it.


In this lecture, we're going to create a chatbot. Follow along so that you can build your first chatbot with me. Up in the top right we're going to click on the icon of a robot. We choose new bot. Now we give our bot a name. Select our language. We tell it in which environment it is in. You may only see one environment because that's all you're licensed for. We then click create and it goes to work building it. You may get messages asking if you want to leave the page that you're on because you're creating another one. Make sure you've saved all of your changes to the last bot you were working on. You may also see a message telling you that it could take up to five minutes to get everything ready.

When done, we then click on topics so this way we can go in and either choose an existing topic or create a new topic. We're going to create a new topic. Our topic is going to be Jackets. This is going to be the topic that welcomes them in. So we need to create some trigger phrases. So I will add things like, find jackets, sports jackets, winter jackets, leather jackets, and some more phrases. These could all be phrases or words the customer may put in to activate our bot.

Now we're ready to get started authoring our path that the customer will take. So let's go to the authoring canvas. The first node that we are given is a message node. Now I could delete that and start off with any node that I want, but a message is a good one because we need to welcome our customer. I'm going to type in, "Welcome to our jacket department." The next thing I want to do is ask a question. So I'm going to use a question node. The question that I wanna ask is, "What type of jacket are you looking for?" Remember I can use options or entities here.

An option would be something like listing the types of jackets we have as choices. If I created a custom entity, I could do the same thing by asking them what type of jacket and the entity would bring back all the types that I had entered into that entity. But that doesn't make much sense right here because we're not going to use a type of jacket repeatedly. If I was asking the size, then an entity would make sense because size could be used on jackets, shirts, dresses, and so on.

I'm going to use the options to create multiple choices for the customer. I'm going to enter the first option as leather and then click on the add new option to create more options for the user. The next one I'll create is sports, then winter, then wind. As we scroll down, you'll notice that it has created a condition for each answer. This can get confusing so I'm going to rename the variable so that we know what's being used in this condition and later we can call it up in other parts of our topic.

To rename the variable you click on the little edit pencil next to the first instance of the word "var" up in our question node and put in the name you'd like. In this case I'm going to name it JacketType and I'm going to click the choice of bot, any topic can access, that way I can use it in lots of places. There isn't a save button you just click the X and you're done. Notice the variable has been renamed now to bot.JacketType. Everywhere that we want to dynamically put in the choice that this user chose we can use that variable.

Let's go down to our first condition where they chose leather. You'll notice in the condition that are our variable is in there and it's equal to leather. So what's the condition we want when this happens? Let's put in another message node telling them how great leather is. I'm going to put a message that says, "I'm sure you will enjoy the feel of the" and then add the dynamic variable of bot.JacketType, a space and then the word "jacket". We can then do something similar for each condition. Let's click on save to save our topic.

Once saved, we're gonna go back into our topics menu. We're going to create another new topic. This new topic will be called, Check Out. We are not going to give it any triggers because we're going to call this into our other topic. Go to the authoring canvas and this time since we want to start with a question instead of a message, we're going to delete the message node. We put in a question node and ask the question, "How would you like to pay for your" and then we're going to add the dynamic content for bot.JacketType, then make sure to add a space and then put jacket.

We're going to give the user two options. The first option will be credit card over the phone. And the second option will be credit card online. We're going to change the variable name so that we can call it the same thing everywhere. Let's call this one PayMethod.

In our first condition we're going to make it equal to credit card over the phone. We're going to create a question node and ask the question, "Are you over 18?" We're going to use a prebuilt entity of Boolean this will help us to ask them a yes or no question. Again, change variable. We then need to create a condition. This condition will include our variable from the Boolean which is equal to a false statement. So when the user says no it will go down this path, and the next thing we want to do is call an action from Power Automate.

Our restriction action has a text that says, "You need to be 18 or over to access." So I create a message that says, "I'm sorry" and then I put in the restriction variable. After that I'm going to send them to another topic that says, Goodbye. Let's go back to our other condition for the Boolean and you'll notice that we don't need to put anything in there, it is either a negative or a positive. So down this path is if a user says yes. That means they're over 18 and we're going to go ahead and give them a number to call.

We then are going to choose to end the conversation with a survey. This will ask the user if there's anything else that we could do for them and ask them to give us a rating. To finish things up we're going to go back up to our condition of the pay method when it's equal to credit card online. We're going to add a message node, we're going to put a message that tells them where they can go to finish their payment method that they've chosen and we're going to use dynamic content there. Then we also do the same thing here where we end the conversation with a survey. Make sure you save your topic.

Once saved go back into topics and open up your jacket welcome in the authoring canvas. We're going to go ahead and go down to the path where the user has chosen leather and we've ended with the message. Now we're going to send them to the other topic that we just created called, Check Out. There is nothing after that because check out takes care of ending the conversation. I will let you finish off the other branches of our topic. Make sure you save your work when you're done.

In the next lecture, I'll show you how to test your chatbot and how to publish it.

About the Author

Ron is an experienced professional with in-depth expertise in SharePoint, Power Automate, Power BI, and Microsoft 365. He enjoys involvement in corporate presentations, training, change management, communications, marketing, and facilitation.

Ron brings this experience together to design SharePoint solutions that meet his client’s business, training, and collaboration needs. His skillset includes: Program Management, Change Management, SharePoint Site Administration and Architecture, Project Management, Graphic Design, and Technology Infrastructure Expertise. Ron is an expert skier and speaks Japanese as a second language.