我正在NodeJS中为上一课中创建的待办事项列表设置外发邮件的跟踪传递状态。现在,我被指示执行以下操作:
我正在考虑将其纳入
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);
client.messages
.create({
body: ' ',
from: '+15017122661',
statusCallback: '',
to: '+15558675310'
})
.then(message => console.log(message.sid));
我也确实需要一个/ status路由,但是我不确定如何将它们放在一起并将其添加到下面的代码中。
我的代码如下:
const http = require('http');
const express = require('express');
const MessagingResponse = require('twilio').twiml.MessagingResponse;
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
var itemList = [];
app.post('/sms', (req, res) => {
const twiml = new MessagingResponse();
const splitContent = req.body.Body.split(' ');
switch (splitContent[0]) {
case 'add':
itemList.push(splitContent.slice(1).join(' ')); // Slice 1 to start at the second item
twiml.message('Item added');
break;
case 'list':
var result = ''
var i = 1;
itemList.forEach(o => {
result += `${i}. ${o}\n`;
i++;
});
twiml.message(result);
break;
case 'remove':
itemList.splice(splitContent[1] - 1, 1); // Subtract 1 to get the index
twiml.message('Item removed');
break;
}
res.writeHead(200, { 'Content-Type': 'text/xml' });
res.end(twiml.toString());
});
http.createServer(app).listen(1337, () => {
console.log('Express server listening on port 1337');
});
我的输出需要更新我的外发回复消息,包括传递时间。我需要确保在终端上打印出状态更新。
答案 0 :(得分:1)
Twilio开发人员布道者在这里。 ?
此问题有两个部分。
第一 –您必须在MessagingResponse
中定义操作属性。您可以按照here中的说明进行操作。
对于您的代码,每个单独的响应看起来都像这样。 ?
twiml.message({
action: '/status',
method: 'POST'
}, result || 'No items');
第二 – action
属性中的url或路径定义一个HTTP端点,该端点将接收有关已发送消息的状态信息。在express(您正在使用的框架)中,您可以像这样定义一条新路线。 ?
app.post('/status', (req, res) => {
// log the status information
console.log(
req.body.MessageSid,
req.body.MessageStatus,
req.headers['x-twilio-signature']
);
});
您可以在their documentation中找到有关快递和路线的更多信息。
我将您的示例代码on Glitch(您可以在其中的云中轻松运行节点)并根据需要进行调整。 :)
让我知道是否有帮助。 :)