Behind every bot created on Smartly.AI is a dialog flow.
A dialog flow is a sequence of states that will be followed by the bot while engaging with your users.

Dialog flows

The builder allows you to create advanced dialog flows using a graphical user interface.
Here is the main objects available for you to build your bots:

1)👉 Welcome state

2)👉 User says...

3)👉 Bot says...

4)👉 Bot shows...

4)👉 Bot does

We will go through each of these object in the following section.

1. Welcome State

This module “Welcome state” is used to begin a conversation.
It’s represented by a robot icon

In this module you can input what the bot should say when your app/chatbot is launched.

2. User says...

The User says object represents what the user can/may say in a certain context.
It’s represented by a user icon in a purple node.

The user says is composed of Intents which can be created in two ways:
i) Browsing intents library consisting of created intents by other users
ii) Creating your own intents

i. Browse Intents Library

Here you will see list of Intents created by you previously.
All you have to do is click the Add this button

ii. Creating your own intents

Start by defining an Intent Name and then add samples for your intents with the Add Item.. input field. If some part of your sample can be a variable concept (time, number, product name, ...), you will want to use what we call an Entities.

Good to know

For each intent, you can set confidence threshold.
You can see this threshold as a way to define your intents as very stricts (high treshold) or very flexible (low treshold) to the variations that the user may use to express the intent.
Finding the optimal treshold to an intent is an iterative task so we recommand you to start with the default value and adjust it later on.

3. Bot says...

The app answers contains what the bot should say in a certain context. The bot output is represented by a robot icon in a blue node.

In the app answers, you can add what you expect the chatbot/voicebot should say after the User Says is executed. You can define several response here

3a. Re-prompts message

Re-prompts message are contextual “error messages”. The goal here is to be more specific and helpful than the sadly common “Sorry I didn’t get that”.

4. Bot shows...

Rich messages allows you to get additional media and interactive elements to your bot without code.
They are pretty convenient because once used, you well get the very same experience on your website and Facebook Messenger controlled from a single graph!
In rich messages, we have six cards that can only be added after the app answers module.

_Bot shows..._ should always be linked to a classic _Bot says..._ object

Don't forget that else it won't work

Drag the Bot Displays object to the builder and double click on it.

When you double click, you will see a modal pop up just like the one below and
you can start adding a rich message response by clicking on any of the six buttons.

Lets click on the carousel card for demonstration purpose.
When clicked, a screen similar to the one below will pop up

This is how it will shows on our WebChat:

This is how it will shows on Messenger:

Good to know

Jpg, png and animated gifs are supported
We advise not to have more than 5 carousel
Image size is limited to 6Mb

- Buttons card

This module allows you to add a text card with buttons.
The buttons can be a URL, Phone Number and Text

Adding a button to your card

- Quick Replies

Quick replies helps to present a set of up to 11 buttons in-conversation that contain a title.

Good to know

You need to add a text before adding quick replies.

Adding a quick reply

When you click the "Add quick reply", It will display a screen similar to the one below,
where you can add the button title and the button text to be display when clicked.

You can also add Emoji

5. Bot does...

In order to provide you with a fully serverless solution, the solution comes with a
set of prebuilt functions. The first one available today is the NodeJS function.

This allows you to do any magic you want with your conversation app

_Bot does..._ always comes after a _Bot says..._

As shown below. The Node.js module should always be connected to a Bot Answer. If there is answer in Bot Answer, you can access it via Node.js and modify it, or you can simply overwrite it too with a dynamic answer you have generated with your code.

All about the Node.js

When you double click on Node.js, The below custom code editor will be displayed.

Importance of the Callback at the end of your code

Because your Node.js code is executed in a dedicated Docker, the only way the platform can know that your are done with executing your code is by being notified with the following call:
Don't forget to use this callback at the end of your processing or your bot maybe timed out and fail to answer your users!

callback(output); // 👈 Never Forget this callback 

Timeout limitation

Our system will allocate 90 seconds slot for your code to be executed, after that, your code will be stopped and a timeout error message will be sent to you.

You can change the editor’s theme to dark and also make the editor full screen.

What if I need IP restrictions?

Here is the IP mask used by the Node.js code included in your bots:
You can use it to whitelist your bot.

What can I do with the Node.js?

  • Create a dynamic answer
  • Access entities and contextual values
  • Send requests to your preferred APIs and databases
  • Control connected devices
  • Implement business logic or complex algorithms

What version of Node.js do I get?

Current version of Node.js you can use in the your bots is 10.1.0

Available Node.js modules

Because we don't want developers to reinvent the wheel, we whitelisted a couple of modules that can be easily imported and used within the Node.js code snippet of your bot.
Below is the full list of supported modules:


As a reminder, to use a module in Node.js, you should always add this line at the beginning of your code:

require ('The name of the Node.js module'); 

Need a specific package?

If you need a specific package for your app, send us a request at and our team will review it.


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.