代码之家  ›  专栏  ›  技术社区  ›  Hachimi Ahmed Amine

node js twilio发送短信不工作

  •  1
  • Hachimi Ahmed Amine  · 技术社区  · 8 年前

     var twiml = new MessagingResponse();
    
    function sendsms() {
                      twiml.message("aaa");
                     console.log(twiml.toString());
                       }
    

    但是当我在User.findone中调用这个函数时

     User.findOne({}, function(err, user) {
                     if (condition) {
                         sendsms();
                     }
                 })
    

    enter image description here 但短信未发送 enter image description here 当我呼叫外部用户时。完成短信发送成功

    sendsms()
    

    router.post('/sendSMS', function(req, res) {
        var phone = req.body.phone;
    
    
    
        User.findOne({}, function(err, user) {
    
    
                require('../config/sendSMS')(user, phone);
    
                res.status(200).json({ success: true, message: 'message sent successfully' });
    
            }
    
        });
    

    这是获取和回放sms的路径

    router.post('/getSMS', function(req, res) {
    
        require('../config/getAndReplay')(req, res);
    
    });
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   philnash    8 年前

    Twilio开发者布道者。

    User.findOne 是一个异步调用,因此调用 getandreplay()

    我建议你 return 您想从中回复的邮件 getandreplay()

    function getandreplay(node) {
        if (node.outs.length > 0) {
            if (node.outs.includes(req.body.Body.toLowerCase())) {
                for (var i = 0; i < node.output.length; i++) {
                    var el = node.output[i];
                    if (req.body.Body.toLowerCase() == el[0]) {
                        req.session.lastnode = getnode(el[1]);
                        if (getnode(el[1]).outs.length == 0) {
                            req.session.destroy();
                            User.findOneAndUpdate({}, { $push: { users: userPhone } }, { safe: true, upsert: true }, function(user, err) {});
                        }
                        return getnode(el[1]).msg;
                    }
                }
            } else {
                return node.msg
            }
        }
    }
    

    User.findOne() 结果来自 并将其作为回复发送回:

    User.findOne({}, function(err, user) {
        if (!user.users.includes(userPhone)) {
            twiml.message(getandreplay(mynode));
        }
        res.writeHead(200, { 'Content-Type': 'text/xml' });
        res.end(twiml.toString());
    });
    

    注意,我在这里打电话 res.end 在回调函数中 .

    如果有任何帮助,请告诉我。