将会议添加到活动 Google Calendar API

Posted

技术标签:

【中文标题】将会议添加到活动 Google Calendar API【英文标题】:Add conference to event Google Calendar API 【发布时间】:2021-05-22 11:16:27 【问题描述】:

我可以创建活动,但我无法通过会议创建活动。

我尝试了所有这些类型:“eventHangout”“eventNamedHangout”“hangoutsMeet”,但仍然得到会议类型值无效

Google.GoogleApiException: 'Google.Apis.Requests.RequestError
Invalid conference type value. [400]
Errors [
  Message[Invalid conference type value.] Location[ - ] Reason[invalid] Domain[global]
]

这是创建和执行事件的代码:

CalendarService service = GetCalendarService();

EventDateTime start = new EventDateTime();
start.DateTime = new DateTime(2021, 02, 19, 18, 47, 0);

EventDateTime end = new EventDateTime();
end.DateTime = new DateTime(2021, 02, 19, 18, 50, 0);

Event newEvent = new Event();
newEvent.Start = start;
newEvent.End = end;
newEvent.Summary = "New event";
newEvent.Description = "description";

newEvent.ConferenceData = CreateConferenceData();

EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId);
request.ConferenceDataVersion = 1;
Event createdEvent = request.Execute();

这里是 CreateConferenceData() 方法的代码:

 ConferenceData conferenceData = new ConferenceData()
 
     CreateRequest = new CreateConferenceRequest()
     
          RequestId = Guid.NewGuid().ToString(),
          ConferenceSolutionKey = new ConferenceSolutionKey()
          
             Type = "hangoutsMeet" // Change according to your preferences
          ;
     
 ;

 return conferenceData;

【问题讨论】:

我怀疑问题在于您指定了CreateRequest ConferenceSolution。文档说“需要会议解决方案和至少一个入口点,或者需要 createRequest。”我会尝试只指定 ConferenceSolution+EntryPoints,或者只指定 CreateRequest。 @JonSkeet 谢谢你的回答。我刚刚尝试只使用 CreateRequest 并得到了 BadRequest 而没有消息,我认为我的方法是正确的 那么我会尝试just ConferenceSolution+EntryPoint。文档似乎确实不鼓励您指定所有三个。 @JonSkeet CreateRequest 和 ConferenceSolution+EntryPoints 均无效。再次回到同一个例外:(但无论如何谢谢 好的。您可能想尝试使用 API Explorer 进行试验。如果这是客户端库问题,我会感到非常惊讶,但我想这只是可能。您可能想通过developers.google.com/calendar/support 中链接的错误跟踪器提交问题 - 如果没有别的,更清晰的错误消息显然会有所帮助。 【参考方案1】:

这是我的服务,完美的会议活动

            _calenarService = new CalendarService(new BaseClientService.Initializer()
            
                HttpClientInitializer = GenerateCredentials(),
                ApplicationName = this._applicationName
            );


        var myEvent = new Event
        
            Summary = "Google Calendar API Testing ",
            Location = "Islamabad, Punjab, Pakistan",
            Start = new EventDateTime()
            
                DateTime = new DateTime(2021, 4, 5, 14, 0, 0),
                TimeZone = "Asia/Karachi"
            ,
            End = new EventDateTime()
            
                DateTime = new DateTime(2021, 9, 10, 15, 0, 0),
                TimeZone = "Asia/Karachi"
            ,


            Recurrence = new String[]  "RRULE:FREQ=WEEKLY;BYDAY=MO" ,
            //If you want to add attendee
            //Attendees = new List<EventAttendee>()
            //
            //    new EventAttendee  Email = "......com" ,
            //    new EventAttendee  Email = "......." 
            //,

           ConferenceData = new ConferenceData
            
                ConferenceSolution = new ConferenceSolution
                
                    Key = new ConferenceSolutionKey
                    
                        Type = "hangoutsMeet"
                    
                ,

               CreateRequest = new CreateConferenceRequest
               
                   RequestId = "qwerfsdiob",
                   ConferenceSolutionKey = new ConferenceSolutionKey
                   
                       Type = "hangoutsMeet"
                   ,

                  
               ,

               EntryPoints = new List<EntryPoint> ()
                
                    
                     new EntryPoint  EntryPointType = "video"  ,
                  

                
               
            

            
        ;

        var recurringEvent = _calenarService.Events.Insert(myEvent, "primary");
        recurringEvent.SendNotifications = true;
        recurringEvent.ConferenceDataVersion = 1;
        
        Event eventData = recurringEvent.Execute();

【讨论】:

使用像你这样的ConferenceData 肯定仍然会给我“无效的会议数据”

以上是关于将会议添加到活动 Google Calendar API的主要内容,如果未能解决你的问题,请参考以下文章

查看 Google 日历中创建的每个活动的会议链接

如何通过 API 将 URL 或 Zoom 会议 ID 添加到 Google 日历

ruby Google Calendar API - 活动列表

Google Calendar API - 创建事件 PHP

Google Calendar API 活动地点

Google Calendar API停止了返回活动