0

我正在使用 Twilio Functions (node.js) 将所有传入文本加载到 AirTable。我正在使用 2 张桌子 -

  • “接收文本”,包含“入站文本日期”、“入站文本内容”和“UID”列。
  • “用户”列“UID”和电话号码(“您的号码”)。

收到短信时,我只有电话号码。所以我尝试使用带有电话号码的FilterByFormula 从“用户”表中检索用户的UID。

这是我正在运行的代码 -

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

    var Airtable = require('airtable');
    var base = new Airtable({apiKey: context.AIRTABLE_API_KEY}).base('app######');


    var phone = event.From;
    var format_phone = // format to +1 (###) ###-####

    base('Users').select({
        filterByFormula: `Your Number = "${format_phone}"`,
        view: "Grid view"
    }).eachPage(function page(records, fetchNextPage) {
        records.forEach(function(record) {
            console.log(record.id);
        });
        fetchNextPage();
    }, function done(err) {
        if (err) { console.error(err); return; }
    });

    inputbase = 'Receive Text';
    message = {
        'UID' : ['rec#######'],
        'Inbound Text Date' : Date.now(),
        'Inbound Text Content' : event.Body,
    };

    base(inputbase).create(message, function(err, record) {
      if (err) { console.error(err); return; }
      console.log(record.getId());
      callback(null, message);
    });

};

现在进行测试,UID 是硬编码的,它工作正常。我不确定如何将来自 filterByFormula 的 UID 获取到变量中,或者直接获取到消息变量中。

UID 和电话号码都是“用户”中的唯一值,所以我不希望收到超过 1 条记录。

谢谢。

4

1 回答 1

0

试试这个,让我知道它是怎么回事。

    const Airtable = require('airtable');

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

    const base = new Airtable({apiKey: context.AIRTABLE_API_KEY}).base(context.AIRTABLE_DATABASE);

    const phone = event.From;
    const body = event.Body;

    function createRecord(UID) {
        const today = new Date();
        const date = `${(today.getMonth()+1)}/${today.getDate()}/${today.getFullYear()}`;

        const inputbase = 'Receive Text';

        const message = {
            'UID': UID,
            'Inbound Text Date': date,
            'Inbound Text Content': body,
        };

        base(inputbase).create(message, function(err, record) {
        if (err) { 
            console.error(err);
            callback("error");
            }
            console.log(record.getId());
            callback(null, message);
         });
    }


    base('Users').select({
        filterByFormula: `{Your Number} = "${phone}"`,
        view: "Grid view"
    }).firstPage().then(records => {
        if (!records[0]) {
            console.log("**NO MATCH**");
            createRecord("**NO MATCH**");
        } else {
            console.log("**MATCH**");
            createRecord(records[0].fields.UID);
          }
        })
    .catch(err => {
            console.log(err);
            callback("error");
    });
};
于 2020-04-18T14:29:11.697 回答