如何设置待办事项列表以使用 Twilio 接收和发送短信
How to set up a Todo List to receive and send SMS with Twilio
TwilioQuest
构建一个小型 Web 应用程序来为我们的待办事项机器人提供支持。您的 bot 应该会收到一条短信,查看消息的正文,然后用确认短信响应以下三个命令之一: "add {{ thing to do }}" - 添加命令应该向待办事项列表中添加一件事。例如,"add buy milk" 应该添加一个名为 "buy milk" "list" 的项目 - 列表命令应该 return 编号列表中待办事项列表中的每个项目。两个项目的列表将 return “1. 买牛奶 2. 洗衣服” "remove #" - 删除命令应根据项目在列表中的位置从待办事项列表中删除该项目。所以 "remove 2" 会从上面删除 "Wash clothes" 项目 要完成这个 objective,请在你的待办事项列表中添加一个名为 "Complete this objective." 的项目 你的待办事项应用程序应该回复确认该项目已添加的短信。然后在下面给我们您的待办事项机器人的 phone 号码。
我在这个 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 应用程序中创建一个新变量来存储我们用户的待办事项。对于本练习,不必担心让您的机器人一次支持多个用户。
更改网络应用程序中的“/sms”路由,以查看每条传入短信中的第一个单词,看看它是否与我们的任何命令匹配
如果命令是 "add",则将消息正文的其余部分添加为待办事项列表变量中的条目。
如果命令是 "list",则使用待办事项列表变量中每个项目的编号列表回复短信。
如果命令是 "remove",则使用用户指定的数字从待办事项列表变量中删除该项目。
我需要有关如何为待办事项列表机器人设置列表和删除命令的帮助
代码应如下所示:
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());
});
TwilioQuest
构建一个小型 Web 应用程序来为我们的待办事项机器人提供支持。您的 bot 应该会收到一条短信,查看消息的正文,然后用确认短信响应以下三个命令之一: "add {{ thing to do }}" - 添加命令应该向待办事项列表中添加一件事。例如,"add buy milk" 应该添加一个名为 "buy milk" "list" 的项目 - 列表命令应该 return 编号列表中待办事项列表中的每个项目。两个项目的列表将 return “1. 买牛奶 2. 洗衣服” "remove #" - 删除命令应根据项目在列表中的位置从待办事项列表中删除该项目。所以 "remove 2" 会从上面删除 "Wash clothes" 项目 要完成这个 objective,请在你的待办事项列表中添加一个名为 "Complete this objective." 的项目 你的待办事项应用程序应该回复确认该项目已添加的短信。然后在下面给我们您的待办事项机器人的 phone 号码。
我在这个 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 应用程序中创建一个新变量来存储我们用户的待办事项。对于本练习,不必担心让您的机器人一次支持多个用户。
更改网络应用程序中的“/sms”路由,以查看每条传入短信中的第一个单词,看看它是否与我们的任何命令匹配 如果命令是 "add",则将消息正文的其余部分添加为待办事项列表变量中的条目。
如果命令是 "list",则使用待办事项列表变量中每个项目的编号列表回复短信。
如果命令是 "remove",则使用用户指定的数字从待办事项列表变量中删除该项目。
我需要有关如何为待办事项列表机器人设置列表和删除命令的帮助
代码应如下所示:
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());
});