Skip to main content

Build and adapt Answer content using voice blocks

Are you ready to build voice conversations in your bot? While there are some differences between how messaging and voice content work in Ada, you'll notice that there are a lot of similarities between the two.

Understand how messaging and voice content are organized in the dashboard

When navigating the dashboard, there are a few ways you can look for Answers that have either messaging or voice content that chatters can currently interact with.

View messaging and voice content in an Answer

In bots that have Voice enabled, each Answer has its content in two tabs: Messaging and Phone. Under each tab, you can turn the Answer on or off for either modality, and you can tweak the content for that specific channel. If an Answer only has messaging or voice content, you can quickly copy that content into the other modality and then start tailoring it for a better customer experience.

This system where you have related content split into messaging and phone versions gives you the flexibility to both quickly adapt your existing workflows in messaging to Voice, while also tailoring the customer experience where you need to. You can customize an Answer to have modality-specific content, while having the same training and links with other Answers in both modalities. You can also make Answers specific to only messaging or voice and not the other.

Find Answers that have live messaging or voice content

In the Answers view, you can see at a glance which Answers have live messaging or voice content. You can also search for Answers that have either type of content live.

Spot Answers that have live messaging or voice content using icons

Each Answer has a speech bubble icon beside it that indicates the type of messaging it currently has live:

Grey speech bubble icon with a darker grey line through it

No live content

Green speech bubble icon with white lines in the centre, indicating written text

Only live messaging content

Blue speech bubble icon with a white phone in it

Only live voice content

Purple speech bubble icon with lighter purple squares layered on top of each other in it

Both live messaging and voice content

Search for Answers that have live messaging or voice content

In the search bar in the Answers view, you can search for Answers based on the live content they have:

  • <settings:live:true> for Answers that have live messaging content

  • <settings:live_voice:true> for Answers that have live voice content

Both of these search terms will also return Answers that have both live messaging and voice content.

Learn about how blocks work in voice

Once you're ready to build and adapt Answer content for voice, you should understand that some blocks work differently between messaging and voice.

When you're adapting Answer content from one modality to another, it is possible to copy an unsupported block temporarily so you can adapt the content more easily into a supported block. It's important to note that you can't save the Answer if either modality contains unsupported blocks.

Messaging block

Voice block

Different name only

Text message



Ask for

No differences

Shuffle Message

Quick Replies

List Option




HTTP Request

Answer Utilities

Track Event

Zendesk Ticketing

Simple Apps

Messaging only






Date Picker


Sign In/Out

Widget Apps

Not supported

Voice only

Not supported

Send SMS

Transfer Phone Call

End Phone Call

Use Quick Replies and List Option blocks for voice conversations

In voice conversations, time is of the essence. In messaging, you might be able to send chatters long lists of options to choose from, but in voice, having a long list of options read out can make callers feel overwhelmed. How can you adapt your existing Answer flows to make them more voice-friendly?

There are two ways to do this:

  • Quick Replies blocks: Allow callers to choose from either a list of options, or to ask for something else.

  • List Option blocks: Allow callers to choose from a list of options.

When you have a Quick Replies block at the end of an Answer, your bot will always read out the entire list of quick replies to callers. Callers can interrupt that list at any time to select one of the options, or they can say something else to trigger a different Answer.

Adapt List Option blocks for voice conversations

When you're using List Option blocks to allow callers to find their paths through your Answer flows, there are two additional options you can use:

  • Only read out options if capture is unsuccessful

    When you enable this option, your bot only asks the question (e.g., "Which state are you in?") without then reading out all the options ("Alabama, Alaska, Arizona..."). That way, not only does your bot save the caller some time, but the experience mimics a human conversation. If the chatter responds with something unexpected (e.g,. "Ontario"), then your bot will read out the possible options.

  • Options contain a date or time

    Dates and times can be tricky for voice models to parse. This option enables a specialized model for date and times, which captures those values much better than our default model.

Additionally, if you need your bot to read out a long list of options, you can encourage callers to interrupt by saying something like "Call out your account type when you hear it."

Remember, list options lack flexibility; they can only direct callers to the options you give them. Answer training is a lot more flexible than list option phrases are! To provide an open-ended main menu experience, consider relying on Ada's ability to match caller input to trained Answers by using Quick Replies blocks instead where you can.

