New: Create Callbots with CSML Studio

You can now create Callbots with CSML Studio! Callbots are chatbots that can be reached by phone. These types of chatbots are extremely powerful for call centers and support centers, as they drastically reduce the number of tickets that require a human agent to be involved, and at the very least help triage incoming requests before they can be transferred to a different service.

Creating a Callbot on CSML Studio is extremely simple. All you need is a phone number from our partner Twilio and a simple CSML chatbot. Then follow the instructions on our documentation!


Introducing: Flow Templates

CSML Studio's goal is both to make it as easy as possible to deploy chatbots at any scale on any channel, but also to make it as easy as possible to learn how to create rich and powerful chatbots.

There has always been a way to easily import ready-to-use chatbots, either by selecting one of the templates at the bottom of the screen during on the "My Bots" page, or by simply providing the URL to a chatbot on github or uploading a zip file of a fully-functional chatbot.

CleanShot 2020-11-15 at 12.45.56@2x.png

We are now introducing a new feature that makes it even easier to add new flows to an existing bot or creating custom bots, by selecting flow templates at the time of flow or bot creation. These templates include for example a "ticketing" or a "livechat" template that provide a solid starting point and that you can modify to better suit your needs. All of the flow templates provide a large number of comments to help you understand how they work.

CleanShot 2020-11-15 at 12.47.16@2x.png

We are also providing some tutorial flows that will help you better understand how CSML works. If you are just starting out, you should definitely install these two flows on your first chatbot!

Let us know what you think, and if there are some flow templates that you would like us to cover!

Better error traces

We have just released improved error traces on build events. Now, if there is an error in your flow, the console will point to the exact place where the error is located:

CleanShot 2020-11-11 at 09.37.08@2x.png

This makes debugging your flows much easier!

New: easily manage your flow commands with AI Rules

You can now find and configure all your flow triggers in one single convenient place, the AI Rules section, directly accessible in the left sidebar of CSML Studio.

To configure an AI Rule, simply add words or sentences that should trigger your flow in the left column (one trigger per line) and select the target flow on the right. Then, save and build your bot, and voilà! Your bot can now be triggered with the new command.


You can add as many commands as you like for each flow, and as many flows as you like. It also works very well with preprocessing functions and NLP providers: for example, you can add the name of an intent as a flow command to trigger that flow!

Read more about this feature in the documentation:

New: one-click setup of Dialogflow integration

Using the 1-click setup for Dialogflow, it's now easier than ever to connect your CSML chatbot with any of your Dialogflow agents! No complex setup, no Google Cloud service account required: simply click on the "Google Sign-In" button and follow the wizard!

Of course, you can still import your own service account credentials if you prefer 🤗

To learn more about using Dialogflow on CSML Studio, you can also refer to our recent blog post on this exact topic!

Performance upgrade

The latest update of CSML Studio completes a series of drastic improvements in the performance of all components, thanks to lots of small and big changes in the architecture and distribution of the application.

Most notably:

  • initial loading time of the Studio divided by 3
  • initial loading time of the Webapp divided by 3 to 4 (depending on the browser)
  • initial response time of the CSML Engine reduced by up to 300ms
  • sending time reduced by 50 to 100ms per message sent by the CSML Engine

All these changes were performed gradually over the past few weeks. However, the next time you sign in to CSML Studio you should definitely feel a very sensible improvement in the general "snappiness" of the application and deployed chatbots!

New: native CSML functions

One of the biggest updates of CSML Engine v1.3 that was released last week is the support for native CSML Functions!

You can now write cleaner, more concise code and even CSML modules using the new functions syntax. For example, we wrote a bot to calculate Fibonacci numbers, containing a simple recursive function:

fn fibonacci(n):
  if (n < 2) return 1
  return fibonacci(n - 1) + fibonacci(n - 2)

Among the possibilities that native CSML functions provide, we would like to draw your attention to the new import keyword: functions can be created in one flow and imported in a different flow, and even renamed on the go! You can also import multiple functions at once, and if the name is unambiguous, you don't even need to say where to import the function from!

These examples are all valid CSML:

import myfunc
import myfunc from otherflow
import myfunc as mychangedfuncname from otherflow
import { myfunc1, myfunc2, myfunc3 as mycoolfunc } from otherflow

The full source code of Fibot is here, and you can read the documentation for CSML functions here.

New: chatbot dashboard

The next time you login to visit your chatbot, you will be greeted by a new screen, the "Dashboard". This Dashboard gives you a birds-eye view over how you are doing with your chatbot so far, and provides you with some hints on how you can improve your chatbot.

Here is what it looks like:


You will find 3 different panels: the Assistant, the Checklist and the Activity. Let's see what each panel does!

Assistant panel:


The Assistant, taking the form of a simple chatbot, will help you quickly identify the current status of your chatbot and give you hints into what you could improve to make an even better chatbot. There are 2 sections, corresponding to the 2 major phases of preparing a chatbot for production: development, and deployment.

The Development assistant will lead you to add more flows to your bot, remember more information about your end users and add more capabilities with CSML apps and custom functions.

The Deployment assistant will help you add your chatbot to a communication channel or manage your existing channels.

Checklist panel:


The checklist will help you quickly identify areas where you can improve your chatbot. It tells you what is missing to make your chatbot as complete as possible in the form of a simple to-do list of what most good chatbots should be doing.

Make sure every item of the checklist is ticked, and you will be on your path to a great chatbot!

Activity panel:


The activity panel, as the name indicates, gives you a high-level overview over your chatbot's activity in the past 3 months. If you are seeing a steady increase in usage, then you are probably doing things right. However, if your numbers are stalling or decreasing, perhaps you can take some action like sending a broadcast or adding new content?

We trust that you will find this view quite instructive in your path to create the greatest possible chatbot. As always, let us know if you would like us to add more data on this page! We can be reached easily on Slack or via email!

New event method: .match()

Until now, your CSML code might have looked something like this:

say Question(
  "What is your favorite car?",
    Button("Ferrari") as ferrari,
    Button("Lamborghini") as lambo,
    Button("Mercedes") as merc,
    Button("BMW") as bmw,
    Button("Lada") as lada

if (event match ferrari) remember car = "Ferrari"
else if (event match lambo) remember car = "Lamborghini"
else if (event match merc) remember car = "Mercedes"
else if (event match bmw) remember car = "BMW"
else if (event match lada) remember car = "Lada"
else say "Wrong input"

which is both repetitive and unelegant.

We just introduced a new event method, .match(), that takes any number of arguments and returns the first one that does match (or Null if there is none). This makes the same code very much more readable:

do matched = event.match(ferrari, lambo, merc, bmw, lada)
if (matched) remember car = matched.title
else say "Wrong input"

We now recommend that you use this new feature instead of the old "match" keyword, but of course the old keywords stays 😉

Added documentation about the Event

We have heard that it is sometimes unclear how event works in CSML, and we have also seen that many people don't use it to its full potential. Event is a very powerful but somewhat magical CSML object, and can help you with many things!

We just added a full documentation page to explain better the inner workings of the event object:

Hope this helps! 🤗