TwilioQuest
构建一个小型Web应用程序以支持我们的To-do Bot。您的漫游器应收到一条短信,查看该消息的正文,然后对以下三个命令之一进行确认SMS响应:“添加{{要做的事情}}”-add命令应将一个事情添加到待办事项中清单。例如,“添加购买牛奶”应添加名为“购买牛奶”的项目“列表”-list命令应在编号列表中返回待办事项列表中的每个项目。两个项目的列表将返回“ 1.购买牛奶2.洗衣服”“删除#”-remove命令应根据待办事项在列表中的位置将其删除。因此,“删除2”将从上方删除“洗衣服”项。要完成此目标,请在您的待办事项列表中添加一个名为“完成此目标”的项。您的待办事项应用应回复一条短信,以确认已添加该商品。然后在下面给我们您待办事项机器人的电话号码。
我在此twilio教程中使用NodeJS,但不确定如何设置编号列表和删除列表。到目前为止,我已经设置了
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 }));
app.post('/sms', (req, res) => {
const twiml = new MessagingResponse();
if (req.body.Body == 'add') {
twiml.message('buy milk');
...
...
);
}
res.writeHead(200, { 'Content-Type': 'text/xml' });
res.end(twiml.toString());
});
http.createServer(app).listen(1337, () => {
console.log('Express server listening on port 1337');
});
-需要提出这个- 在您的Web应用程序中创建一个新变量来存储我们用户的待办事项。对于本练习,不必担心让您的机器人一次支持多个用户。
更改Web应用程序中的“ / sms”路由,以查看每个传入文本消息中的第一个单词,并查看其是否与我们的任何命令匹配 如果命令是“ add”,则将邮件正文的其余部分作为条目添加到您的待办事项列表变量中。
如果命令是“列表”,则使用待办事项列表变量中每个项目的编号列表来响应文本消息。
如果命令是“ remove”,则使用用户指定的编号从待办事项列表变量中删除该项目。
我需要有关如何设置待办事项列表机器人的列表和删除命令的帮助
答案 0 :(得分:1)
代码应如下所示:
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());
});