我在第一个自动驾驶任务中使用 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 请求时使用了几乎完全相同的代码,我将该调用返回的一些数据保存在变量中,所以它应该是相似的。
希望这有帮助。