Managed Connection: Twilio
Twilio allows us to send and receive text messages globally using applications like VoiceWorx platform.
The VoiceWorx platform allows for the rapid integration of Twilio Text message service to various voice channels such as, Alexa, Lex, Google Assistant and more.
- You need to have an active Twilio account
- Enough balance so you can send messages.
- Configuration
- Account SID
- Auth Token
- Phone Number
Twilio uses two credentials to determine which project an API request is coming from: The Account SID, which acts as a username, and the Auth Token which acts as a password.
To get the required information, Log into your Twilio Account. If you do not already have a Twilio account, click on Sign Up for free and fill the details as shown below to get a trial account.
You’ll get a confirmation message on your mail, confirm the account and you shall be directed to the Twilio dashboard
Save the following details from the Twilio dashboard:
- 1.Account SID
- 2.Auth Token
The next step is to get a trial number from Twilio so that we can proceed our tests with Twilio SMS and MMS. By default, the trial account has a trial balance which can be used to get the trial numbers.
Click on Get a Trial Number, you’ll be provided an option, select on Choose this number and you’ll receive the confirmation message as shown below:
To manage the Phone numbers, click on Phone numbers menu in the left navigation and select options to manage active numbers, released numbers, buying a new number etc.
If you do not have any Active Number, you can purchase one by clicking on “Buy a Number” option available in the same screen in left menu.
Keep record of your Account SID, Auth Token and Twilio phone number. Go to Connect System on Integration Menu. Click on Add New Connection.
Select following:
Integration Category: Custom
System Type: Twilio
Fill in the details from above steps and click on Validate and Save Settings.
Configuration | Info |
| |
Account Sid | A unique number that is available on your Twilio account’s Dashboard. This behaves like a username. |
Auth Token | A long string that is also available on your Twilio account’s Dashboard. This behaves like a password. |
Twilio Number | One of the 10-digit phone number (without +1 and without -) that you have purchased on Twilio and is available at Manage Numbers > Active Numbers section on your Twilio account. |
You can now use the integration to build apps in VoiceWorx that can use Twilio to send SMS and MMS.
On Manage Apps menu under Custom Apps menu in the left navigation, click on New Custom App.
Fill up following details to create app.
Name: Twilio Demo
Custom App Type: Search
Category: Default
Click on Save.
Next step is to create a datasource that communicates with the integration created in Step 2.
After the data source has been created, we now have to create methods. VoiceWorx supports
- 1.SendTextSMS
- 2.SendSMSWithMedia
Parameter | Sample Value | Info |
| | |
ToNumber | {{ToNumber}} | A phone number which is going to receive the message. |
Body | {{Message}} | Actual Message Content. Note: {{}} represents that the value for these parameters are going to be read from the user as input. |
Fill the following details:
Parameter | Info |
| |
Method Name | SendTextSMS |
Request Type | SendTextSMS This is the method that you are using |
Parameters | As explained in table above |
Result Type | Record It indicates that the method can return a single record. |
Record JsonPath | Each method returns data in json format and to pick any specific information from the json, we need to specify the Record JsonPath so Voice Worx platform will pick that data in consideration while displaying results. Example: $.[*] This selects all the records that is returned. |
Empty Result Template | I'm sorry, there was problem delivering your message to {{Input.ToNumber}}. Please try again, How else can I help you? Note: Anything written in between {{ }} is represented as a json field and it’s case-sensitive. Input.* refers that you are taking that value from the inputs provided above. |
Result Template | Your message has been delivered to {{Input.ToNumber}}. How else can I help you? |
You can now test the method. On the actions menu, click on Test, provide the parameter value and
Click on Method Test . You can observe the return from method in Object tab and the result displayed to user in Result Tab.
| Sample Value | Info |
| | |
ToNumber | {{ToNumber}} e.g. 6787014967 | A phone number which is going to receive the message. |
Body | {{Message}} e.g. Hello there | Actual Message Content |
MediaURL | {{MediaUrl}} e.g['https://voiceworx.ai/assets/images/vw-logo-100.png'] | Public URL for the media content. |
Fill the following details:
Parameter | Info |
| |
Method Name | SendSMSWithMedia |
Request Type | SendSMSWithMedia This is the method that you are using |
Parameters | As explained in table above |
Result Type | Record It indicates that the method can return a single record. |
Record JsonPath | Each method returns data in json format and to pick any specific information from the json, we need to specify the Record JsonPath so Voice Worx platform will pick that data in consideration while displaying results. Example: $.[*] This selects all the records that is returned. |
Empty Result Template | I'm sorry, there was problem delivering your message to {{Input.ToNumber}}. Please try again, How else can I help you? Note: Anything written in between {{ }} is represented as a json field and it’s case-sensitive. |
Result Template | Your message has been delivered to {{Input.ToNumber}}. How else can I help you? |
You can repeat the same method to test the method. Following screen shows a sample response.
Create Intents corresponding to the methods.
- 1.SendTextSMSIntent
Details |
Name: SendTextSMSIntent |
Intent Type: Search |
Intent Action: Execute Method |
DataSource : Twilio DS |
Data Source Method: SendTextSMS |
- 1.SendSMSWithMediaIntent
Details |
Name: SendSMSWithMediaIntent |
Intent Type: Search |
Intent Action: Execute Method |
DataSource : Twilio DS |
Data Source Method: SendSMSWithMediaI |
Slots represent the parameters for the intents. You shall create slots of the exact same name as the parameters used in the method. Slots map to the parameters of the method.
- 1.SendTextSMSIntent
Details: |
|
Slot Order: 0 or 1 |
Reprompt message: what’s the phone number |
Type: Number |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
|
|
Slot Order: 3 |
Reprompt message: what’s your message |
Type: Full Name |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
- 1.SendSMSWithMediaIntent
Details: |
|
Slot Order: 0 or 1 |
Reprompt message: what’s the phone number |
Type: Number |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
|
|
Slot Order: 2 |
Reprompt message: please provide the media url |
Type: Text |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
|
|
Slot Order: 3 |
Reprompt message: what’s your message |
Type: Full Name |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
Note: If you have slot with same name in different intents of the same app, e,g. Message slot in above example, make sure that their type is also same , other wise you might encounter error in further steps. |
Utterances are the short texts that invoke the intent. You have to define a unique utterance for each method.
- 1.SendTextSMS
Details |
Value: send text message |
Custom App: Twilio Demo |
Intent: SendTextSMSIntent |
- 1.SendSMSWithMedia
Details |
Value: send multi media message |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
The next step is to create input for the intents. Create Inputs corresponding to every intent. You need to create and manage parameters corresponding to the slots for each intent. For example for SendTextSMSIntent, you had two slots: “ToNumber” and “Message”, hence for SendTextSMSInput , you need to create two parameters: “ToNumber” and “Message”. Let’s look into the process in the following screens:
- 1.SendTextSMSInput
Click on Manage parameters on the action menu.
Click on Input Parameters and provide the details as shown below in the resulting pop up: Make sure to map the Input parameter to the same parameter. Also be careful of the data type used. It should be similar/ compatible with the data type of the slot.
Let’s Add another parameter “Message”.
- 1.Send SMSWithMediaInput
Repeat the same process for SMSWithMediaIntent. Create Input “SMSWithMediaInput” and create parameters.
Parameter Details:
Details: |
|
Slot Order: 0 or 1 |
Reprompt message: what’s the phone number |
Type: Number |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
|
|
Slot Order: 2 |
Reprompt message: please provide the media url |
Type: Text |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
|
|
Slot Order: 3 |
Reprompt message: what’s your message |
Type: Text |
Custom App: Twilio Demo |
Intent: SendSMSWithMediaIntent |
Once you’ve completed all of the above steps, your app is now ready to be publish to VoiceWorx supported channels. Let’s set up a publish profile.
Details: |
External App Name: Twilio Name |
App Type: Search |
Channel: Alexa |
Skill Invocation: twilio messaging |
Messaging: all of the messages shall be auto populated. You would want to double check and confirm all of the messages are provided. |
Click on Save and you shall see the publish profile in VoiceWorx portal. Click on the actions menu and then on Publish to Alexa.
Select the appropriate LWA account and click on publish.
On success, you shall get a similar screen
Click on Go to Alexa Skill. It will redirect you to Alexa developer console, where you can start testing your app starting with the skill invocation text defined in previous step.
For further details on app building, you can refer to this document for required guidance on building the remaining steps of app building.
Last modified 1yr ago