【问题标题】:Calendar API Event Attendees Response Status always changes to "Needs Action"日历 API 事件参与者响应状态始终更改为“需要操作”
【发布时间】:2020-08-28 20:48:54
【问题描述】:

我正在从 salesforce 调出到 google 日历 api 以更新 google 活动。当我提出请求时,它总是将与会者状态更改为“NeedsAction”,因此当我向谷歌发送请求时,与会者状态为“已接受”,但作为回应,我得到了“NeedsAction”。为什么谷歌总是改变与会者的反应。如果有人知道,请帮忙。谢谢

请求正文:

{
  "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"
  }
 ],

【问题讨论】:

    标签: google-calendar-api


    【解决方案1】:

    建议修改:

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

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

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

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

    参考:

    Events patch

    【讨论】:

    • 非常感谢@Alessandro,只保留与会者解决了我的问题。
    猜你喜欢
    • 2020-09-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多