CSML updates
CSML updates

CSML v1.10.0




The new 1.10.0 release of CSML is packed with powerful features to make you even more productive when creating your chatbots.


The most important feature of this release is the new modules system. You can now create a module and import it across multiple bots! You can use any public module that we publish, or your own modules that you can open-source for others to use, or keep private for your own usage.

Modules makes it easier to write more concise code and reuse snippets across multiple projects. It also makes it easier to maintain code by letting you update your code in a single place instead of duplicating code across all your chatbots. It's perfect for logging or analytics libraries, generic utilities, etc.

We have created a sample repository containing a few useful modules that you can start using today in your chatbot.

CSML Studio lets you easily declare modules that you can then import in your chatbot very easily. Give it a try!


👉 read more here

Flow Constants

You can now define immutable values that will be available across the entire flow using the new const keyword.

This is especially useful for cases where you need to define common context or configuration for a flow that will apply in any step of that flow, regardless of any memory or user-defined scenario. const values are immutable: once defined, you can not change or reassign them!

const MY_VAR = 42

  say "What is the answer? {{MY_VAR}}!"

👉 read more here

Secure inputs

The new hold_secure behaves just like any regular hold, except any user input that follows it immediately will automatically be secure, meaning that it can not be saved in memory and can not be displayed.

You should refrain from using it to ask users for their password but it can be interesting to use as a way to share short-lived secrets or simply to prevent misuse of data that should simply not be stored in clear text in server logs or memory such as PII (Personal Indentifiable Information).

Additionally, CSML Studio provides a password input form that will automatically behave as a secure input method, using exactly the same mechanism (which is also available via the CSML Engine API):

  say Input(
    title="Tell me a secret!",
    description="I won't tell anyone...",


👉 read more here

Other improvements

Among other new features, bugfixes and improvements, I wanted to

Support for non-JSON content-types in HTTP responses

Previously, CSML was unable to parse the body of HTTP responses in other formats than JSON. You can now safely query any xml or simple text-based API with CSML and retrieve the response accordingly!

The .get_info() method when invoked on the response object also lets you access the metadatan including the full response headers.

{ } syntax for functions

You can now use the more common { ... } syntax to delimit function scope, in addition to the previous :-only syntax.

fn myFunction() {

new object, array and string methods

And many, many more small improvements and features. Make sure you check the release notes for the latest release!