Start building your own chatbot now >

When you’re a beginner bot builder, learning about natural language understanding, conversation flows and messaging platforms can feel a bit overwhelming.

In this guide, I’m going to help you build your first bot on Recast.AI.

By the end of this tutorial, you will have a functional chatbot, and you will know how to:

  • Make your bot understand human language
  • Build a conversation flow
  • Deploy your bot to Facebook Messenger

With Recast.AI, you can easily design complex conversational flows fueled by a powerful artificial intelligence.

You’ll need an account to follow this tutorial, click here if you don’t already have one:


Let’s start with a simple bot:

Build bots with Recast.AI

What you can expect from this tutorial

We’ll need to:

  1. Understand greetings and goodbyes
  2. Understand that the user is asking for a joke, and send one picked randomly from a list.
  3. Understand at least two reactions: Laughs or grins, and react with a funny gif or deep apologies.
  4. Deploy our bot on Facebook Messenger.


  1. To begin, create an account on Recast.AI! It’s free.
  2. Once you’re logged in, it’s time to create your first bot. Click on the button “Start with a template”, or just on + NEW BOT in the header section.
    build bots with Recast.AI
  3. Choose “Create a complete chatbot”.
  4. You can choose one or many pre-defined skills for you bot. This will help you get started faster. Just select “Greetings” for now, but I encourage you to check the others later.
  5. Choose your name. “joke-bot” would be appropriate
  6. Add a description. “My awesome and funny joke bot” or something less cocky
  7. Set English as the default language.
  8. You can keep your bot public as there is no private info, but you can change this setting later.
build bots with Recast.AI

Creating your first bot on Recast.AI

You are now ready to build your bot!


Build chatbots with Recast.AI

There are 5 phases in your bot life, represented on our platform through the use of 5 tabs:

  1. Train – Teach your bot what it needs to understand
  2. Build – Create your conversational flow with our Bot Builder tool
  3. Code – Connect your bot with external APIs or a database
  4. Connect – Ship your bot to one or several messaging platforms
  5. Monitor – Train your bot to make it sharper, and get insights on its usage!

For today we’ll skip the “Code” part, because we won’t need any external information.If you want to connect your bot with some code, I encourage you to check out this tutorial.


This is the brain of your bot, where all its understanding is gathered, divided into intents.

An intent is a “box” of sentences that all carry the same meaning, even though they can be very different to one another. When a user sends some text to your bot, our algorithm compares it to the phrases in your intents. Then it checks if it’s close enough to one of them and decides what the intention of the message is.

For example:

  • Are you a bot?
  • You reply so fast, I’m sure you must be some kind of robot.
  • Am I speaking to a human or not?

are all different, but they all ask the same question that we can can sum up as: Are you a bot? Well, that would make a great intent! If your bot is able to recognize this question, you can prepare a smart reaction, like “I’m a robot and I’m proud of it “.


All bots should understand basic things such as ‘greetings’, ‘agree’, ‘disagree’, or when a user asks for help.

If you chose the pre-defined Skill “Greetings” when you setup your bot, you will already have two intents: goodbye and greetings.

As Recast.AI is collaborative, you do not have to recreate each intent every time! You can ‘fork’ an intent someone already created to clone it right into your bot. Since we need to understand that our user wants to be told a joke, let’s find if the community has already created this intent for us.

build bots with Recast.AI

Searching for a joke intent

Type “joke” in the input Search!

You can click on the intention names if you want to check their full content.The first result will work just fine for me.

Build bots on Recast.AI

The results of the search, the fork is just one click away!


If you want a custom intent, you can build it from scratch. Here, we want the bot to understand when someone laughs at the joke.

Click on + CREATE on the right of the search field, and choose a name for your intent:

build bots with Recast.AI

Creating a new intent – laughs

Repeat this process for intent that gathers negative reactions to your jokes:

Build bots with Recast.AI

Creating a new intent – lame

checkmarkStep 1/8 – Understand intents



Now that we have intents, we need to populate them with various expressions. An expression is the name of a sentence added to an intent.

A golden rule would be to add 20 expressions to an intent for a development bot, and 50 or more for a production bot.

