Twilio SMS消息不断重新发送相同的消息

时间:2018-07-07 23:46:23

标签: javascript node.js twilio

因此,我尝试将通知发送给使用Twilio的用户电话,但是同一条消息发送了3次。我确实将三个电话号码硬编码到一个数组中(providerNumbers),因此,我认为它循环了三次。

我想要做的最终是从他们存储在Firebase中的每个用户提供的用户提供的电话号码中填充电话号码数组。因此,其他用户将收到相同的通知,以使他们知道访问该网站。

这是我的Node.js代码:

var providerNumbers = ['number1', 'number2', 'number3'];
var body = "..."

app.get('/testtwilio', function(req, res){
  Promise.all(
    providerNumbers.map(number => {
      return twilio.messages.create({
        to: number,
        from: '+15704058347',
        body: body
      });
    })
  ).then(messages => {
    console.log('Messages Sent!');
  }).catch(err => console.error(err));
});

任何人都知道如何防止消息发送三遍给所有用户吗?

3 个答案:

答案 0 :(得分:1)

您发布的代码没有错。

.mapproviderNumbers数组中的每个元素调用回调函数 一次

回调函数在执行时仅发送 一个 消息。

如果您使用以下方式记录索引,则可以验证这一点:

app.get('/testtwilio', function(req, res){
  Promise.all(
    providerNumbers.map((number, index) => {
      console.log(index);
      return twilio.messages.create({
        to: number,
        from: '+15704058347',
        body: body
      });
    })
  ).then(messages => {
    console.log('Messages Sent!');
  }).catch(err => console.error(err));
});

总而言之,某些东西必须连续三次击中端点'/testtwilio'

我希望这会有所帮助。

答案 1 :(得分:1)

您的示例似乎有效,请尝试检查日志以查看是否对同一端点发出了多个请求。将原语数组映射到promise的更简洁的方法是使用Promise.map。减少复杂单元结构的使用,减少了代码必须执行的过程数量,使其更易于调试并排除误报。

const providerNumbers = ['number1', 'number2', 'number3']
const from = '+15704058347'
const body = "..."

app.get('/testtwilio', (req, res, next) => {
  Promise.map(
    providerNumbers, 
    to => twilio.messages.create({to, from, body})
  ).then(res => {
    console.log('Messages sent')
    res.json({success: true})
  }).catch(next)
})

答案 2 :(得分:1)

我通过将app.get更改为app.post解决了这个问题。

相关问题