gpt4 book ai didi

node.js - Node js twilio 发送短信不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:48 24 4
gpt4 key购买 nike

我有这个功能发送短信

 var twiml = new MessagingResponse();

function sendsms() {
twiml.message("aaa");
console.log(twiml.toString());
}

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

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

成功记录 twiml.toString enter image description here但短信没有发送 enter image description here当我调用外部 user.findOne 时,短信已成功发送

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

}

});

这是获取和重播短信的路由

router.post('/getSMS', function(req, res) {

require('../config/getAndReplay')(req, res);

});

最佳答案

这里是 Twilio 开发者布道者。

您的代码中的问题是您混合了同步和异步代码。

User.findOne 是一个异步调用,因此在结果回调中调用 getandreplay() 函数意味着它会在路由中的响应完成后发生。

我建议您从 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() 时,您会从 getandreplay() 获取结果并将其作为响应发送回来:

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

请注意,这里我在 User.findOne() 的回调函数中调用 res.end

请告诉我这是否有帮助。

关于node.js - Node js twilio 发送短信不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44874069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com