日历 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”功能。
参考:
我正在从销售人员向 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”功能。