CSML (Conversational Standard Meta Language) is an open-source programming language dedicated to building chatbots.
It acts as a linguistic/syntactic abstraction layer, designed for humans who want to let other humans interact with any machine, in any setting. The syntax is designed to be learned in a matter of minutes, but also scales to any complexity of chatbot.
Each bot gives you a full access to the CSML framework - a set of specialized tools to make and customize your chatbots : code editor, chatbox, apps, functions and files library, analytics and channels.
Some of the Chatbot Templates available in CSML Studio
A flow is a CSML file which contains several steps to be followed during a conversation with a user. The first instructions have to be placed in the start step, then you can move from a step to the next one using
goto stepname, and finish the current conversation using
goto end. Each step contains instructions on how to handle the interactions within the step: what to say, what to remember, where to go...
- to display a message: text, questions, urls, components (image, video, audio, buttons…)
- to simulate behaviors, such as waiting time (Wait) or message composition (Typing)
Like a human, a chatbot is supposed to understand and react to messages sent by the user.
In a conversational logic, CSML allows the chatbot to wait for a user answer using the keyword
hold, and interpret the expected user input (called
event) to trigger an action.
Here is an example of a simple interaction where the bot is asking if the user likes guitar and waiting for two specific answers in order to trigger actions.
Memory is essential in the CSML logic. When two people are chatting, they constantly memorize and update information to be reused in future discussions. CSML provides two types of variables: local variables, with a very short life cycle, and persistent variables, called memories.
The memories are assigned as followed use the keyword
rememberand can be reused in every step or in a future conversation, while the local variables are executed within one step, assigned with the
You can output any variable into a string value with the double curly braces.