【问题标题】:How to integrate Google Calendar?如何集成谷歌日历?
【发布时间】:2018-08-26 04:59:43
【问题描述】:

我正在尝试将 Google 日历与 DialogFlow 集成,但我遇到了困难。

我在项目的 Fulfillment 部分添加了以下代码,但我总是收到 Firebase 错误:

   TypeError: Cannot read property 'calendar' of undefined
    at createEvent (/user_code/index.js:70:27)
    at authorize (/user_code/index.js:33:5)
    at yourFunctionHandler (/user_code/index.js:122:5)
    at WebhookClient.handleRequest (/user_code/node_modules/dialogflow- 
    fulfillment/src/dialogflow-fulfillment.js:273:44)

代码:

const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
const fs = require('fs');
const readline = require('readline');
const {google}= require('googleapis');
const { OAuth2Client } = require("google-auth-library");

function authorize(credentials, callback) {
  const client_id = "xxxxxxxxx";
  const client_secret = "xxxxxxxxx";
  const redirect_uris = "xxxxxxxxx";

  const oauth2Client = new OAuth2Client(client_id, client_secret, redirect_uris[0]);
  oauth2Client.setCredentials(JSON.parse('xxxxxxxxx'));
  callback(oauth2Client);
}

function listEvents(auth) {
  google.events.list({
    auth:auth,
    calendarId: 'primary',
    timeMin: (new Date()).toISOString(),
    maxResults: 10,
    singleEvents: true,
    orderBy: 'startTime',
  }, (err, res) => {
    if (err) return console.log('The API returned an error: ' + err);
    const events = res.data.items;
    if (events.length) {
      console.log('Upcoming 10 events:');
      events.map((event, i) => {
        const start = event.start.dateTime || event.start.date;
        console.log(`${start} - ${event.summary}`);
      });
    } else {
      console.log('No upcoming events found.');
    }
  });
}

是否有人可以与我分享任何示例,以便我了解至少连接到 Google API 所需的流程?

谢谢

美国

【问题讨论】:

  • 已经正确标记了这个问题,因为人们可以识别出与dialogflowapi.ai 的零关系——这可能是你项目的一部分,但不是这个问题的一部分。

标签: javascript node.js google-calendar-api google-api-nodejs-client


【解决方案1】:

使用googleapis,您可以简单地创建客户端:

function listEvents(auth) {

    const calendar = google.calendar({version: 'v3', auth});

    calendar.events.list({
...

虽然我看不到任何“firebase 错误”或任何“对话流”;我想知道你为什么从nodejs quick-start 中删除了日历?对这个问题投了反对票,因为它侮辱了我的智力,受到这样一个捏造的问题的挑战 - 只需将 A 与 B 进行比较,您就可以理解。

【讨论】:

  • 您在上面发布的代码在 DialogFlow 之外工作,我删除了日历,因为它引发以下错误:TypeError: Cannot read property 'calendar' of undefined at listEvents (/user_code/index.js :70:27) 在 webhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow) 的 yourFunctionHandler (/user_code/index.js:122:5) 授权 (/user_code/index.js:33:5) -fulfillment.js:273:44) 在exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:158:9) 在cloudFunction (/user_code/node_modules/
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多