Создайте HTTP POST для функций Twilio (отправьте SMS) - PullRequest
0 голосов
/ 30 января 2019

Я создал функцию Twilio, которую я хотел бы использовать для отправки своей партнерской реферальной ссылки подписчикам приложения, которое проходит через мой канал.

Однако он работает нормально со статическим номером «до / от».Я хотел бы сделать поле «to» динамической переменной, которой можно манипулировать через HTTP / Webhook POST, когда Zapier обнаруживает нового подписчика в моем списке рассылки Mailchimp и передает свой номер телефона в качестве переменной.

Мне также неясно, что мне нужно сделать для аутентификации клиента (Zapier), который делает POST, поскольку я не хочу, чтобы функция, открытая для всего мира, использовалась, если можно поделиться какой-либо информацией об этом, это будет искренне оценено - яЯ очень неопытный программист, пытающийся учиться очень быстро!

@ philnash - спасибо за ваше предложение, медленно его реализуем!

Заранее большое спасибо!

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));
}

Ответы [ 3 ]

0 голосов
/ 01 февраля 2019

Попробуйте это:

exports.handler = function(context, event, callback) {
  for (let key in event) {
    console.log(`${key}: ${event[key]}`);
  }
  // ... rest of the function
  callback(null, 'complete');
};
0 голосов
/ 03 февраля 2019

Спасибо всем за ваш вклад, это было искренне оценено!Я смог решить эту проблему с помощью следующего кода:

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));
}
0 голосов
/ 30 января 2019

Разработчик Twilio здесь.

Я предполагаю, что веб-крючок Zapier отправляет детали, включая номер телефона, в качестве тела запроса POST.

Все параметры в теле запросапоявляются на объекте event, который передается вашему обработчику.Возможно, вы захотите запустить тест, в котором вы распечатываете содержимое объекта event, чтобы увидеть, что вам передают.Вы можете сделать это с помощью:

exports.handler = function(context, event, callback) {
  for (let key in event) {
    console.log(`${key}: ${event[key]}`);
  }
  // ... rest of the function
}

Затем, когда вы выясните, какой параметр хранит номер, вы можете использовать его в вызове для создания сообщения.

Дайте мне знать, еслиэто помогает вообще.

...