Minimize pauses while your bot performs backend actions

Some blocks, such as the HTTP Request, Set Variable, and Answer Utilities blocks, as well as any Action blocks, perform backend actions that take some time to complete. In some cases, this can cause pauses while Ada is performing that action, during which a caller might wonder if your bot had heard the last thing they said or become frustrated.

There are some things your bot does to minimize silence. After approximately two seconds of latency, your bot plays one of a variety of messages that say something like "Please wait a moment while I look this up," and plays an artificial typing noise to simulate a human agent looking up information. However, there are some best practices you can follow to further minimize breaks in the conversation from your bot's end:

  • Immediately before blocks that perform backend actions, place one or more Speak blocks. That way, the backend actions can start processing while your bot reads the content in your Speak blocks, so the caller doesn't have to wait as long to get a response.

  • If you have a Capture block followed by multiple blocks that perform backend actions, put a Speak block directly after the Capture block to give your bot some more time to process.

  • If you can't avoid a long pause (for example, if you know the API call in your HTTP Request block normally takes a long time, or if you have multiple blocks with backend actions in a row), create more of a buffer with longer spoken messages like "I understand that you want to find out the balance for your Platinum Reward credit card. I can help with that."

With these strategies, you can fine-tune your bot make conversations that contain even complicated technical actions feel smooth and effortless for your callers.

Send SMS messages to callers

With the Send SMS block, you can send callers text messages. However, it's important to be aware of these caveats before putting SMS messages into your Answer flows:

  • Before sending any SMS messages to a caller, you have to collect their consent. Generally, you only have to do this once per conversation - once you have consent for one Answer flow, you don't have to ask for consent to send another SMS for another Answer flow.

    • This consent only applies to your ability to send an SMS to the caller; you can't also use this consent to add the caller's phone number to marketing lists or send them additional SMS messages for other purposes.

    • It's best to collect consent right before the first time you send them an SMS. If you do it at the beginning of the conversation, callers are more likely to say "no" because they haven't seen yet what your bot is capable of.

  • SMS only works for mobile devices. Always build an alternative path for people who are calling from landline phones, or people who don't give consent to receiving SMS messages.

For example, your bot can say, "Can I send text messages to the device you're calling from? Please respond by saying yes or no." That way, with one question, you're collecting consent and confirming that the caller's device can receive SMS messages. If they say "no" for whatever reason, the caller can go down your alternative path.

To send SMS messages using your bot, do the following:

  1. On the Ada dashboard, go to Build > Answers.

  2. Open the Answer you want to send an SMS from, then click the Phone tab.

  3. Drag and drop a Send SMS block into the Answer editor.

  4. Under Mobile Phone Number, select the variable to send the SMS to. This will probably be the default phone_number metavariable, which is the phone number the caller is calling from.

  5. Under Content, enter the content you want to send. You can't attach photos, but you can include links to attachments if you need to.

Transfer phone calls

With the Transfer Phone Call block, you can transfer the caller to a different phone number. Most of the time, this means handing off the call to a human agent.

Note that the handoff takes place when the Answer gets to the Transfer Phone Call block, so if you have any blocks below it in an Answer, the caller won't hear them.

  1. On the Ada dashboard, go to Build > Answers.

  2. Open the Answer you want to put a handoff in, then click the Phone tab.

  3. Drag and drop a Transfer Phone Call block into the bottom of the Answer editor.

  4. Under Phone Number, enter the phone number or choose the variable containing the phone number you want to transfer the call to.

End phone calls

The End Phone Call block is a simple one - if you put it into an Answer, it disconnects the call. Generally, it's a good idea to let the chatter be the one to end the call, but this block can be helpful at the end of your Answer flow if you confirm with the caller that they don't need any further assistance. For more information, see End Conversation.

Note that your bot ends the call when the Answer gets to the End Phone Call block, so if you have any blocks below it in an Answer, the caller won't hear them.

  1. On the Ada dashboard, go to Build > Answers.

  2. Open the Answer you want to end the call in, then click the Phone tab.

  3. Drag and drop an End Phone Call block into the bottom of the Answer editor.

Capture caller information in voice conversations

