您如何使用 Twilio Node SDK 来验证 webhook 请求?

How do you use the Twilio Node SDK to validate webhook requests?

我正在尝试根据此处的文档 https://www.twilio.com/docs/usage/tutorials/how-to-secure-your-express-app-by-validating-incoming-twilio-requests 将 Twilio Node SDK 与我的 Express 应用程序一起使用,以验证对我的 webhook 端点的请求实际上来自 Twilio。

我在我的生产环境中设置了 TWILIO_AUTH_TOKEN 环境变量,并像这样定义了我的 webhook 端点:

router.post(
  "/foo",
  twilio.webhook(),
  async (req, res) => {
    ...
  }

但是,当我向触发 webhook 的 Twilio 号码发送短信时,它 returns 一个 403。通过检查 Twilio 控制台中的调试器,响应正文是 Twilio Request Validation Failed

不太确定我在这里做错了什么,因为文档使它听起来相当简单。如果我删除 twilio.webhook() 行,一切都会按预期进行。 Webhook 端点是 https,并且我在我的 Twilio 帐户中启用了 SSL 证书验证。

我最终通过遵循 Twilio 安全指南中的步骤自行生成哈希并将其与 x-twilio-signature header 进行比较,从而使它起作用。我唯一的猜测是 Twilio Node SDK 有问题。

只需向您的号码发送短信,它不会期望通过 http 请求,而是来自 Twilio(当您的号码收到短信并且 Twilio 调用网络钩子时)