在 NodeJS 中遇到"引用错误:日历未定义",但相同的代码在 Google 的 API 测试控制台中有效



尝试关注这篇博文 使用 Twilio、JavaScript 和 Google 日历创建智能语音邮件

当我在 Google Developer API 测试控制台中运行代码时,它可以工作。 但是,在运行 NodeJS 的 Twilio 函数中调用的相同参数返回错误"引用错误:未定义日历">

我已经公开了Google日历活动,并尝试使用公共网址查看它,它也可以工作。 出于某种原因,在 Twilio 函数中调用它会导致错误。

const moment = require('moment');
const {  google } = require('googleapis');
exports.handler = function(context, event, callback) {
// Initialize Google Calendar API
const cal = google.calendar({
version: 'v3',
auth: context.GOOGLE_API_KEY
});
//Read Appointment Date
let apptDate = event.ValidateFieldAnswer;
var status = false;
const res = {
timeMin: moment().toISOString(),
timeMax: moment().add(10, 'minutes').toISOString(),
items: [{
id: context.GOOGLE_CALENDAR_ID
}]
};
console.log(res);
cal.freebusy.query({
resource: res
}).then((result) => {
const busy = result.data.calendars[calendar].busy;
console.log("Busy: " + busy);
if (busy.length !== 0) {
let respObj1 = {
"valid": false
};
console.log("Failed");
callback(null, respObj1);
} else {
let respObj1 = {
"valid": true
};
console.log("Success");
callback(null, respObj1);
}
}).catch(err => {
console.log('Error: checkBusy ' + err);
let respObj1 = {
"valid": false
};
callback(null, respObj1);
});
};

您以前是否遇到过这种情况,或者有人能够在这里确定问题吗?

谢谢

这一行似乎是问题所在:

const busy = result.data.calendars[calendar].busy;

据我所知,calendar从未定义过。这应该可以代替:

const busy = result.data.calendars[context.GOOGLE_CALENDAR_ID].busy;

看起来这行代码在教程的"Google 日历忙闲查询"和"录制语音邮件"部分之间有所不同,需要在后一个代码示例中进行更新。

最新更新