node.js - 短信状态回调中的 Twilio 11200 错误

标签 node.js sms twilio

我们正在使用 node.js 向客户发送短信,并且最近添加了状态回调来记录已发送和已发送的状态。我们现在还在 Twilio 日志中看到大量 11200 错误,这些错误显然是成功的。查看调试器,我在响应正文中看到了这一点:

Twilio was unable to fetch content from: https://api.mycompany.com:443/api/1.0/sms/response Error: Error reading response: Response does not contain content type

消息文本有:

Msg "Request to StatusCallback URL was unsuccessful." httpResponse "502"

在我们这边,/api/1.0/sms/response 的处理程序获取随响应一起发送的 MessageSid,将其与数据库中的 MessageSid 进行匹配,然后查看 MessageStatus。对于“已发送”,它在已发送字段中记录当前时间并将其保存回数据库,同样对于已发送。最后,它只是执行了 res.end(),如 node.js example 所示。 .

代码如下:

app.post('/api/1.0/sms/response', function(req, res) {
    var post_id = req.body.MessageSid || "";
    var status = req.body.MessageStatus || "";
    var item = Item.create(globals);

    if (post_id === "") {
        globals.logger.error(moduleName, "POST sms/response", "Missing MessageSid: " + JSON.stringify(req.body), true);
        res.end();
        return;
    }

    item.loadFromPostId(post_id).then(function() {
        if (status.toLowerCase() === "sent") {
            item.sent = new Date();
        }
        else if (status.toLowerCase() === "delivered") {
            item.delivered = new Date();
        }

        item.save().then(function() {
           res.end();
        });

    });
});

查看几个错误,这些错误是在 Twilio 尝试向我们发送“已送达”状态时出现的。从这些错误中检查我们的数据库中的 MessageSids,匹配的项目在“已交付”列中有一个时间戳,因此它一直通过代码进行保存。

对于该端点,我们的 nginx 日志(我们在 Node 前面使用的)中只有 200 个响应,没有上游超时,也没有 502 秒。所以我不知道这个错误从何而来,也不知道如何消除它。

是的,我们应该处理未送达的情况等,但这只是获得一些回复的快速传递。

最佳答案

您应该使用 HTTP 状态代码 204 进行响应:

res.status(204).end();

204 状态仍然是成功,就像 200 一样,但具体意味着您没有发回任何内容 ( https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html )。 请注意,以下内容也有效,并且不需要 end():

res.sendStatus(204);

关于node.js - 短信状态回调中的 Twilio 11200 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289113/

相关文章:

node.js - 改进 Mongoose 验证错误处理

javascript - 通过不同的 Node.js 模块/文件传递变量时实现最佳性能

python - 在不需要第三方 API 的情况下用 Python 发送 SMS 文本?

javascript - 以编程方式读取短信收件箱 Firefox OS

c# - ASP.NET 和发送短信/调用电话

java - 线程中出现异常 "Thread-3"java.lang.NoSuchMethodError : org. apache.http.impl.client.DefaultRedirectStrategy.<init>([Ljava/lang/String;)V

javascript - 将变量从@Injectable 传递到组件

c# - 使用 twilio 从 asp.net 异步发送短信

node.js - 使用 HttpPlatformHandler 在 iis 上运行 node.js 应用程序

node.js - 从 Node 中的任何 EventEmitter 捕获所有 `error` 事件