Search code examples
twiliotwilio-twiml

Twilio TwiML How do I pass URL parameters to TwiML script?


I want to pass a parameter via URL for TwiML to read from when it addresses the person on the other end of the phone. I can't seem to get it to work right. I've tried all sorts of things.

Here is my ASP.NET VB Code...

Dim XClient As New TwilioRestClient(accountSid:=accountSID, authToken:=authToken)
XClient.InitiateOutboundCall(from:=From, [to]:=SendTo, url:="http://mywebsite.com/TestURI.xml?test=Todd")

Here is my XML...

    <?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say voice="alice">$test</Say>
    <Pause length="1"/>
    <Say voice="alice">Do you enjoy hotdogs? I do.</Say>
    <Pause length="1"/>
    <Say voice="alice">Please work so that I can enjoy my lunch in peace!</Say>
</Response>

How do I get this TwiML script to report "Todd" from the URL? Any help is much appreciated. Thank you!


Solution

  • TwimL Bins has has the concepts of templating you can leverage (and also not have to host the TwiML on your own servers).

    How to use templates with TwiML Bins

    https://support.twilio.com/hc/en-us/articles/230878368-How-to-use-templates-with-TwiML-Bins

    Pass in the URL parameter and then reference it in the TwiMLBin as a Template.

       <Say>{{Test}}</Say>
    

    You can also use Twilio Functions (Node),https://www.twilio.com/console/runtime/functions/manage, with JavaScript ES6 template literals to do similar:

    exports.handler = function(context, event, callback) {
        let twiml = new Twilio.twiml.VoiceResponse();
        let testParam = event.test;
        twiml.say(`Hello ${testParam}`);
        callback(null, twiml);
    };