Twilio使用Node.js接收和回复短信

时间:2018-01-19 22:35:18

标签: node.js sms twilio

我试图设置我们的twilio应用程序,以便在收到短信时响应客户端。我创建了一个js文件发送一个初始文本和另一个js文件,它将在收到回复时发送响应。

然后我从我的机器启动了初始服务器,然后启动了ngrok http 1337 我将转发网址从ngrok复制并粘贴到我的twilio仪表板上的消息webhook中,并添加了" / sms"到网址的末尾。

当我回复文本时,我没有收到回复,并且可以在ngrok中看到我收到了" 502 Bad Gateway错误"。

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')
})

1 个答案:

答案 0 :(得分:0)

你从ngrok获得502 Bad Gateway,因为你的Express http服务器无法运行或出现问题。

当您回复短信时,Twilio正在向您的ngrok发出POST请求,这是有效的,因为您在屏幕上显示了该消息502 Bad Gateway

启动Express时,您应该看到express server listening on port 1337

如果您使用浏览器访问http://localhost:1337/,您应该会看到一个Cannot GET /页面,因为浏览器没有发出POST请求,但至少可以确认Express服务器正在运行。< / p>