日历 API 活动参与者响应状态始终更改为 "Needs Action"

Calendar API Event Attendees Response Status always changes to "Needs Action"

我正在从销售人员向 google 日历 api 发出标注以更新 google 事件。当我发出请求时,它总是将与会者状态更改为“NeedsAction”,因此当我向 google 发送请求时,与会者状态为“已接受”,但作为回应我得到了“NeedsAction”。为什么 google 总是更改与会者的响应。如果有人知道请帮助。谢谢

请求正文:

{
  "kind" : "calendar#event",
  "summary" : "nice 13 val",
  "description" : "this is new",
  "location" : "3 value friday",
  "start" : {
    "dateTime" : "2020-08-13T12:30:00+05:00"
  },
  "end" : {
    "dateTime" : "2020-08-13T13:30:00+05:00"
  },
  "attendees" : [ {
    "email" : "mohit.kumar@test.in",
    "organizer" : true,
    "responseStatus" : "accepted"
  }, {
    "email" : "test@gmail.com",
    "responseStatus" : "accepted"
  } ]
}

标注:

Http http = new Http();
HttpRequest httpReq = new HttpRequest();
            httpReq.setEndpoint('https://www.googleapis.com/calendar/v3/calendars/mohit.kumar@test.in/events/'+objEvent.Google_Event_Id__c);
httpReq.setTimeout(30000);
 httpReq.setHeader('Content-Type', 'application/json');
 httpReq.setMethod('POST');
 httpReq.setHeader('X-HTTP-Method-Override','PATCH');
 httpReq.setHeader('Authorization', 'Bearer ' + accessToken);
 String reqBody = createEventBody(objEvent, googleSettingInfo);
 if (String.isNotBlank(reqBody)) {
     httpReq.setBody(reqBody);
 }
if (httpReq.getBody() != null && httpReq.getBody() != '') {

    HttpResponse httpRes = http.send(httpReq);
    System.debug('code: ' + httpRes.getStatusCode());
    if (httpRes.getStatusCode() == 200) {
        System.debug('response: ' + httpRes);
        System.debug('create event response body: ' + httpRes.getBody());
    }
}

让与会者的反应总是“需要采取行动”,而对于“test@gmail.com”这应该是“接受”

{
 
 "created": "2020-08-11T18:51:41.000Z",
 "updated": "2020-08-28T06:48:49.972Z",
 "summary": "nice 13 val",
 "description": "this is new",
 "location": "3 value friday",
 "creator": {
  "email": "mohit.kumar@test.in",
  "self": true
 },
 "organizer": {
  "email": "mohit.kumar@test.in",
  "self": true
 },
 "start": {
  "dateTime": "2020-08-13T14:00:00+05:30"
 },
 "end": {
  "dateTime": "2020-08-13T15:00:00+05:30"
 },
 "sequence": 16,
 "attendees": [
  {
   "email": "test@gmail.com",
   "responseStatus": "needsAction"
  },
  {
   "email": "mohit.kumar@test.in",
   "organizer": true,
   "self": true,
   "responseStatus": "accepted"
  }
 ],

建议修改:

如何修改 createEventBody 函数以创建一个简单的 JSON 对象,该对象将仅包含具有更新状态的 attendees 信息。

这将正确利用 PATCH 语义并有助于提高可读性。

我自己测试了它,你生成的 JSON 对象 returns 在 start 属性 上出错了。删除它也将帮助您解决该错误。最后,我测试了将 attendees 属性 传递给 PATCH 方法是否会按预期工作。

您可以在实际更新代码之前尝试使用“试试这个 API”功能。

参考:

Events patch