0

我创建了一个 Twilio 功能,我想用它来将我的会员推荐链接发送给通过我的频道来的应用程序的订阅者。

它适用于静态到/从号码,但是我想让“to”字段成为一个动态变量,当 Zapier 检测到我的 Mailchimp 邮件列表的新订阅者并传递他们时,可以通过 HTTP/Webhook POST 进行操作电话号码作为变量。

我也不清楚我需要做什么来验证正在发布 POST 的客户端(Zapier),因为我不希望该功能向世界开放使用,如果可以就此分享任何见解,我将不胜感激 - 我我是一个非常缺乏经验的程序员,试图快速学习!

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

4

3 回答 3

0

Twilio 开发人员布道者在这里。

我认为 Zapier webhook 正在发送详细信息,包括电话号码,作为 POST 请求的正文。

请求正文中的所有参数都出现在event传递给您的处理程序的对象上。您可能想要运行一个测试,打印出event对象的内容以查看您正在通过什么。你可以这样做:

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

然后,当您确定存储数字的参数时,您可以在调用中使用它来创建消息。

让我知道这是否有帮助。

于 2019-01-30T04:53:20.110 回答
0

尝试这个:

exports.handler = function(context, event, callback) {
  for (let key in event) {
    console.log(`${key}: ${event[key]}`);
  }
  // ... rest of the function
  callback(null, 'complete');
};
于 2019-01-31T22:54:33.060 回答
0

感谢大家的投入,由衷的感谢!我能够用以下代码解决这个问题:

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));
}
于 2019-02-03T08:05:44.767 回答