多个日期条目

Posted

技术标签:

【中文标题】多个日期条目【英文标题】:Multiple date entries 【发布时间】:2019-11-02 17:31:19 【问题描述】:

这是一些意图和实体的图像

我正在从用户那里收集日期以创建谷歌日历事件,但是一旦我添加第二个日期的代码,即使它没有被使用,它也无法在两个日期中的任何一个日期工作 它在firebase中给出了这个错误:

TypeError:无法读取未定义的属性“拆分” 在exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/srv/index.js:38:68) 在 cloudFunction (/srv/node_modules/firebase-functions/lib/providers/https.js:37:41) 在 /worker/worker.js:783:7 在 /worker/worker.js:766:11 在 _combinedTickCallback (内部/进程/next_tick.js:132:7) 在 process._tickDomainCallback (internal/process/next_tick.js:219:9)

这是我的代码

   function makeAppointment2 (agent) 
   const dateTimeStart = new Date(Date.parse(agent.parameters.date.split('T')[0] + 'T' + agent.parameters.time.split('T')[1].split('+')[0] + timeZoneOffset));
   const dateTimeEnd = new Date(new Date(dateTimeStart).setHours(dateTimeStart.getHours() + 1));
   const dateTimeStart2 = new Date(Date.parse(agent.parameters.date2.split('T')[0] + 'T' + agent.parameters.time2.split('T')[1].split('+')[0] + timeZoneOffset));
   const dateTimeEnd2 = new Date(new Date(dateTimeStart2).setHours(dateTimeStart2.getHours() + 1));
   const appointmentTimeString = dateTimeStart.toLocaleString(
     'en-US',
      month: 'long', day: 'numeric', hour: 'numeric', timeZone: timeZone 
   );
   const appointmentTimeString2 = dateTimeStart2.toLocaleString(
     'en-US',
      month: 'long', day: 'numeric', hour: 'numeric', timeZone: timeZone 
   );
   return createCalendarEvent2(dateTimeStart, dateTimeEnd, name, location, dateTimeStart2, dateTimeEnd2).then(() => 
     agent.add(`Great Mr/Mrs $name, your appointment has been scheduled on $appointmentTimeString & $appointmentTimeString2!.`);
     agent.add(`$response2`);
   ).catch(() => 
     agent.add(`I'm sorry Mr/Mrs $name, there are no slots available for $appointmentTimeString Please choose another date.`);
   );
 function createCalendarEvent2 (dateTimeStart, dateTimeEnd, appointment_name, location, dateTimeStart2, dateTimeEnd2) 
  return new Promise((resolve, reject) => 
    calendar.events.list(
      auth: serviceAccountAuth,
      calendarId: calendarId,
      timeMin: dateTimeStart.toISOString(),
      timeMax: dateTimeEnd.toISOString()
    , (err, calendarResponse) => 

      if (err || calendarResponse.data.items.length > 0) 
        reject(err || new Error('Requested time conflicts with another appointment'));
       else 

        calendar.events.insert( auth: serviceAccountAuth,
          calendarId: calendarId,
          resource: 
   'summary': appointment_name + "1st" ,
   'description': location,
   'start': 
     'dateTime': dateTimeStart,
   ,
   'end': 
     'dateTime': dateTimeEnd,
   ,
  ,
        , (err, event) => 
          err ? reject(err) : resolve(event);
        
        );
      
    );
    calendar.events.list(
      auth: serviceAccountAuth,
      calendarId: calendarId,
      timeMin: dateTimeStart2.toISOString(),
      timeMax: dateTimeEnd2.toISOString()
    , (err, calendarResponse) => 

      if (err || calendarResponse.data.items.length > 0) 
        reject(err || new Error('Requested time conflicts with another appointment'));
       else 

        calendar.events.insert( auth: serviceAccountAuth,
          calendarId: calendarId,
          resource: 
   'summary': appointment_name + "2nd" ,
   'description': location,
   'start': 
     'dateTime': dateTimeStart2,
   ,
   'end': 
     'dateTime': dateTimeEnd2,
   ,
   ,
        , (err, event) => 
          err ? reject(err) : resolve(event);
        
        );
      
    );

  );

【问题讨论】:

你能提供你正在使用的意图和实体的截图吗? 我可以将您的电子邮件添加到项目中 这段代码是为appointment 意图处理程序还是appointment2 意图处理程序调用的? (就此而言,您如何设置处理程序?) 这是一个通用常量,我想稍后使用它来单独调用每个常量,就像我有 date1 和 date2 一样,所以我做了意向预约 2,如果调用它需要参数 date2 和 date1 并创建 2事件和约会相同,但我会尝试 suugests 并将其放入函数中并查看 【参考方案1】:

我建议在您的履行中提取这样的参数:

 function botHandler(agent) 
        let state = agent.parameters["stateName"];
        let uState = state.toUpperCase();
        let answer = "So you live in " + uState + "?";

        agent.add(answer);
    

您可以通过这种方式检查参数是否存在:

if (agent.parameters["stateName"]) 
    //do stuff here

我认为它崩溃是因为没有意图存在。

【讨论】:

这个建议效果很好,但现在我坚持使用创建事件的功能它似乎没有任何想法? 您应该为这位先生提出一个新问题! ***.com/questions/56702126/… 恐怕我没有使用 Google Calendar API 的经验。对不起

以上是关于多个日期条目的主要内容,如果未能解决你的问题,请参考以下文章

需要将日期范围转换为 MySQL 中的多个日期条目

使用单个查询获取每个多个日期间隔的条目数

多个 pod/微服务更新/插入同一条记录

核心数据 - 单个实体的多个条目

如何在 SQL 2005 中循环访问多个登录条目并计算登录次数和时间?

如何根据多个by-record标准从data.table中提取特定字段?