我在第一个Autopilot任务中使用Collect从用户那里获取日期(即2019年1月31日)。然后,我尝试使用该变量(date)在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"
}发布于 2019-02-03 09:36:43
我是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请求时使用了几乎完全相同的代码,我将调用返回的一些数据保存在一个变量中,因此应该是相似的。
希望这能有所帮助。
https://stackoverflow.com/questions/54497948
复制相似问题