Click on an intent and add sentences you want your bot to understand. Put yourself in the shoes of the people talking to your bot.What could they possibly ask? Enter a new expression by typing it into the field Add an expression. Here are some examples:


  • hahah that’s hilarious
  • ROFL you’re good!
  • That, my friend, was an amazing joke.
  • I haven’t laughed that much in a long time!


  • You have no sense of humour whatsoever.
  • That’s both terrible and offensive.
  • What the heck was that?
  • Try harder, that was a very bad joke.
Build the smartest chatbots with Recast.AI

Overview of the expressions in the lame intent

Tip: Click on the message “You have X expressions suggested to enrich your intent” to see examples of phrases you can add to your bot. A good way to speed up your training!

checkmarkStep 2/8 – Refine Intents with Expressions



Now that your bot is full of expressions, let’s test it with the console:

Click on the TEST bubble icon on the top right, and select the tab “Analyse text”. Type a sentence you have not trained your bot with: “Botty bot, can you tell me a joke please?”

Build, train, host and monitor chatbots with Recast.AI

Testing your bot on Recast.AI

You will see which intent was detected under “He’s referring to”. If the algorithm did not detect an intent, or detected an invalid intent, that means that you need to train your bot with more expressions.

Once you’re happy with your bot intent detection, it’s time to move to next phase: building your bot flow.

checkmarkStep 3/8 – Understand human language



Now that the brain of your bot is all filled up, click on the Build tab.

The Build tab is where you find Bot Builder. It helps you construct the conversation flow of your bot using Skills.


Each Skill represents one thing that your bot knows how to do, and they can interact with each other. Your skill can be a complicated one – such as managing payment by credit or simple – answering basic questions

When you create a new bot, forking skills you already made to the new one will keep making your bots more powerful. You can also fork skills created by other people on the platform, so you don’t have to reinvent the wheel!

If you chose the pre-defined skill “Greetings” during the creation of your bot, it will already be in your interface.

Build intelligent bots, the easy way

The skills overview

Click its name to check its details:

Build bots with a visual interfaces: set triggers, manage its memory and enjoy a word-class NLP

Details of a skill

A skill has four parts:

  • Readme: Where you explain the purpose of your skill.
  • Triggers: Where you define why this skill should be activated after a user message
  • Requirements: Describes what information this skill has to collect, and what questions need to be asked to fulfill the requirements.
  • Actions: What to do once the requirements are fulfilled.

If you navigate through the tabs, you’ll see that this skill is structured as follows:

  • It is triggered if the intention greetings or the intention goodbye are matched.
  • It has no requirements, because it does not need to collect additional information. That means that it will execute actions directly after a trigger.
  • It has two possible actions: If the intention matched is greetings, it sends a random welcoming message chosen from a list, and if the intention is goodbye, it does the same thing, but picks the message from a different list

It’s time to create our own Skill with the same structure.

checkmarkStep 4/8 – Understand Skills



Go back to the Build tab and click on + Add a new skill on the left.

You have three different types of skills: Business, Floating, and Fallback. On the one hand, Business and Floating have no structural differences. Yet differentiating the two types of skill helps when you have a lot of them. Fallback skills, on the other hand, trigger when no other skill has their Triggers fulfilled after a user message. Most of the time, you’ll have only one of this kind, where you can remind the user what your bot can do, and ask them to rephrase.

Our skill will be of Floating type. Give it the name you want, I chose tell-me-a-joke.

Build skills for your chatbot on Recast.AI

Creating a new floating skill

Go to the Triggers tab. We want to activate our skill if one of the three intentions we created are matched.

Triggers the skills you build the way you want: make a smart chatbot, your way

A skill’s triggers

Don’t forget to change the condition to OR, since it is an AND condition by default and we want to activate our skill when any of these intentions are matched.

We won’t need to do anything in the Requirements, because we don’t have anything to ask. But you can improve the bot by asking for some information there, like what kind of jokes they prefer, or how old they are if you want to add some adult jokes.

Head to the Actions tab and create your first message group.

Click on ADD CONDITION to trigger messages and add the condition:If @ask-joke is-present. The “@” stands for intent type. We’ll cover other types later.

Then choose the action type “SEND MESSAGE”, choose Text format and type the best joke you know:

Build context-aware bots with Recast.AI

Sending a message when certain triggers are met

Please don’t remind me that my jokes are not so good.

checkmarkStep 5/8 – Build your own Skill



