«ReferenceError: календарь не определен» встречается в NodeJS, но тот же код работает в API Test Console в Google - PullRequest
1 голос
/ 23 января 2020

Попытка подписаться на эту запись в блоге Создание Smart Voicemail с Twilio, JavaScript и Календарем Google

Когда я запускаю код в Консоли тестирования Google Developer API, все работает. Однако те же параметры, которые вызываются в функции Twilio, которая запускает NodeJS, возвращают ошибку «ReferenceError: календарь не определен» *

Я опубликовал события Календаря Google c и попытался просмотреть его используя URL-адрес publi c, и он тоже работает. По какой-то причине, если вызвать его без использования функций 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);
  });

};

Сталкивались ли вы с этим раньше или кто-нибудь может выявить проблему здесь?

Спасибо

1 Ответ

1 голос
/ 24 января 2020

Эта строка, похоже, является проблемой:

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

Насколько я могу судить, calendar никогда не определяется. Это должно работать вместо:

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

Похоже, что эта строка кода отличается между разделами учебника "Запросы Google Calendar FreeBusy" и "Запись голосовых сообщений" и должна обновиться в последнем примере кода.

...