Course Preview: Dialogflow ES for Non-Programmers
Total video duration: 5:34:44
Thumbnail | Excerpt |
---|---|
Why Choose Dialogflow | |
![]() Duration: 0:02:44 |
Why Dialogflow(Autogenerated transcript) [00:00:00] Alright, so I’m going to talk about why you should choose Dialogflow in this lesson. So this will be an overview and the rest of the course will, the rest of the lessons will explain the specific points that I’m making in this overview. Now the first thing is that you might have already seen that there is a spectrum when it comes to choosing bot frameworks. On the one hand you have the no code bot frameworks which are very easy but not very powerful. |
![]() Duration: 0:04:05 |
No Code(Autogenerated transcript) [00:00:00] So when we are looking at bot frameworks, the one end of the spectrum is the so-called no code tools. And a good example of such a tool is ChatFuell. And as you might know, ChatFuell will allow you to build Facebook Messenger bots by just drag and drop of blocks. And you can more or less design the entire bot visually. Now these are bots which are based primarily on conditional logic. And ChatFuell does have some basic keyword matching. |
![]() Duration: 0:04:54 |
Only Code(Autogenerated transcript) [00:00:00] At the other end of the spectrum, we have these bot frameworks which I refer to as only code bot frameworks. And a good example of that is the Microsoft Bot Framework. It’s called LUIS and it stands for Language Understanding Something System, something like that. So the issue with LUIS is that it doesn’t have a visual designer for constructing dialogues. Now this is true as of this recording which is happening in May 2019. |
![]() Duration: 0:05:05 |
Low Code(Autogenerated transcript) [00:00:00] Alright, so we saw that on one end of the spectrum you had the no code tools and then on the other end of the spectrum you had the only code tools. Now somewhere in the middle you will have the low code tools also for creating chatbots. Now the first definition of low code tool as you might imagine is one which requires as little code as possible to create as powerful a bot as possible. So yes that is you know that sort of understood but in addition I think that to have a good low code tool I will say that there are three more attributes that I would look for. |
![]() Duration: 0:07:26 |
More Code(Autogenerated transcript) [00:00:00] So, let’s talk about more code bot. Now, I don’t want to call it a more code framework because I think that Dialogflow is actually a low code framework and it is possible for people to turn it into a more code framework, but it’s not necessary. You can just by making sure that you follow certain ideas, you can avoid turning your bot into a more code type of bot. So, the first example, which is a very good example is slot filling. |
![]() Duration: 0:05:30 |
Tips for Non-programmers(Autogenerated transcript) [00:00:00] Alright, so I’m going to summarize by giving some tips which are specifically meant for people who don’t have a background in programming. The first tip is I suggest that you follow a sequence while learning Dialogflow. And I actually talk about the sequence on my website. You can go to my site and you can go to this URL. I’ll also leave a link with the video itself. And that’s a course, it’s a free course called How to Learn Dialogflow. |
Intro to Dialogflow ES for Non Programmers | |
![]() Duration: 0:01:12 |
Why I updated this tutorial for 2021(Autogenerated transcript) [00:00:00] I’m preparing this video as a tutorial for getting started with Dialogflow ES and this is updated for 2021 and the main reason that I am updating it is because the one that I have on my website right now is fairly, it’s not very new, it’s been more than a year since I recorded it and I just wanted to update this and also I think that there are some things which I can explain a little better and a little easier. |
![]() Duration: 0:03:36 |
Intents Demo(Autogenerated transcript) [00:00:00] You have to start with the understanding of intents. So the first thing we are going to cover is what are Dialogflow intents. So what I’ll do is I’ll download this file and you can see that it downloaded a zip file to my desktop. Then what I’ll do is I’m here in my Dialogflow console and you can see that I have this agent called step-by-step tutorial. It just has the default intents which are created when you first create the agent. |
![]() Duration: 0:06:45 |
Entities Demo(Autogenerated transcript) [00:00:00] Let’s talk about entities. Now before I go there, I just want to point out something. You see that in the chatbot we have right now, there are actually a total of 29 intents and if you ignore the default intents which are created when you first start, that leaves us with 27. So it’s basically three attributes multiplied by nine planets and that gives us 27 different intents, right? But you also notice that it’s all very repetitive, right? |
![]() Duration: 0:06:44 |
Contexts Demo(Autogenerated transcript) [00:00:00] to be. Now the next thing we have to learn is the concept of context. Now context are very interesting because they allow you to do two different things. The first thing that they allow you to do is they allow you to sort of pass information from one step of the conversation to the next and the other thing they allow you to do is in fact they allow you to guide the conversation along the path that you prefer because you can use context to restrict if a specific intent can be you know used in the at any given point in the conversation. |
![]() Duration: 0:03:09 |
A quick word on Integrations(Autogenerated transcript) [00:00:00] And one last thing that I want to mention in this tutorial is the concept of integration. So what are Dialogflow integrations? Notice that when you go to this tab, it mentions all these integrations which are available in Dialogflow. So this is something which you have to understand, which is that in and of itself, Dialogflow is just a chatbot framework. It provides you all the software to do what they call as natural language understanding or NLU. |
Dissecting Intent Mapping in Dialogflow | |
![]() Duration: 0:03:34 |
Candidate list(Autogenerated transcript) [00:00:00] As we try to reason about how Dialogflow’s intent mapping works, the first concept that you need to understand is the candidate list amongst the intents. So what is the candidate list? At any given point in the conversation, Dialogflow can choose only a subset of the intents that you have defined. Now it can be the entire list, but if you do have some contexts which are currently active, then this subset will be based on those active contexts. |
![]() Duration: 0:05:50 |
Scoring the user’s message(Autogenerated transcript) [00:00:00] In this video, we will talk about the user says score. Now what does the user say score? What I have here is an example chatbot. This is basically an FAQ chatbot for Dialogflow. You can ask questions about Dialogflow to this bot and it will give you some relevant links to tutorials and search. And I have actually deployed this bot on Twitter. You can go and take a look at my website if you are interested in learning more about it. |
![]() Duration: 0:05:41 |
Stemming(Autogenerated transcript) [00:00:00] In this video, we will look at stemming. So, stemming is a concept from natural language processing, NLP, which will help you make sense of how Dialogflow does its intent mapping. So what is the stem of a word? The stem of a word is also called the root of the word and I think it’s best explained using an example. If you consider the words securing and secure, you would say that both have the same stem, that is the letters sec ur and Dialogflow looks at word stems and that’s how it tries to do its intent mapping. |
![]() Duration: 0:05:36 |
Stopwords(Autogenerated transcript) [00:00:00] In this video, we will talk about stop words and how they affect intent mapping in Dialogflow. So first of all, what are stop words? Stop words are very common words which are usually appearing in just about every sentence that you write. Words like a, the, my and words like that, they are you know very common and it’s very hard to write sentences which don’t have even a single stop word. So stop words don’t add much useful information when Dialogflow is trying to do its intent mapping. |
![]() Duration: 0:04:50 |
ML Threshold(Autogenerated transcript) [00:00:00] In this video, we are going to look at the role of the ML threshold parameter that you set in your agent. So in the previous video, I had shown you this intent I created called WordPress, which had just a single user says phrase, which was secure WordPress site. Now I had already shown you an example of what happens if the user were to type the exact phrase. Let’s go ahead and do that. Now you can see that it matched it to the WordPress intent, and you can also see that the score is one, as you might have expected. |
![]() Duration: 0:05:16 |
Term Reinforcement(Autogenerated transcript) [00:00:00] Another interesting concept in Dialogflow intent mapping is the idea of term reinforcement. Now I don’t have a good way to… I’m not sure if what I’m using is like the official term, but I’ll show you how it works in action and I think you’ll be able to understand what is going on. So we are back at this WordPress intent I created for a previous video and you can see that I have this secure WordPress site phrase. |
![]() Duration: 0:04:39 |
Summary Part 1(Autogenerated transcript) [00:00:00] And the last tip I have is to use some regression testing. Now you can use the REST API exposed by Dialogflow to create these regression testing scripts. I hope you are familiar with regression testing, but if you are not, what you are effectively trying to do is you have to run a set of messages through the API calls. You will be using the slash query endpoint and you will be checking to see if the same set of phrases trigger the same set of intents over time. |
![]() Duration: 0:04:50 |
Summary Part 2(Autogenerated transcript) [00:00:00] So, based on the stuff we have learnt till now, this video will be a summary of all the ideas that we can use to improve the intent mapping in our Dialogflow agent. So, as I start this video, I want you to think about this image. So, this is an example of a linear classifier. You can just go and find this article on Wikipedia. If you notice, you have the set of black dots and then you also have a set of empty dots which are not filled in and our goal is to find a way to separate them. |
Conversation Design Considerations | |
![]() Duration: 0:09:58 |
Challenges of using slot filling feature(Autogenerated transcript) [00:00:00] In this video, we will be looking at the challenges of slot filling. Now, slot filling as a feature has some benefits. So it allows the user to conversationally ask for stuff and it makes the conversation sound more natural. And if you can, implement the slot filling by yourself, but it involves quite a bit of work. So the built-in slot filling has some benefits. But there are also some challenges that you need to be aware of before you use slot filling, especially if it is a complex use case. |
![]() Duration: 0:07:55 |
Choosing the lifespan of a context(Autogenerated transcript) [00:00:00] In this video, I’m going to give you some tips on choosing the context lifespan. So what is the lifespan? Now if you refer the pair of request and response as a term and if you can look at the chatbot on the right side, you can see that the user says hi and the bot comes back with good day and think of it as a single term and that is what is represented in your intent, right? The context lifespan is the number of turns that the context will be active. |
![]() Duration: 0:02:29 |
Session Variables Part 1(Autogenerated transcript) [00:00:00] So in this video, we are going to talk about session variables. So the question here is, how can we store user input so that it lasts through an entire session? Let’s say that you receive the first name of the user as the first step in your conversation. So how can you refer to the user’s first name back until the end of the conversation? If there is a limitation that you can’t set the context lifespan to be more than one, which is what I usually recommend. |
![]() Duration: 0:07:59 |
Session Variables Part 2(Autogenerated transcript) [00:00:00] So let’s take a look at an example of how to use this session variables idea. So what I have, I already declared the intents here in my agent so that I don’t have to type it out in the video. I have the standard Default Fallback intent and if you notice in my Default Welcome intent, so you see that I have created this session vars context and have given it a lifespan of 100. I also added a context called awaiting first name and for that I used the standard context lifespan. |
![]() Duration: 0:04:25 |
When NOT to use follow up intents(Autogenerated transcript) [00:00:00] So in this video I am going to talk about when not to use follow-up intents and Dialogflow. I also have an article about this on my website so you can go and check it out. I will leave a link to this article in the resources in the same section as this video. But here is the reason why it is not possible to use follow-up intents in certain situations. So the image that you are looking at right now is the flow chart for what is called the florist chatbot. |
![]() Duration: 0:05:39 |
When to use the @sys.any wildcard entity(Autogenerated transcript) [00:00:00] Okay, so this video will be a quick tip on why you should not use the wildcard entity everywhere. So if you didn’t know about the wildcard entity, it’s the atsys.any system entity and it helps you capture unexpected input. If the user types in something which you cannot capture with the built-in system entities, you can use this wildcard entity and what the wildcard entity does is it doesn’t do any pattern recognition or anything, it just gets everything that the user typed and sends it over to the next step based on whatever you want to do in the next step. |
Dialogflow Blackholes | |
![]() Duration: 0:01:34 |
What are blackholes?(Autogenerated transcript) [00:00:00] So as we start, you might be wondering why is this course called Dialogflow Black Holes. Now the first version of the course was actually based on some feedback that I got from a reader. And the reader actually mentioned in an email that there are a lot of blackholes in Dialogflow where you don’t understand why something is working in one place and it’s not working in another place and sort of asked me to do a list of blackholes that people fall into and help get out of them. |
![]() Duration: 0:01:50 |
Context Lifespan(Autogenerated transcript) [00:00:00] And the first blackhole that I have identified is using the default context lifespan when you are adding an output context into an intent. Now notice that when you add an output context to an intent in Dialogflow, by default Dialogflow just sets the context lifespan to be the number five. And what I recommend people do is that they immediately change it and use a context lifespan of one. Now the big advantage of using the context lifespan of one is that it tends to minimize the candidate intents in your Dialogflow agent and it makes sure that you don’t have these conflicting intents which are just proliferating as your agent conversation proceeds. |
![]() Duration: 0:04:20 |
Slot filling(Autogenerated transcript) [00:00:00] The second blackhole that I would like to discuss is the feature called slot filling. Now in Dialogflow, you will notice that you can set some parameters as required parameters. And the way the required parameters feature works is that if Dialogflow is not able to get a value for that required parameter, it will just keep re-promoting the user over and over until the user either provides a satisfactory value or they type some magic word like stop or cancel or something and it will exit this loop. |
![]() Duration: 0:03:09 |
Followup Intents(Autogenerated transcript) [00:00:00] All right, so the third item on this list is follow-up intents. Now I’ll just point out that I am not completely opposed to the use of follow-up intents, although I am generally speaking, I’m quite annoyed by the way the follow-up intents create auto-generated context names. And if you change the context names, then you will actually lose the hierarchy and lose the benefit of using the follow-up intents. But generally speaking, the problem with follow-up intents is that these context lifespans, which it uses by default, it uses a lifespan of two. |
![]() Duration: 0:04:37 |
Wildcard Entity(Autogenerated transcript) [00:00:00] The fourth blackhole is the use of the wildcard entity without really understanding its behavior. So if you are not aware of this or clear about this, the wildcard entity is the at-cis.any system entity which is already in Dialogflow and its special feature is that it can match any phrase, it can match any set of words and that’s the reason that people use the wildcard entity. But what I’ve seen is that whenever people find it hard to get specific entity matching in their agent, they immediately resort to using the wildcard entity and then they try and extract the actual value in their webhook. |
![]() Duration: 0:03:27 |
User utterances(Autogenerated transcript) [00:00:00] So the fifth blackhole that I would like to talk about is something that people do without a lot of thought, at least that’s what I feel. So when you are doing training inside your Dialogflow web application and you notice that a specific user utterance has not been mapped to the correct intent. So what you do is that you just take it and match it to the right intent from within the Dialogflow, the training tab itself and then you just approve it |
![]() Duration: 0:03:34 |
ML Threshold(Autogenerated transcript) [00:00:00] The next blackhole that I would like to talk about is people changing the value for the ML threshold because everything is going to the Default Fallback intent. Now the ML threshold or the machine learning threshold is a value, is a decimal from between zero to one and the way the ML threshold works is that if the Dialogflow, it computes detection match score for the user utterance for each intent in your agent and of course it’s only for the candidate intents. |
![]() Duration: 0:04:36 |
Flowchart(Autogenerated transcript) [00:00:00] So the seventh blackhole is actually a very straightforward one and this is where you don’t use flow charts or some kind of mind mapping tool to design your chatbot conversation. Now one of the things that I’ll mention is that this is only valid for multi-turn conversation bots. That is if you are just building an FAQ bot and especially if it’s a one and done chatbot. That is you ask a question and you get a response and the user just moves on to the next question which is not even related to the first question. |
![]() Duration: 0:05:31 |
Nouns(Autogenerated transcript) [00:00:00] People first start learning about Dialogflow entities. At some point they are going to encounter some suggestion which says that you can think of entities as nouns, that is nouns can become entities in your agent. Now just by hearing that advice sometimes I’ve seen people, they go and turn all their nouns into Dialogflow entities and that’s actually a really bad idea. So first of all the blackhole just to be clear is when you create entities for every single noun in your agent and the problem with this approach is that there are some cases where using the value is actually required just for you to construct the conversation flow properly. |
![]() Duration: 0:05:27 |
Webhooks(Autogenerated transcript) [00:00:00] Another blackhole that I’ve noticed is when people call a webhook on every single intent in their agent. Now I just want to make it clear that there are certain kind of bots where there is no logic and you can’t, like the bot will do absolutely nothing unless it calls a webhook. The entire business logic is contained in the webhook. So I’m not talking about those kind of bots. But there are also a lot of bots where you don’t need to do that. |
![]() Duration: 0:05:33 |
NLU Errors(Autogenerated transcript) [00:00:00] So the next blackhole that I’m going to talk about is writing code to handle NLU errors. Now NLU here means natural language understanding. And of course the reason that you are using Dialogflow is that it provides you with this NLU. It helps you do this natural language understanding and then you can take its output, the intent mapping and then use it for building whatever you’re trying to build. So what do I mean by writing code to handle NLU errors? |
Dichotomous Bot: Building a Yes/No Decision Tree Bot | |
![]() Duration: 0:01:41 |
Yes/No Decision Tree Bot Part 1(Autogenerated transcript) [00:00:00] Okay, so the first type of chatbot that we are going to build and that we are going to create a flow chart for is the dichotomous key chatbot. And what is a dichotomous key? It’s basically a flow chart which allows you to specify yes or no answers to some questions. And based on that, you will be able to make decisions about classifications for animals and trees and plants and flowers and things like that. And the dichotomous key is called like that because there are two choices at each step and you have to just answer yes or no. |
![]() Duration: 0:06:00 |
Yes/No Decision Tree Bot Part 2(Autogenerated transcript) [00:00:00] Alright, so let’s take a look at how we will create the flowchart for this dichotomous key bot that I just explained. So we are going to go into Mindomo and I’m going to be using Mindomo for this entire series. As I mentioned in my articles, I prefer either Mindomo or Xmind as the tools you can use for creating Dialogflow charts. And I also have an article on my site which explains my reasoning behind why I chose these two products and you can go and take a look at it. |
![]() Duration: 0:05:49 |
Yes/No Decision Tree Bot Part 3(Autogenerated transcript) [00:00:00] Alright, so let’s continue with building out the flow chart for the dichotomous key board. Now one small change I made from the previous figure that you saw was I added this title because I think that it would be more appropriate to put the name of the board as the center node in the map and then I have all the other stuff under that. So if you have followed my material about moving the conversation to the next intent you will know that you will have to create an input context on the intent which is going to be the second one and then you have to create an output context with the same name in the intent which is sort of like the first in that sequence. |
![]() Duration: 0:03:31 |
Yes/No Decision Tree Bot Part 4(Autogenerated transcript) [00:00:00] Okay, so you can see that I have added these contexts, the input context for all the, all the intents in this flowchart for now. So the next thing I’m going to do is I’m going to add names for these intents. So what I do for that is I just take it at the first line, I just add something like welcomeIntent and what I’ll do after that, I’ll just make it bold so that it is, it’s clear that it’s the welcomeIntent. |
![]() Duration: 0:05:05 |
Yes/No Decision Tree Bot Part 5(Autogenerated transcript) [00:00:00] Alright, so now that we have completed the flowchart specification, the next question that you would ask is, okay, what do I do with this and how can I translate it into an actual Dialogflow agent? Now, the best part about using the convention that I have described here is that, especially if it’s a fairly simple bot, you can quite literally copy paste from this flowchart you have here and you will have a working Dialogflow agent. |
![]() Duration: 0:03:38 |
Yes/No Decision Tree Bot Part 6(Autogenerated transcript) [00:00:00] Alright, so now what I have in this agent is I have copied all the information from this flow chart and added it into this agent. So what I’m going to do now is just going to give you a quick demo of how everything works. So the user starts with hello as usual and if the user says yes, then it’s going to say it is a mammal and if the user says no and it’s going to ask has it have feathers and if the user says yes, it’s going to come back with it is a bird. |
Quiz Bot | |
![]() Duration: 0:07:10 |
Quiz Bot Part 1(Autogenerated transcript) [00:00:00] Alright, so the second type of chatbot that we are going to look at is a quizbot. And this is a bot which asks the users a set of questions, it’s like a quiz and provides multiple choice responses as possible answers. And then based on the user selection, it is going to provide them with a score at the end of the quiz. So in this case, the bot has a few interesting properties. And you will notice it as I design the flowchart, the way that the bot works and as well as like how you would represent it in a flowchart. |
![]() Duration: 0:05:33 |
Quiz Bot Part 2(Autogenerated transcript) [00:00:00] So, what I suggest everybody does is you label this context with a number like you know I mean it’s you can label it with whatever number you want you can just go for one and now here I want you to use the number one but very important is that you change the shape to be a circle and you can see that it looks like a connector you have in one of those Lissier diagrams. Now, this is what it means. So, when this intent fires we are going to set an output context with the number one and where is number one it’s over here which is this context called await underscore answer underscore two. |
![]() Duration: 0:08:49 |
Quiz Bot Part 3(Autogenerated transcript) [00:00:00] Okay, so let’s continue with the quiz bot and a few things I’ve done The first is that I have actually in addition to make the making the name of the intent bold I’ve also changed the color to red so that it’s more prominent and it’s easier to read the name of the intent and I’ve also filled out the await answer 3 and the corresponding Follow-up intense after that when I say follow-up I just mean that I follow up with them in the in this flow chart They are not actually going to be follow-up in terms of the Dialogflow definition okay, and the other thing is that when the Conversation ends you can see that the bot is going to provide the user with a score Based on how well they have done in the quiz so it could be like they have been asked three questions So their score could be something like two out of three or maybe sometimes if they get everything wrong It could be even zero out of three. |
![]() Duration: 0:04:23 |
Quiz Bot Part 4(Autogenerated transcript) [00:00:00] Alright, so I have filled out the other intents in the quizbot. So let me just show you what I have till now. So in the intent called q2.correct answer, you’ll notice that you have the await answer 2 as the input context, await answer 3 as the output context, the correct answer is ML threshold. And also notice that I have created a parameter called answer2 and set its value to 1. And then the text response is going to be correct |
Survey Bot | |
![]() Duration: 0:01:57 |
Survey Bot Part 1(Autogenerated transcript) [00:00:00] Alright, so the next type of chatbot that we’re going to look at is a survey or questionnaire chatbot. That is, it’s a bot which is going to ask the user a set of open-ended questions and these are just questions where the user can write whatever response that they want and it’s not going to be, the user’s answer isn’t going to fit into some specific data type like a date or a city name or something. So it’s just going to be freeform text input. |
![]() Duration: 0:04:19 |
Survey Bot Part 2(Autogenerated transcript) [00:00:00] Alright, so let’s take a look at how we will design the flow chart for the testimonial bot. So the user is going to start as always by using the phrase hi or hello and then we are going to take the question and add it into the flow chart over here like that. And the next question is going to be what did you find as a result of buying this course. Now before that the user has to provide an answer. So what we have here is we are going to be actually using the system entity to represent the user, the system entity called the wildcard system entity to represent the user providing free form input. |
![]() Duration: 0:01:07 |
Survey Bot Part 3(Autogenerated transcript) [00:00:00] Alright, so now I have completed the flow chart for this testimonial slash survey bot. And what you see here is that the user is going to start by using the word hello or hi and then the bot is going to ask the first question and then we are going to await obstacle as the context and then it’s going to get the answer from the user and then ask the next question what did you find as a result of buying this course. |
![]() Duration: 0:05:06 |
Survey Bot Part 4(Autogenerated transcript) [00:00:00] Alright, so now we are inside of Dialogflow and what I’m going to do is start by creating the welcome intent. And once again the user might say either hi or they might say hello. And the bot is just going to ask them the first question which is what was the obstacle. So let’s just paste it in there and of course we need an output context for this and that’s going to be await underscore obstacle. And make sure that we have a lifespan of just one. |
![]() Duration: 0:03:22 |
Survey Bot Part 5(Autogenerated transcript) [00:00:00] Okay, so what I noticed is that there were a couple of mistakes in the previous flowchart. So I just gone ahead and fixed them. I realized that I had used the same phrase, user provides result inside of this annotation, the entity annotation that is in the previous flowchart. Now I have fixed it to make sure that whatever is written here is specific to that intent. And I’ve also added the intent name and the bold font and the color and all that. |
![]() Duration: 0:04:40 |
Survey Bot Part 6(Autogenerated transcript) [00:00:00] Alright, so in the last video I pointed out that we were having an issue where all the answers provided by the user were not actually being collected properly inside the session bars context. And you can actually see what is going on if you take a look at the annotation of the parameters inside these intents. For example, the first thing is the user provides the result and what we did was we just typed in something and then we annotated the whole thing with sys.any and as soon as we did that notice that Dialogflow has annotated it and also it has assigned it a parameter name. |
![]() Duration: 0:02:54 |
Survey Bot Part 7(Autogenerated transcript) [00:00:00] Alright, I wanted to revisit this survey slash testimonial board just a little bit to clarify something and that is if you remember I showed you the list of parameter values which were collected by the session wars context and I want you to notice that while I have renamed the parameter names for most of the intents, I just left the first one as it was which is it was still called any and it collected the value obstacle and the others have been renamed to any hyphen result, any hyphen specific feature and so on and that’s because it was the first in that list. |
RSVP Bot | |
![]() Duration: 0:02:11 |
RSVP Bot Part 1(Autogenerated transcript) [00:00:00] Alright, so now what we are going to do is use all the stuff we have learned to build an RSVP slash event planning bot and the bot behavior is going to be described as follows. First it’s going to ask will you be attending the event and the user can say either yes or no and if they say no it’s just going to say explain why and end the conversation. If they say yes it’s going to ask the next few questions. The first one is how did you hear about this event. |
![]() Duration: 0:04:59 |
RSVP Bot Part 2(Autogenerated transcript) [00:00:00] Alright, so now let’s see how we will create the flow chart for this RSVP bot. And as always, the user is just going to start with the hello message. And then the bot is going to ask, are you planning to attend the event? And the user could say yes. And then the bot is going to ask them some questions. On the other hand, the user could say no. And the bot might say, please explain why or something to that effect. |
![]() Duration: 0:07:43 |
RSVP Bot Part 3(Autogenerated transcript) [00:00:00] Alright, now what happens if the user says just the word yes? So then the bot has to actually follow up with the question like what is your restriction? And notice that the output context for this particular intent has to effectively get the same input as this intent we have over here. So in other words, whatever is the set as the output context after this intent fires has to allow the user to provide an input over here. |
![]() Duration: 0:05:13 |
RSVP Bot Part 4(Autogenerated transcript) [00:00:00] So the next thing the bot could ask is what is your email address if the user provides email as the notification method and what happens here is that it’s just going to await email address and Then the user might say something like example at gmail.com and This would be a type email And then once again the bot is going to say thank you for the RSVP so let’s just finish out this Formatting and that should be that so we now have these different choices handled and one work one more thing that we haven’t Completed is where it is asking are there any questions you would like to be addressed at this event [00:01:00] So again, this this is a case where the user might say I want to learn about something so and so |
![]() Duration: 0:05:30 |
RSVP Bot Part 5(Autogenerated transcript) [00:00:00] Alright, so in this video we are going to take a look at how to convert this flowchart we have for the RSVP bot into an actual Dialogflow agent. Now I have a few things that I have added to the flowchart that we last saw. The first thing is that I hadn’t added this additional intent here where the bot collects the reason when the user says that they are not attending the event and the other thing is that I have added names to all the intents in this flowchart right now. |
![]() Duration: 0:05:43 |
RSVP Bot Part 6(Autogenerated transcript) [00:00:00] Okay, so as you’re copying the information from your flow chart to the Dialog flow console, I just want to give you a tip which might help speed up the process. But I’ll add that this is still, you know, you still have to do the work and it’s not going to be like any automation or something like that. So you still have to pay attention to what you’re doing, but it’s just going to make your life slightly easier. |
![]() Duration: 0:03:26 |
RSVP Bot Part 7(Autogenerated transcript) [00:00:00] Alright, so I have copied over all the intent information from the flow chart into the Dialogflow agent over here and I just wanted to show you a couple of things more with the way I have created it. So the first thing is as always in the welcome intent I have added the session bars. I didn’t mention that the last time and you have to have a large lifespan so that you can collect all the values and the second thing that I want to mention is a sort of a little hack that you can use and you will find it quite useful to as you collect information which has choices like no, yes choices and in this case like notification method is email or phone or text whenever the user is providing a choice which causes the flow of your agent to branch off into multiple different directions. |
![]() Duration: 0:05:02 |
RSVP Bot Part 8(Autogenerated transcript) [00:00:00] Alright, so now we are ready to do a demo of the flow of this bot. So we’ll start by just saying hello. And for the question, are you planning to attend the event? I’m going to say yes. And it’s going to ask, how did you hear about this event? Let me just say from a friend. And remember that whatever I type in is just going to get accepted. And then do you have any dietary restrictions? I’m going to say yes. |
Webhooks 101 for Non Programmers | |
![]() Duration: 0:12:08 |
Webhooks 101(Autogenerated transcript) [00:00:00] Alright, so this is intended to be webhooks 101 tutorial which is also sort of directed at people who are not programmers. So the thing is you have to first go through this Dialogflow ESBeginner tutorial and this is actually whatever I have in this tutorial is pretty much completely intended for non-programmers and you have to go through all these steps. First you have to understand intents and then you have to understand entities |
![]() Duration: 0:06:06 |
Code Walkthrough(Autogenerated transcript) [00:00:00] Alright, so now let’s go over the actual code. I expect that you are already quite familiar with the Python programming language if you want to go through this video. Okay, so what’s happening here is this is a Flask app and you can see that the default route is just going to return hello world and that’s what the replit actually does when you run this URL it’s going to just return hello world and then we have this post method which is going to have the URL slash webhook and you might remember that that’s the actual URL that we used over here. |
![]() Duration: 0:04:13 |
Why I don’t recommend using Google Sheets as your database(Autogenerated transcript) [00:00:00] Alright, so let’s say that you want to connect your Dialogflow chatbot to a database. Okay, that is when I say database, what I really mean is some kind of way to add and delete and update data. And it’s the actual software that you use does not have to be an what we call as a database in computer science. So you can use for example, Google Sheets, maybe that’s like the first thing that you think about when you’re trying to create a chatbot, like you might want to use Google Sheets because Google Sheets is free and you know that you can add data into it, you can just type stuff into it, it’s a spreadsheet. |
![]() Duration: 0:08:33 |
The best no code database for non-programmers(Autogenerated transcript) [00:00:00] All right, so I told you why you shouldn’t use Google Sheets as the back end for your Dialogflow chatbot. And the question which comes up next is that, well, you do need a back end. So what is the thing that I would suggest? Okay. So my recommendation would be Airtable. I’ve gone through this, like many articles on my site, I explain why I prefer Airtable. You can go and take a look at my site, just search for the word Airtable and see what comes up. |
![]() Duration: 0:10:40 |
Zoho One: an out-of-the-box option(Autogenerated transcript) [00:00:00] Alright, so there is one more database that I would like to recommend for your Dialogflow chatbot. Now, this is a very unique recommendation, I think, and also a very unique company. So the software that I’m talking about is something called Zoho Creator. And I will just add a small condition for when it makes sense. So Zoho is a SaaS company, they provide a lot of software, and my guess is that you’re at least familiar with that name. |
![]() Duration: 0:04:44 |
The best programming language for Dialogflow ES bots(Autogenerated transcript) [00:00:00] Alright, so in this video I’m going to give you my opinion on which programming language I think is ideal for people who are developing Dialogflow chatbots. Now I do understand that this is a pretty subjective sort of opinion and also I’ll mention that maybe there are some situations where you’re already constrained by some language you’re using in your company or organization and also there are some situations where you don’t really have much of an option. |
About this website BotFlo1 was created by Aravind Mohanoor as a website which provided training and tools for non-programmers who were2 building Dialogflow chatbots. This website has now expanded into other topics in Natural Language Processing, including the recent Large Language Models (GPT etc.) with a special focus on helping non-programmers identify and use the right tool for their specific NLP task. For example, when not to use GPT 1 BotFlo was previously called MiningBusinessData. That is why you see that name in many videos 2 And still are building Dialogflow chatbots. Dialogflow ES first evolved into Dialogflow CX, and Dialogflow CX itself evolved to add Generative AI features in mid-2023