【问题标题】:How to get a Twilio SMS body text in Node.js如何在 Node.js 中获取 Twilio SMS 正文文本
【发布时间】:2015-01-19 04:28:36
【问题描述】:

我正在开发一个与 Twilio 集成的副项目。这是一个在 Hapi.js 框架上运行的 Node.js 应用程序。

我使用 Twilio 设置了应用程序,因此当我向我的 Twilio 号码发送短信时,Twilio 会从我的应用程序的路由中获取请求,并在响应中使用静态消息给我发短信。

我遇到的问题是从用户的文本中获取 SMS 正文。假设我用 banana 之类的词向 Twilio 号码发送短信,我希望能够从请求中检索到它,以便我可以基于它获得动态消息。

我已经尝试过request.Bodyrequest.message 以及其他几种方法,但我似乎无法将用户的文本检索到 Twilio 号码。我查看了 Twilio 的文档,但似乎无法弄清楚。我在 Twilio 上看到了 this PHP keyword tutorial,看起来很有希望,但即使在该教程中访问 request.Body 似乎也根本不起作用。

有谁知道如何从用户发送的 Twilio SMS 中获取文本正文?任何和所有的帮助表示赞赏

【问题讨论】:

  • 你想动态设置短信吗?
  • 有点,我希望我从手机发送到我的 Twilio 号码的文本能够被 Hapi 和 Node.js 解析。目前,Twilio 仅使用静态消息进行响应,目标是能够根据用户发送给 Twilio 的文本做出不同的响应。

标签: javascript node.js sms twilio hapijs


【解决方案1】:

使用 Hapi,如果您想在运行 handler 之前将所有 request 正文读入内存,则需要设置 payload 配置:

server.route({
    config: {
        payload: {
            output: 'data'
        }
    },
    method: 'POST',
    path: '/textMessage',
    handler: function (request, reply) {
        console.log('Body was', request.payload.toString()); 
        reply('...');
    }
});

来自 Hapi API 文档:

'data' - 传入的有效负载被完全读入内存。如果解析是 是的,负载被解析(JSON,表单解码,多部分)基于 “内容类型”标头。如果 parse 为 false,则原始 Buffer 为 回来。这是默认值,除非代理处理程序是 用过。

更多选项在这里:http://hapijs.com/api#route-options

【讨论】:

  • 看起来很有趣,这是我第一次使用Hapi框架,我不知道这个事实,让我尝试一下,我会回帖,感谢您的见解和回复!
  • 我已经根据您的建议配置了路线,现在request.payload 现在是null,而request.payload.toString() 结果返回一个错误...奇怪。你知道它可能是什么吗?我认为这会解析 Twilio 有效负载
  • 你能用wireshark或fiddler之类的东西来确认确实有一个payload正在发送吗?
  • 啊我找到答案了,好像可以使用下面的对象request.url.query.Body
【解决方案2】:

在尝试了不同的方法从 Twilio 检索请求负载后,我发现 Twilio 请求体可以通过request.url.query 访问,因此,文本的Body 可以通过request.url.query.Body 检索。感谢@MattHarrison 的帮助!

【讨论】:

  • 他们必须将 URL 中的消息编码为查询字符串参数。在这种情况下,您不需要 .url 部分。您也可以只使用request.query.Body,因为 Hapi 也会将查询参数放在那里。
  • 那我也试试!再次感谢您对 Hapi 框架的深入了解,我真的很喜欢它!
  • 是的,你是对的,request.query.Body 也可以,再次感谢@MattHarrison
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-17
  • 2015-09-16
  • 2019-08-10
  • 1970-01-01
相关资源
最近更新 更多