Click on the little + over your message to add a new message to your random list, so that we don’t always send the same joke. If you click again on SEND MESSAGE below, you can send multiple messages at the same time.

Build chatbots that truly understand your users

Three different messages triggered on the same conditions

Let your creativity speak.

Nice! Once we’re good with our jokes, let’s cover the two other intents.

Click on ADD A NEW MESSAGE GROUP and set as condition:If @laughs is-present

I decided to send gifs in this case, so I clicked on SEND MESSAGE, and Image format.

Build bots that stand the test of time

You can, of course, send images and GIFs


Here are the urls of my awesome gifs if you want to use them: 1, 2 and 3.

Then, we repeat the process for our last intent:

Build bots the easy way with Bot Connector: one single messaging format for 10+ channels

As you can see, rich messages format are supported


checkmarkStep 6/8 – Build the conversation flow



Now, it’s time to let go the test console and deploy your bot to a public messaging platform.

Go to the Connect tab, choose the messaging platform you prefer and follow the instructions.

You won’t have anything else to do other than the initial configuration to deploy your bot to a new channel. For this reason, you should not hesitate to configure multiples to broaden your audience!

Beware that some platforms are not as powerful as others. For example, Telegram is very easy to configure but does not support GIF images, so you should adapt your bot accordingly.

If you don’t know where to start, Facebook Messenger is a very powerful platform with a large audience.

Build bots and deploy them to the main channels in a breeze with Recast.AI

With Bot Connector, adding a new channel is a matter of minutes – no maintenance required

Now, go on Messenger, Kik, or any other channel you chose and look for you bot, it’s there, it’s live!

checkmarkStep 7/8 – Connect your bot to a messaging channel



The Monitor tab will help you sharpen your bot intelligence over time.

It gathers all the messages your bot receives and shows what intent was matched.

Keep and eye on this tab and train your bot regularly:

  • Archive the message if it matches the right intent
  • Assign the correct intent if an invalid intent was matched or none at all
Build bots the easy way with Recast.AI. Thanks to our NLP and your monitoring, they get smarter everyday!

Overview of the monitor tab

Here, the last message sent to my bot didn’t match any intention. If similar messages keep coming over time, I will create a new intent for this case.

checkmarkStep 8/8 – Monitor your bot usage and iterate



You’ve already done a great job for today. Now it’s time to take a break, have fun watching people talk to your bot, and polish its identity.

When you’re ready to go forward, you can try the following:

The next time you make a bot, don’t forget to fork your joke Skill! Time after time, your bots will know more and more. Be iterative and reuse what you have already done.

Here are some resources to help you go further:

Hope you enjoyed this tutorial and feel ready to make the internet a bit more conversational! And remember you’re very welcome to contact us if you need help.

🤖 Happy bot building 🤖

Have an issue with your bot? Is something unclear in this tutorial? Feel free to comment or join our Slack to discuss it.

Also published on Medium.

