0

I have the following code:

<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/simple_gather.xml -->
<Response>
  <Pause length="2"/>  <Play>https://welcomehisheart.com/wp-content/uploads/2021/10/congress-invitation.mp3</Play>
  <Pause length="1"/>
    <Say>If you would no longer like to receive information about the Sacred Heart, press 2</Say>
    <Gather/>
  <Pause length="1"/>
</Response>

The TwiML URL is:

https://handler.twilio.com/twiml/EHe23193a659bfcf74b1061864aea9b224

The code works as expected. You can enter a selection during the phone call.

How to access the information gathered?

Thanks

ctk
  • 11
  • 1

1 Answers1

0

Twilio developer evangelist here.

It looks like you are working with a TwiML Bin there, which is great for a static piece of TwiML like this first message. However, there are a couple of issues.

Firstly, you are not giving the user the proper time to enter their input. The <Gather> element is best used with the message nested within it, so that a user can press at any time. You can also set a timeout to better control how long they have to respond once the nested <Say> is complete. The default value of timeout is 5 seconds.

Secondly, if you are just waiting for the user to press a single digit, you can add the numDigits="1" attribute to the <Gather>. This will complete the <Gather> once the user presses a single digit.

Finally, and the subject of your question, you need to give the <Gather> a URL as the action attribute. Then, when a user presses a key, Twilio will make an HTTP request to that URL with the results of their input. You need to build an application that will handle that request and do something with the result of the key press.

So, you should update your TwiML to:

<?xml version="1.0" encoding="UTF-8"?>
<!-- page located at http://example.com/simple_gather.xml -->
<Response>
  <Pause length="2"/>
  <Play>https://welcomehisheart.com/wp-content/uploads/2021/10/congress-invitation.mp3</Play>
  <Pause length="1"/>
  <Gather numDigits="1" action="https://example.com/gather">
    <Say>If you would no longer like to receive information about the Sacred Heart, press 2</Say>
  </Gather>
</Response>

and you need to create an application that can receive an HTTP request, in this case at the URL example.com/gather, though you should provide your own URL here.

There are tutorials on how to gather user input in a phone call that will walk through this in more depth with code examples, that you should read next.

philnash
  • 70,667
  • 10
  • 60
  • 88