node.js - 使用 Node.js 和 Express 在 Twilio 中请求未定义

标签 node.js twilio

我创建了一个 webhook 来应答 Twilio 语音调用。

var router = require('express').Router();
var twilio = require('twilio');

router.post("/voice", (request, response) => {
  // var fs = require('fs');
  // var util = require('util');
  // fs.writeFileSync('./request.json', util.inspect(request.body), 'utf-8');
  console.log(request.body);
  console.log('Call received from ' + request.body.From);
  //twimlAnswer();}

Webhook 和连接工作正常,但我正在尝试访问 Twilio 通常在“请求”内提供的一些请求参数(与此示例类似 https://www.twilio.com/docs/tutorials/automated-survey-node-express#responding-to-a-phone-call )

我收到以下日志:

Express server listening on port 3000
undefined
TypeError: Cannot read property 'From' of undefined
    at router.post

你知道为什么我无法正确访问请求吗?我发现的大多数示例在访问 request.body 时都没有问题...

谢谢

最佳答案

这里是 Twilio 开发者布道者。

Twilio sends webhook requests as URL encoded form parameters 。因此,要在 Express 中读取请求正文,您需要包含 Body Parser 模块并将应用设置为使用 urlencoded 解析器。有点像这样:

var router = require('express').Router();
var twilio = require('twilio');
var bodyParser = require('body-parser');

router.use(bodyParser.urlencoded({ extended: false }));

router.post("/voice", (request, response) => {
  console.log('Call received from ' + request.body.From);
  // respond to webhook
});

关于node.js - 使用 Node.js 和 Express 在 Twilio 中请求未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43530122/

相关文章:

eclipse - 当 Node.js 程序从控制台停止时,Eclipse 是否发送终止信号?

javascript - 在 Node.js 中包含来自另一个文件的 JavaScript 类定义

javascript:如何将变量转换为具有相同名称并返回原始值的函数

java - 电话 session iOS/android?

node.js - 使用 Dialogflow 和 Webhook 收听广播

javascript - 使用 node.js 提取所有超链接(来自外部网站)并请求

sms - 能否在 Twilio 中保存和安排 SMS 发送?如果没有,我该如何完成?

javascript - 从浏览器调用电话时,如何以编程方式知道电话何时被接听?

ios - twilio API : how can I play an audio file to both sides of a voice call and not disconnect the call?

twilio - 在开发环境中测试 twilio webhooks