使用nodejs在Twilio中创建一个SMS组转发器



这是我要完成的工作:

  • 设置名称和数字列表(我的"组")
  • 当发送短信发送到Twilio号码时,将其转发给组中的每个成员

在一个高级的想法中,这个想法似乎足够简单。不过,我的编程/语法技能是生锈的,我会很喜欢一些帮助。

我正在使用Twilio功能,并且我能够成功发送和接收消息。现在,我一直坚持如何通过一个小组进行迭代的想法。

这是我到目前为止写的:

var groupmembers = {
    jonathan:{
        name: 'Jonathan',
        number: '+0000000000'
    },
    joshua:{
        name: 'Joshua',
        number: '+1110000000'
    }
}
exports.handler = function(context, event, callback) {
  // Set some values for later use
  this.fromNumber = event.From
  this.body = event.Body || ''
  let twiml = new Twilio.twiml.MessagingResponse();
  groupmembers.forEach(function(member) {
    // Skip sending if it's the same number
    if (member.number === this.fromNumber ) {
        return;
    }
    // Otherwise, let's send a mesage!
    twiml.message("Hello World").to( member.number );
    callback(null, twiml);
  });
};

我相信我有:

  • 不确定如何正确设置我的数组或"字典"
  • 不知道将"到"变量传递给message
  • 的适当语法
  • 不知道在nodejs中进行循环的适当语法(功能控制台告诉我" groupmembers.foreach不是函数")

感谢您的所有反馈,并指出了我的方向正确!

您遇到的错误很简单。groupmembers是一个对象,您想要一个数组。

您可能想要类似于此的东西:

var groupmembers = [{
        name: 'Jonathan',
        number: '+0000000000'
    },
    {
        name: 'Joshua',
        number: '+1110000000'
    }]

除此之外,它看起来还可以。

随着更多的搜索和从斯拉瓦(Slava)正确的方向的点,我能够弄清楚它!这是完整的代码:

/**
 * Represents a search trough an array.
 * @function search
 * @param {Array} array - The array you wanna search trough
 * @param {string} key - The key to search for
 * @param {string} [prop] - The property name to find it in
 * Props: https://stackoverflow.com/a/33097318/315818
 */
function search(array, key, prop){
    // Optional, but fallback to key['name'] if not selected
    prop = (typeof prop === 'undefined') ? 'name' : prop;    
    for (var i=0; i < array.length; i++) {
        if (array[i][prop] === key) {
            return array[i];
        }
    }
}
var groupmembers = [
    {
        name: 'Jonathan',
        number: '+000000000'
    },
    {
        name: 'Joshua',
        number: '+111111111'
    }
];
exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.MessagingResponse();
  // Search for the group member that matches the sender number
  let sender = search(groupmembers, event.From, 'number');
  // Now, loop through each of the group members
  groupmembers.forEach(function(member) {
    // Skip sending if it's the same number
    if (member.number === event.From ) {
        return;
    }
    // Now, forward on the message to the group member, using the sender's name 
    twiml.message(`${sender.name}: ${event.Body}`, {
        to: member.number
    });
  });
  // Loop ended 
  callback(null, twiml);
};

相关内容

最新更新