Twilio Autopilot:如何从Airtable中提取数据并将结果返回给用户?

时间:2019-02-02 22:01:45

标签: twilio

我在第一个自动驾驶任务中使用``收集''从用户那里获取日期(即2019年1月31日)。然后,我尝试使用该变量(日期)在Airtable数据库中搜索该特定行。我想将该行的结果返回给用户(“ 1月31日,主剧院正在播放这部电影,另一剧院正在播放...)。

下面是我的Airtable Get代码,但是我不确定如何将返回的数据分配给我可以读回给用户的变量。

exports.handler = function(context, event, callback) {

var Airtable = require('airtable');
var base = new Airtable({apiKey: 
'apikey'}).base('basekey');

base('Blockouts').find('recbGHAQopLQdCOHK', function(err, record) {
if (err) { console.error(err); return; }
console.log(record);
});
}

这是Airtable将发回的输出:

{
    "id": "recbGHAQopLQdCOHK",
    "fields": {
        "Date": "2019-02-02",
        "Main Theater": "Star Wars",
        "Other Theater": "Avengers"
    },
    "createdTime": "2019-02-02T21:21:48.000Z"
}

1 个答案:

答案 0 :(得分:2)

这里是Twilio的传播者。

如果您的Airtable Get代码尚不存在,则应使用Twilio函数(which supports Node.js)!指向其actions代码具有类似以下内容的自动驾驶任务:

{
    "actions": [
        {
            "redirect": {
                "uri": "https://your-twilio-function-path.twil.io/airtable-or-whatever-if-this-is-your-path"
            }
        }
    ]
}

然后在Twilio函数/ Airtable Get代码中,应修改Twilio Response对象以接受所有请求的来源,并使它们看起来像这样:

exports.handler = function(context, event, callback) {
    let response = new Twilio.Response();
    let headers = {
        "Access-Control-Allow-Origin": "*",
        "Content-Type": "application/json"
    };
    var responseObject = {"actions":[
                     { "say": "Try again" } 
                     ]};
    response.setHeaders(headers);
    var Airtable = require('airtable');
    var base = new Airtable({apiKey: 'apikey'}).base('basekey');
    base('Blockouts').find('recbGHAQopLQdCOHK', function(err, record) {
        if (err) { console.error(err); return; }
        console.log(record);

    }).then(res => {
       var date = res.data[0].fields.date;
       responseObject = {"actions":[
            { "say": date } 
            ]};
       callback(null, responseObject);
    });
};

我尚未使用您的Airtable输出(程序员的著名遗言)测试此代码,但在向API提出Axios请求时使用了几乎完全相同的代码,其中我将该调用返回的一些数据保存到了变量,因此应该相似。

希望这会有所帮助。