Proponer nuevos horarios de reunión en el calendario de Outlook
En Outlook, el organizador de la reunión puede permitir a los invitados proponer horas alternativas para las reuniones, si no pueden reunirse en la fecha/hora fijada originalmente además de aceptar de forma provisional o declinar la reunión. El organizador puede aceptar una propuesta ajustando la hora de la reunión según corresponda.
Por ejemplo: el participante responde de forma provisional y sugiere una fecha/hora diferente.
El siguiente es un ejemplo donde Alex invita a Adele a almorzar, Adele acepta de forma provisional y propone una fecha y hora alternativa, y Alex acepta la propuesta ajustando la reunión en consecuencia:
Como organizador, Alex envía una convocatoria de reunión a Adele. Él configura la propiedad allowNewTimeProposals del event a
true
para que Adele sugiera otra hora si lo necesita.POST https://graph.microsoft.com/v1.0/me/events Prefer: outlook.timezone="Pacific Standard Time" Content-type: application/json { "subject": "Let's go for lunch", "body": { "contentType": "HTML", "content": "Does noon work for you?" }, "start": { "dateTime": "2019-08-15T12:00:00", "timeZone": "Pacific Standard Time" }, "end": { "dateTime": "2019-08-15T14:00:00", "timeZone": "Pacific Standard Time" }, "allowNewTimeProposals": true, "location":{ "displayName":"Harry's Bar" }, "attendees": [ { "emailAddress": { "address":"AdeleV@contoso.com", "name": "Adele Vance" }, "type": "required" } ] }
Alex obtiene la respuesta siguiente:
HTTP/1.1 201 Created Content-type: application/json { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/events/$entity", "@odata.etag": "W/\"NEXywgsVrkeNsFsyVyRrtAAAAhBhkg==\"", "id": "AAMkADAwJXJGu0AAACEhWOAAA=", "createdDateTime": "2019-08-01T06:41:07.805128Z", "lastModifiedDateTime": "2019-08-01T06:41:08.3298275Z", "changeKey": "NEXywgsVrkeNsFsyVyRrtAAAAhBhkg==", "categories": [], "originalStartTimeZone": "Pacific Standard Time", "originalEndTimeZone": "Pacific Standard Time", "reminderMinutesBeforeStart": 15, "isReminderOn": true, "hasAttachments": false, "subject": "Let's go for lunch", "bodyPreview": "Does noon work for you?", "importance": "normal", "sensitivity": "normal", "isAllDay": false, "isCancelled": false, "isOrganizer": true, "responseRequested": true, "seriesMasterId": null, "showAs": "busy", "type": "singleInstance", "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADAwJXJGu0AAACEhWOAAA%3D&exvsurl=1&path=/calendar/item", "onlineMeetingUrl": null, "allowNewTimeProposals": true, "recurrence": null, "responseStatus": { "response": "organizer", "time": "0001-01-01T00:00:00Z" }, "body": { "contentType": "html", "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=us-ascii\">\r\n</head>\r\n<body>\r\nDoes late morning work for you?\r\n</body>\r\n</html>\r\n" }, "start": { "dateTime": "2019-08-15T12:00:00.0000000", "timeZone": "Pacific Standard Time" }, "end": { "dateTime": "2019-08-15T14:00:00.0000000", "timeZone": "Pacific Standard Time" }, "location": { "displayName": "Harry's Bar", "locationType": "default", "uniqueId": "Harry's Bar", "uniqueIdType": "private" }, "locations": [ { "displayName": "Harry's Bar", "locationType": "default", "uniqueId": "Harry's Bar", "uniqueIdType": "private" } ], "attendees": [ { "type": "required", "status": { "response": "none", "time": "0001-01-01T00:00:00Z" }, "emailAddress": { "name": "Adele Vance", "address": "AdeleV@contoso.com" } } ], "organizer": { "emailAddress": { "name": "Alex Wilber", "address": "AlexW@contoso.com" } } }
Adele recibe la invitación en su bandeja de entrada como un eventMessageRequest. Y observa que la propiedad allowNewTimeProposals está configurada. Utilizando el event asociado con este eventMessageRequest, hace una respuesta de forma provisional y propone el día siguiente a la misma hora, en el cuerpo del parámetro proposedNewTime. También configura el parámetro sendResponse en true.
POST https://graph.microsoft.com/v1.0/me/events/AAMkADU5NRaRqdoI4oeRpAAAB_woNAAA=/tentativelyAccept Content-type: application/json { "comment": "Can you make the next day instead?", "sendResponse": "true", "proposedNewTime": { "Start": { "DateTime": "2019-08-16T12:00:00", "TimeZone": "Pacific Standard Time" }, "End": { "DateTime": "2019-08-16T14:00:00", "TimeZone": "Pacific Standard Time" } } }
La respuesta de Adele se envía con éxito y obtiene la siguiente respuesta:
HTTP/1.1 202 Accepted
Alex recibe un correo electrónico del tipo eventMessageResponse. Y observa lo siguiente:
- El asunto incluye un prefijo y dice "Nueva hora propuesta: vayamos a almorzar"
- El remitente es Adele Vance
- La responseType es
tentativelyAccepted
- La propuesta de Adele está en la propiedad proposedNewTime del eventMessageResponse
GET https://graph.microsoft.com/v1.0/me/messages?$top=1 Prefer: outlook.timezone="Pacific Standard Time"
Para propósitos de demostración, asuma que la respuesta de Adele es el último mensaje en el buzón de Alex, y Alex puede simplemente solicitar ese último mensaje.
HTTP/1.1 200 OK Content-type: application/json Preference-Applied: outlook.timezone="Pacific Standard Time" { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/messages", "@odata.nextLink": "https://graph.microsoft.com/v1.0/me/messages?$top=1&$skip=4"", "value": [ { "@odata.type": "#microsoft.graph.eventMessageResponse", "@odata.etag": "W/\"DAAAABYAAAA0RfLCCxWuR42wWzJXJGu0AAACEGHC\"", "id": "AAMkADAwJXJGu0AAACEiVAAAA=", "createdDateTime": "2019-08-01T07:06:27Z", "lastModifiedDateTime": "2019-08-01T07:06:28Z", "changeKey": "DAAAABYAAAA0RfLCCxWuR42wWzJXJGu0AAACEGHC", "categories": [], "receivedDateTime": "2019-08-01T07:06:28Z", "sentDateTime": "2019-08-01T07:06:24Z", "hasAttachments": false, "internetMessageId": "<BY5PR17MB38759D33B8925D525A476F33D9DE0@contoso.outlook.com>", "subject": "New Time Proposed: Let's go for lunch", "bodyPreview": "Can you make the next day instead?", "importance": "normal", "parentFolderId": "AQMkADAwQAAAIBDAAAAA==", "conversationId": "AAQkADAwQAQAMkh89RO3QpBiUCETTtVbIo=", "conversationIndex": "AdVINBlgySHz1E7dCkGJQIRNO1VsigAA4n6R", "isDeliveryReceiptRequested": null, "isReadReceiptRequested": false, "isRead": false, "isDraft": false, "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADAwJXJGu0AAACEiVAAAA%3D&exvsurl=1&viewmodel=ReadMessageItem", "inferenceClassification": "focused", "unsubscribeData": [], "unsubscribeEnabled": false, "meetingMessageType": "meetingTentativelyAccepted", "type": "singleInstance", "isOutOfDate": false, "isAllDay": false, "isDelegated": false, "responseType": "tentativelyAccepted", "recurrence": null, "body": { "contentType": "html", "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=us-ascii\">\r\n</head>\r\n<body>\r\nCan you make the next day instead?\r\n</body>\r\n</html>\r\n" }, "sender": { "emailAddress": { "name": "Adele Vance", "address": "AdeleV@contoso.com" } }, "from": { "emailAddress": { "name": "Adele Vance", "address": "AdeleV@contoso.com" } }, "toRecipients": [ { "emailAddress": { "name": "Alex Wilber", "address": "AlexW@contoso.com" } } ], "ccRecipients": [], "bccRecipients": [], "replyTo": [], "flag": { "flagStatus": "notFlagged" }, "startDateTime": { "dateTime": "2019-08-15T12:00:00.0000000", "timeZone": "Pacific Standard Time" }, "endDateTime": { "dateTime": "2019-08-15T14:00:00.0000000", "timeZone": "Pacific Standard Time" }, "location": { "displayName": "Harry's Bar", "locationType": "default", "uniqueIdType": "unknown" }, "proposedNewTime": { "start": { "dateTime": "2019-08-16T12:00:00", "timeZone": "Pacific Standard Time" }, "end": { "dateTime": "2019-08-16T14:00:00", "timeZone": "Pacific Standard Time" } } } ] }
Alex también nota que el event para el almuerzo ahora incluye una propiedad proposedNewTime que indica la propuesta de Adele. Esta propiedad sólo se encuentra como parte de una instancia del asistente si el asistente correspondiente ha sugerido una hora de reunión alternativa.
GET https://graph.microsoft.com/v1.0/me/events/AAMkADAwJXJGu0AAACEhWOAAA=?$select=subject,allowNewTimeProposals,start,end,attendees,organizer Prefer: outlook.timezone="Pacific Standard Time"
HTTP/1.1 200 Ok { "@odata.context": "https://graph.microsoft.com/testexchangev1.0/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/events(subject,allowNewTimeProposals,start,end,attendees,organizer)/$entity", "@odata.etag": "W/\"NEXywgsVrkeNsFsyVyRrtAAAAhEDMA==\"", "id": "AAMkADAwJXJGu0AAACEhWOAAA=", "subject": "Let's go for lunch", "allowNewTimeProposals": true, "start": { "dateTime": "2019-08-15T12:00:00.0000000", "timeZone": "Pacific Standard Time" }, "end": { "dateTime": "2019-08-15T14:00:00.0000000", "timeZone": "Pacific Standard Time" }, "attendees": [ { "type": "required", "status": { "response": "tentativelyAccepted", "time": "2019-08-01T07:06:24.5046431Z" }, "proposedNewTime": { "start": { "dateTime": "2019-08-16T12:00:00.0000000", "timeZone": "Pacific Standard Time" }, "end": { "dateTime": "2019-08-16T14:00:00.0000000", "timeZone": "Pacific Standard Time" } }, "emailAddress": { "name": "Adele Vance", "address": "AdeleV@contoso.com" } } ], "organizer": { "emailAddress": { "name": "Alex Wilber", "address": "AlexW@contoso.com" } } }
Alex decide aceptar la propuesta de Adele actualizando el event a la propuesta start y end fecha/hora.
PATCH https://graph.microsoft.com/v1.0/me/events/AAMkADAwJXJGu0AAACEhWOAAA= Prefer: outlook.timezone="Pacific Standard Time" Content-type: application/json { "start": { "dateTime": "2019-08-16T12:00:00.0000000", "timeZone": "Pacific Standard Time" }, "end": { "dateTime": "2019-08-16T14:00:00.0000000", "timeZone": "Pacific Standard Time" } }
La actualización de Alex tiene éxito y obtiene la siguiente respuesta.
HTTP/1.1 200 Ok { "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/events/$entity", "@odata.etag": "W/\"NEXywgsVrkeNsFsyVyRrtAAAAhBizA==\"", "id": "AAMkADAwJXJGu0AAACEhWOAAA=", "createdDateTime": "2019-08-01T06:41:07.805128Z", "lastModifiedDateTime": "2019-08-01T08:21:43.5696529Z", "changeKey": "NEXywgsVrkeNsFsyVyRrtAAAAhBizA==", "categories": [], "originalStartTimeZone": "Pacific Standard Time", "originalEndTimeZone": "Pacific Standard Time", "reminderMinutesBeforeStart": 15, "isReminderOn": true, "hasAttachments": false, "subject": "Let's go for lunch", "bodyPreview": "Does noon work for you?", "importance": "normal", "sensitivity": "normal", "isAllDay": false, "isCancelled": false, "isOrganizer": true, "responseRequested": true, "seriesMasterId": null, "showAs": "busy", "type": "singleInstance", "webLink": "https://outlook.office365.com/owa/?itemid=AAMkADAwJXJGu0AAACEhWOAAA%3D&exvsurl=1&path=/calendar/item", "onlineMeetingUrl": null, "allowNewTimeProposals": true, "recurrence": null, "responseStatus": { "response": "organizer", "time": "0001-01-01T00:00:00Z" }, "body": { "contentType": "html", "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=us-ascii\">\r\n</head>\r\n<body>\r\nDoes noon work for you?\r\n</body>\r\n</html>\r\n" }, "start": { "dateTime": "2019-08-16T12:00:00.0000000", "timeZone": "Pacific Standard Time" }, "end": { "dateTime": "2019-08-16T14:00:00.0000000", "timeZone": "Pacific Standard Time" }, "location": { "displayName": "Harry's Bar", "locationType": "default", "uniqueId": "Harry's Bar", "uniqueIdType": "private" }, "locations": [ { "displayName": "Harry's Bar", "locationType": "default", "uniqueId": "Harry's Bar", "uniqueIdType": "private" } ], "attendees": [ { "type": "required", "status": { "response": "notResponded", "time": "4501-01-01T00:00:00Z" }, "emailAddress": { "name": "Adele Vance", "address": "AdeleV@contoso.com" } } ], "organizer": { "emailAddress": { "name": "Alex Wilber", "address": "AlexW@contoso.com" } } }
Ningún asistente propone una hora alternativa
En el paso 2, si Adele contestaba de forma provisional o rechazaba la reunión, y no proponía una fecha/hora diferente, entonces sucedería lo siguiente:
- En el paso 3, Alex recibiría una eventMessageResponse con la propiedad responseType configurada en
tentativelyAccepted
(odecline
si Adele rechazó). Alex no encontraría una propiedad proposedNewTime en esta instancia de eventMessageResponse. - En el paso 4, Alex tampoco encontraría una propiedad proposedNewTime en el event asociado.