如何设置待办事项列表以使用Twilio接收和发送SMS

时间:2019-06-12 19:37:08

标签: node.js sms twilio

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”,则使用用户指定的编号从待办事项列表变量中删除该项目。

我需要有关如何设置待办事项列表机器人的列表和删除命令的帮助

1 个答案:

答案 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());
});