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



我在第一个自动驾驶任务中使用 Collect 从用户那里获取日期(即 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"
}

这里的Twilio布道者。

如果你的Airtable Get代码还没有,它应该进入一个Twilio函数(支持Node.js)!,它指向一个Autopilot任务,其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 请求时使用了几乎完全相同的代码,我将该调用返回的一些数据保存在变量中,所以它应该是相似的。

希望这有帮助。

最新更新