Twilio 使用 Node.js 接收和回复 SMS
Posted
技术标签:
【中文标题】Twilio 使用 Node.js 接收和回复 SMS【英文标题】:Twilio receive and reply SMS using Node.js 【发布时间】:2018-06-29 06:01:56 【问题描述】:我正在尝试设置我们的 twilio 应用程序以在收到短信时响应客户端。我创建了一个发送初始文本的 js 文件和另一个在收到回复时发送响应的 js 文件。
然后我从我的机器上启动了初始服务器,然后启动了 ngrok http 1337 我将来自 ngrok 的转发 url 复制并粘贴到我的 twilio 仪表板上的消息传递 webhook 中,并将“/sms”添加到 url 的末尾。
当我回复文本时,我没有收到回复,并且可以在 ngrok 中看到我收到“502 Bad Gateway error”。
const accounSid = 'xxxxxxxxxxxxx'
const authToken = 'xxxxxxxxxxxxx'
const client = require('twilio')(accounSid, authToken)
client.messages.create(
to: '+13101234567',
from: '+13109876543',
body: 'test'
)
.then((message) =>
console.log(message.sid)
)
const http = require('http')
const express = require('express')
const MessagingResponse = require('twilio').twiml.MessagingResponse
const app = express()
app.post('/sms', (req,res) =>
const twiml = new MessagingResponse()
twiml.message('testing 123')
res.writeHead(200, 'Content-Type': 'text/xml')
res.end(twiml.toString())
)
http.createServer(app).listen(1337, () =>
console.log('express server listening on port 1337')
)
【问题讨论】:
我刚刚运行了您的确切代码,我可以通过指向端口 1337 的 localhost 和 ngrok 使用 curl 成功地向您的/sms
端点发出 POST 请求。所以,看起来您的应用程序是正确的(只要因为您安装了版本 3 Twilio 库)。您是否可以了解有关该错误的更多详细信息?您可以在发布请求功能中记录来自 Node 应用程序的任何内容吗? ngrok 仪表板 (127.0.0.1:4040) 是否显示其他内容?
【参考方案1】:
您从 ngrok 收到 502 Bad Gateway
,因为您的 Express http 服务器无法正常工作或出现问题。
当您回复 SMS 时,Twilio 正在向您的 ngrok 发出 POST 请求,这正在工作,因为您会在屏幕上看到该消息 502 Bad Gateway
。
当您启动 Express 时,您应该会看到 express server listening on port 1337
如果您使用浏览器访问http://localhost:1337/
,您应该会看到带有Cannot GET /
的页面,因为浏览器不会发出 POST 请求,但至少您可以确认 Express 服务器正在工作。
【讨论】:
以上是关于Twilio 使用 Node.js 接收和回复 SMS的主要内容,如果未能解决你的问题,请参考以下文章
我的 Twilio 电话号码即使在收到状态码:200 时也不会回复短信,有啥原因吗?