Want to build your own conversational bot? Get started with Recast.AI !

  • Younus Shalaby

    So helpful, Thanks a lot

  • Tien Tai DOAN

    I think in the section BUILD, the condition for triggering tell-me-a-joke should be “If @ask-joke is-present” instead of “if @greetings is-present”, isn’t it?

    • Brice Berdah

      Indeed, the screenshot was accurate but we missed the typo, thanks.

  • trond

    How do I create entities? And how do I make them mandatory for an intent?

    • Brice Berdah

      You can create entities simply by tagging them in your expressions, let me show you how in a GIF: Entity_tagging_GIF

    • Anonymous

      I just wanted to put Language menu to the first page as a button after user started my bot in Telegram , if user chooses English it proceeds to English page or else. Can anyone help me to do this ?

  • Anonymous

    can any one give an example how we can use the requirements in the build ?

  • Anonymous

    how we can use the requirements in the build ?

  • Zeba

    how to get data from webhook and show in the bot reply.

  • Timmy Nguyen

    In step 2, I got error “Cannot make request” when try to analyse text. How to proceed further?

  • Solar

    Follow the link below to read the documentation for requirements

  • dhruv kumar

    Hello Sir


    I m here to sell you a domain which will surely add value to your area of great expertise. The value of the Domain is just $29999(negotiable) thought its not billion dollar deal it will be a remarkable investment. Buy it before someone else do. Get it now for 50% off

    Dhruv kumar

  • Anonymous

    I deployed the bot on facebook messenger but i couldn’t find it

  • Mario

    Hello Recast.AI team,
    I have had today a big pleasure to start learning about Recast.AI system to deploy my own bot. The great job of your team, congrats! And also this tutorial is exactly what should be – clear and exact.
    My question is – is this possible to use my own bot in Telegram in groups for the group’s members which ask the bot directly by @NAME_OF_BOT?
    Currently after adding a bot to Telegram – it works perfectly in the chat on the bot. But after adding the bot to the group, it cannot recognize content in chat. It seems to be logic, but maybe is there any “tricK” to add bot to a group to identify such above direct questions by using @NAME_OF_BOT there?

  • Anonymous

    Regarding my previous post – OK, I turned off the setting “groups privacy” for the bot in Telegram – and the bot is running in the group chat 🙂
    Is there another way to use the bot in Telegram groups?

  • Anonymous

    Once again and sorry for a mess of messages today.
    Finally I got the way for using Groups Privacy in Telegram together with a bot is made in Recast.AI. Simply I can use ForceReply method in Telegram, as descibed here
    Thanks Recast.AI team for the great job you are doing here!

  • comment

    Add your comment here…

  • data

    ‘ AND ‘1’=’0

  • data

    ‘ AND ‘1’=’1

  • data

    ” AND “1”=”1

  • data

    ‘ AND 1=’0/*

  • data

    ‘ AND 1=’1/*

  • data

    ‘ AND 1=0)/*

  • data

    ‘ AND 1=0–

  • data

    ‘ AND 1=1–

  • data

    ‘ AND 1=1)–

  • data

    ‘) AND 1=(‘0

  • data

    “) AND 1=(“0

  • data

    ‘ AND 1=0 LIMIT 1–

  • data

    ‘ AND 1=1 LIMIT 1–

  • data


  • data

    OR 1=1

  • data

    OR 1=0

  • data

    ‘ OR ‘1’=’0

  • data

    ” OR “1”=”1

  • data

    ” OR “1”=”0

  • data

    ‘) OR ‘1’=(‘1

  • data

    “) OR “1”=(“1

  • data

    “) OR “1”=(“0

  • data

    ‘ OR 1=0 #

  • data

    ‘ OR 1=0 —

  • data

    ‘ OR ‘1’=’1

  • data

    ‘) OR ‘1’=(‘0

  • data

    ‘ OR 1=1 #

  • data

    ‘ OR 1=1 —

  • data

    ‘) AND ‘1’ in (‘0

  • data

    ‘) AND ‘1’ in (‘1

  • data

    “) AND “1” in (“0

  • data

    ‘) OR ‘1’ in (‘1

  • data

    “) OR “1” in (“1

  • data

    1 DESC

  • data

    1 ASC

  • data

    and 1 in (select BENCHMARK(@REPETITION,MD5(CHAR(85))) ) —

  • data

    ‘, message=(SELECT TABLE_NAME FROM information_schema.`TABLES`)–

  • data

    ‘, message=(SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_NAME like’FILES’)–

  • data

    x7oy6pge: x7oy6pge

  • data


  • data


  • data


  • data


  • data

    |/bin/cat /etc/passwd

  • data

    |/bin/cat /etc/hosts|

  • data

    |/bin/cat /usr/bin/id

  • data


  • data


  • data

    echo foobar x7v6v5k0

  • data

    && echo foobar x7wu8nye

  • data

    | echo foobar x7xnyhxn

  • data

    netstat -na

  • data

    &&netstat -na

  • data

    |netstat -na

  • data

    |netstat -na|

  • data

    <netstat -na

  • data

    ping -h

  • data

    &&ping -h

  • data

    |ping -h

  • data

    |ping -h|

  • data

    ; free

  • data


  • data


  • data

    {{ 62951705 + 74179523 }}

  • data

  • data

  • data


  • data
  • data


  • data


  • data

    LIMIT a

  • data


  • data


  • data


  • data


  • data


  • data


  • data


  • data

  • data


  • Vickey Kumar Soni

    Very helpful 🙂 Cheers

This site uses Akismet to reduce spam. Learn how your comment data is processed.

This website uses cookies

Please confirm that you accept cookies to monitor the performance of our website