Version: 3.x

Twilio

You can use the Twilio connector to deploy an assistant that is available over text message.

Getting Credentials

You first have to create a Twilio app to get credentials. Once you have them you can add these to your credentials.yml.

How to get the Twilio credentials: You need to set up a Twilio account.

  1. Once you have created a Twilio account, you need to create a new project. The basic important product to select here is Programmable SMS.

  2. Once you have created the project, navigate to the Dashboard of Programmable SMS and click on Get Started. Follow the steps to connect a phone number to the project.

  3. Now you can use the Account SID, Auth Token, and the phone number you purchased in your credentials.yml.

  4. Configure your webhook URL by navigating to Phone Numbers in the Twilio dashboard and selecting your phone number. Find the Messaging section and add your webhook URL (e.g. https://<host>:<port>/webhooks/twilio/webhook, replacing the host and port with the appropriate values from your running Rasa server) to the A MESSAGE COMES IN setting.

For more information, see the Twilio REST API.

Connecting to WhatsApp

You can deploy a Rasa assistant to WhatsApp through Twilio. However, to do so, you have to have a WhatsApp Business profile. Associate your Whatsapp Business profile with the phone number you purchased through Twilio to access the Twilio API for WhatsApp.

According to the Twilio API documentation, the phone number you use should be prefixed with whatsapp: in the credentials.yml described below.

Running on Twilio

Add the Twilio credentials to your credentials.yml:

twilio:
account_sid: "ACbc2dxxxxxxxxxxxx19d54bdcd6e41186"
auth_token: "e231c197493a7122d475b4xxxxxxxxxx"
twilio_number: "+440123456789" # if using WhatsApp: "whatsapp:+440123456789"

Restart your Rasa server to make the new channel endpoint available for Twilio to send messages to.

Receiving Location Data from Whatsapp with Twilio connector

This is how you can receive location data (WhatsApp Location) from a user on this channel:

  1. Create an intent named "locationData" and define two entities and slots for Latitude and Longitude respectively.
domain.yml
intents:
- locationData
slots:
Latitude:
type: text
mappings:
- type: from_entity
entity: Latitude
Longitude:
type: text
mappings:
- type: from_entity
entity: Longitude
entities:
- Latitude
- Longitude
  1. When the user sends a location message, the locationData intent will be triggered and the slots will be set from the entities. Note that you do not need to provide training data for the entities as they are handled by the channel.