Skip to main content

Twilio Media Streams

Use this channel to connect your Rasa assistant to Twilio Media Streams for voice capabilities. Unlike the standard Twilio Voice connector, this channel handles speech-to-text (ASR) and text-to-speech (TTS) processing directly in Rasa.

Basic Rasa Configuration

Create or edit your credentials.yml and add the following channel configuration:

credentials.yml
twilio_media_streams:
server_url: "<your-domain>"
# ASR Configuration
asr:
name: "azure" # or "deepgram"
# Add ASR-specific configuration here

# TTS Configuration
tts:
name: "azure" # or "cartesia"
# Add TTS-specific configuration here

# Monitor user silence
monitor_silence: false

Twilio Media Streams channel configuration expects the following parameters:

  • server_url (required): The domain at which Rasa server is available. Do not include protocol (ws:// or wss://). For example, if your server is deployed on https://example.ngrok.app, server_url should be example.ngrok.app.

  • asr (required): Configuration for Automatic Speech Recognition. See Speech Integrations for a list of ASR engines for which Rasa provides built-in integration with.

  • tts (required): Configuration for Text-To-Speech. See Speech Integrations for a list of TTS engines for which Rasa provides built-in integration with.

  • monitor_silence (optional, default false): Boolean parameter that enables user silence monitoring. If enabled, it triggers the pattern "user silence" when the user has been silent for longer than a threshold time. The silence threshold is controlled by the slot silence_timeout.

You can run the assistant using the command rasa run. You'll need a URL accessible by Twilio for your Rasa assistant. For development, you can use tools like ngrok, Cloudflare Tunnel, or localhost.run.

You can also run it with a development inspector using rasa run --inspect. To see all available parameters for this command, use rasa run -h.

Bot URLs for development

Visit this section to learn how to generate the required bot URL when testing the channel on your local machine.

Configuring Twilio Webhook

Bot URLs for development

Visit this section to learn how to generate the required bot URL when testing the channel on your local machine.

Go to the Phone Numbers section of your Twilio account and select the phone number you want to connect to Rasa. Select the option "Webhook, TwiML Bin, Function, Studio Flow, Proxy Service" and set the URL of your Rasa Server as webhook. Depending on the hostname, the webhook URL would be

https://example.com/webhooks/twilio_media_streams/webhook

Your webhook endpoint must be served over HTTPS. Twilio Media Streams does not accept insecure HTTP URLs.

Usage

Receiving Audio

When a user speaks, Twilio streams the audio to Rasa where:

  1. The audio stream is collected and buffered
  2. The configured ASR service converts speech to text
  3. The text is processed by Rasa's NLU pipeline

Sending Responses

For bot responses:

  1. Rasa generates text responses
  2. The configured TTS service converts text to audio
  3. Audio is streamed back to Twilio

Call Events

Like other voice channels, the following events are supported:

EventIntentDescription
startsession_startTriggered when call connects
endsession_endTriggered when call disconnects
DTMF-Phone keypad presses (sent as text messages)