Search code examples
twiliomailchimpzapiertwilio-functions

Create a HTTP POST to Twilio Functions (send SMS)


I have created a Twilio function that I would like to use to send my affiliate referral link to subscribers of an application that come through my channel.

It works fine with a static to / from number, however I would like to make the "to" field a dynamic variable that can be manipulated via a HTTP/Webhook POST when a Zapier detects a new subscriber to my Mailchimp mailing list and pass their phone number as the variable.

I am also unclear what I need to do to authenticate the client (Zapier) that is making the POST as I do not want the function open to the world to use, if any insights can be shared on this it would be sincerely appreciated - I am a very inexperienced programmer trying to learn very quickly!

@philnash - thanks for your suggestion, implementing it slowly!

Many thanks in advance!

exports.handler = function(context, event, callback) {
  const appCodes = ['code1', 'code2', 'code3', 'code4']
  var smsBody = refCode ();

function refCode () {
    return appCodes[Math.floor((Math.random() * appCodes.length))];
};
  
  context.getTwilioClient().messages.create({
    to: '+11112223333', // How do I make this dynamic from HTTP/Zapier Webhook POST???
    from: '+1444555666',
    body: `Get the App: ${smsBody}`
  }).then(msg => {
    callback(null, msg.sid);
  }).catch(err => callback(err));
}


Solution

  • Thanks everyone for your input, it was sincerely appreciated! I was able to solve this with the following code:

    exports.handler = function(context, event, callback) {
      const appCodes = ['code1', 'code2', 'code3', 'code4']
      var smsBody = refCode ();
      var subNum = event.primaryPhone || 'There is no subscriber number'; // primaryPhone sent via HTTP post to twilio function
    
    function refCode () {
        return appCodes[Math.floor((Math.random() * appCodes.length))];
    };
    
      context.getTwilioClient().messages.create({
        to: `${subNum}`, // parameters & values recieved from HTTP POST are available within the twilio functions "event" context
        from: '+1444555666',
        body: `Get the App: ${smsBody}`
      }).then(msg => {
        callback(null, msg.sid);
      }).catch(err => callback(err));
    }