It can be tricky getting callers' information over the phone. Think about how much easier it would be for a friend to text you a long order number instead of reading it out to you! To set your callers up for success, there are a few different ways you can ask them to give you information in voice.

Learn about how metavariables work in voice

Before we start talking about gathering information from your callers over the phone, it might help to talk about the information Ada collects automatically. In messaging conversations, Ada can collect chatter information from their browser. But with voice conversations, there's no browser to collect information with.

As a result, voice conversation metavariables are limited to events that occurred during the conversation, and information that it can gather about the caller's phone number. This isn't a perfect system; for example, it assumes you're in the same location as where your phone number is registered, so if you have a Montreal phone number but are calling from Toronto, it will think you're calling from Montreal.

Here's a comparison of the metavariables between messaging and voice:



















Capture additional caller information

When you're capturing information using the Ask block (the voice equivalent of the Capture block in messaging), it's important to think about the most accurate way of getting that information from the caller, and to communicate clearly what you want them to do.

There are four ways you can validate caller information. For all of them, make sure you mention the input you're expecting so the caller knows what to do, along with any other guidelines they might need.

Data type

Input methods

Example prompt


Speak or send an SMS message

Using a complete date, such as January 1, 2001, please say your date of birth.



Using your dialpad, please enter the 9-digit number after S M, followed by the pound key.

Phone number


Please use your dialpad to enter the 10-digit phone number associated with your account, followed by the pound key.

Yes or No


The phone number you entered was 636-555-3226. Is that correct? Please say yes or no.

When callers are entering numbers into the dialpad, they can use the # key to indicate that they're done. Otherwise, your bot assumes they're done five seconds after the last digit the caller entered.

Capture caller information via SMS

Getting a caller to send you an SMS is a great way to make sure you can accurately capture information that's difficult to dictate, like email addresses. Before you do this, make sure you follow the guidelines for using SMS in your bot in the Send SMS messages to callers section of this topic.

To capture information via SMS, put a Send SMS block into your Answer, directly followed by an Ask for block. Here's an example:


When you do this, your bot knows to save the caller's SMS response in the variable you specify in your Ask for block.

Test your bot's voice content

While building out voice content, it's a good idea to test how your flows will sound to callers. You can test individual Answers, or call your bot so you can test the entire caller experience, starting at your greeting.

Test how an individual voice block sounds

Anytime a block contains content to read out, the top of the block has a Play icon voice-play-block-content.png you can click to hear how its content will sound to callers. You can use this button to double-check that the flow of a block's content sounds good, and if you're using SSML tags to adjust your bot's default sound, you can use it to fine-tune your adjustments. For more information, see Control how your bot pronounces content in voice conversations.


Test an individual Answer's voice content

Just like when you're creating text content, you can test an Answer to make sure that your voice content flows well and delivers information in a timely way, regardless of whether the Answer is live yet.


Because of phone call limitations, this feature is only available for phone numbers in North America.

Additionally, location metavariables depend on the caller initiating the phone call, and don't work if Twilio calls them instead. As a result, if your Answer depends on metavariables being populated, you may have to hardcode them using a Set Variable block so you can test the Answer properly.

  1. At the bottom of the Answer you want to test, click Test Answer. A test chat window appears.

  2. At the top of the test chat window, click the Ada Web Chat dropdown and click Phone.

  3. Enter your phone number and click Call. Your bot calls you and serves you your Answer. From there, you can hang up, or continue navigating through other Answers.


Test your caller experience

You can test your bot by calling your Twilio number and navigating through your bot starting from the greeting, like a caller would. This is a great way of testing whether your bot is successfully recognizing spoken input and has both the training and Answer flows set up to respond to that input well.


Twilio doesn't have any way of knowing whether phone calls are coming from testers or customers. As a result, when you go through your bot's conversations or metrics, you can't easily filter out or exclude test calls. By contrast, when you test individual Answers, your bot always tags those conversations with Test User.

Additionally, this method only tests content that is currently live.

If you need to find your Twilio number, you can go into your Phone integration settings:

  1. On the Ada dashboard, go to Settings > Integrations.

  2. Under Channels Integrations, beside Phone, click Configure.

  3. Under Phone Number, your Twilio account's phone number is in the Main phone number field. Call that phone number to test your bot.

Have any questions? Contact your Ada team—or email us at