config.yml, endpoints.yml, and domain.yml.
A minimal configuration for a CALM assistant looks like this:
config.yml
Assistant ID
Theassistant_id key should be a unique value and allows you to distinguish multiple
deployed assistants.
This id is added to each event’s metadata, together with the model id.
See event brokers for more information.
Note that if the config file does not include this required key or the placeholder default value
is not replaced, a random assistant name will be generated and added to the configuration
every time you run rasa train.
Recipe
Therecipe key only needs to be modified if you want to use a custom graph recipe.
The vast majority of projects should use the default value "default.v1".
Language
- The
languagekey sets the primary language your assistant supports. Use a two-letter ISO 639-1 code (e.g., “en” for English). additional_languageskey lists codes of other languages your assistant supports.
- Basic language codes: e.g., “en”, “de”, “it”.
- Locale-specific codes: e.g., “en-US”, “fr-CA”, “de-CH”.
- Custom language codes: e.g., “x-en-formal”.
BCP 47 StandardRasa adheres to the BCP 47 standard for language codes. This ensures compatibility with platforms such as Twilio Voice, Genesys Cloud, and Amazon Connect.
Pipeline
Thepipeline key lists the components which will be used to process and understand the messages
that end users send to your assistant.
In a CALM assistant, the output of your components pipeline is a list of commands.
The main component in your pipeline is the LLMCommandGenerator.
Here is what an example configuration looks like:
config.yml
endpoints.yml
Policies
Thepolicies key lists the dialogue policies your assistant will use
to progress the conversation.
config.yml
Silence Timeout Handling
Silence timeouts help your assistant handle situations where the user doesn’t respond. For now, this setting only works with voice-stream channels, such as:- Twilio Media Streams
- Browser Audio
- Genesys
- Jambonz Stream
- Audiocodes Stream
Global Silence Timeout
- Rasa Pro <= 3.13
- Rasa Pro >= 3.14
You can set a default silence timeout across your assistant by adding this to your This means the assistant will wait 7 seconds (or your configured value) for a user reply before treating it as silence and triggering fallback logic.
endpoints.yml:endpoints.yml
Local (Per-Step) Silence Timeout
You can override the global value for specific Collect steps:credentials.yml)
will be used.
This allows you to fine-tune the timing for specific questions. For example, you may want to:
- Wait longer on more complex or sensitive questions (e.g., “Can you describe your issue?”)
- Use shorter timeouts for quick prompts (e.g., yes/no questions)
Enabling/Disabling Silence Timeouts
If you want to disable silence detection so it never triggers during a conversation, you can set the timeout to a very high value. For example, to disable it globally:- Rasa Pro <= 3.13
- Rasa Pro >= 3.14
endpoints.yml
Disabling Silence Timeouts at step levelIf silence timeout is set at the step level, that value has precedence over the global or channel-specific setting.
In order to disable silence timeout for a specific step, set it to a very high value (e.g., 70000 seconds) in that step’s configuration.
Customizing the Assistant’s Response to Silence
When the silence timeout is reached, the assistant triggers thepattern_user_silence. You can customize how your assistant responds to silence by modifying this pattern.
👉 Learn more about patterns configuration
Minimum pacing between bot messages (voice streams)
On voice stream channels, Rasa can enforce a minimum gap between consecutive bot audio segments so back-to-back utterances do not sound rushed. When the next bot message is ready, the channel compares the time since the previous message finished playing against a configured minimum. If not enough time has passed, it streams silence for the remaining duration on the same audio path as speech (it does not block the server with a sleep), then plays the next message. This applies to the same class of streaming voice connectors as silence timeout handling.Regular utterances vs filler
Two types of minimum gaps are used:- Between ordinary consecutive bot messages: a shorter default gap (1 second).
- After a filler message: a longer default gap (2 seconds). Filler messages are short, streamed assistant audio played while longer operations are in progress, for example, brief assistant text sent alongside tool calls from ReAct agents when enabled. A longer pause follows these messages to provide clearer separation before the next substantive response.
These delays are fixed defaults in the voice streaming stack.