Compartir a través de


Proponer una nueva hora de reunión mediante EWS en Exchange

Descubra cómo proponer nuevas horas de reunión desde la aplicación cliente de Exchange mediante EWS en Exchange.

La característica proponer nueva hora permite a los asistentes proponer nuevas horas de reunión al organizador de la reunión como parte del flujo de trabajo del calendario de Exchange. Cuando un asistente propone una nueva reunión, el organizador puede usar la nueva hora de reunión propuesta para actualizar la reunión y enviar actualizaciones a todos los asistentes. Antes de permitir que los asistentes puedan proponer nuevas horas de reunión, debe determinar si el organizador permite nuevas propuestas de hora. En este artículo se describe cómo determinar si puede proponer una nueva hora y cómo usar EWS para proponer una nueva hora.

Nota:

La API administrada de EWS no implementa esta funcionalidad.

Determinar si puede proponer una nueva hora para una reunión mediante EWS

Antes de poder proponer una nueva hora para una reunión, debe encontrar una referencia a esa reunión y determinar si el organizador de la reunión configuró la reunión para admitir nuevas propuestas de hora. Para obtener una referencia a una reunión, realice una de las siguientes acciones:

  • Búsqueda de la convocatoria de reunión en la Bandeja de entrada

  • Búsqueda de la cita en el calendario

Siga estos pasos para buscar una referencia de reunión:

  1. Use la operación EWS FindItem (o el método de API administrada de EWS Folder.FindItems ) para buscar la convocatoria de reunión de destino o el elemento de calendario. Como alternativa, puede usar la operación EWS SyncFolderItems para obtener el identificador de la convocatoria de reunión de destino o del elemento de calendario.

  2. Analice los resultados de la operación FindItem (o el método Folder.FindItems ) para obtener el identificador de elemento del elemento de reunión.

  3. Use la operación GetItem EWS para obtener los objetos de respuesta de la reunión.

El siguiente XML muestra lo que se envía para solicitar los objetos de respuesta en un elemento.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema"
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013" />
    <t:MailboxCulture>en-US</t:MailboxCulture>
  </soap:Header>
  <soap:Body>
    <m:GetItem>
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:ResponseObjects"/>
          <t:FieldURI FieldURI="item:Subject"/>
          <t:FieldURI FieldURI="calendar:Start"/>
          <t:FieldURI FieldURI="calendar:End"/>
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:ItemIds>
        <t:ItemId Id="AAMkADEzOTExYjJkL1AAA=" ChangeKey="CwAAAB/G6X"/>
      </m:ItemIds>
    </m:GetItem>
  </soap:Body>
</soap:Envelope>

La respuesta de la operación GetItem tendrá un aspecto similar al siguiente XML si solicita el identificador de elemento, la hora de inicio y finalización de la reunión, la colección de objetos de respuesta y si el organizador permite los cambios propuestos en la hora de la reunión. La colección de objetos de respuesta, representada por el elemento ResponseObjects , contiene el conjunto de respuestas que son válidas para el elemento de calendario. El elemento ProposeNewTime es un objeto de respuesta que indica que el usuario puede proponer una nueva hora para la reunión. Los elementos AcceptItem, TentativelyAcceptItem y DeclineItem representan los objetos de respuesta que puede usar para proponer una nueva hora de reunión al organizador de la reunión.

<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15" 
                         MinorVersion="0" 
                         MajorBuildNumber="815" 
                         MinorBuildNumber="6" 
                         Version="V2_7" 
                         xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" 
                         xmlns="http://schemas.microsoft.com/exchange/services/2006/types" 
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:GetItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
                       xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:MeetingRequest>
              <t:ItemId Id="AAMkADEzOTExYjJkL1AAA=" ChangeKey="CwAAAB/G6X"/>
              <t:Subject>Competitive analysis: kick off meeting</t:Subject>
              <t:ResponseObjects>
                <t:AcceptItem/>
                <t:TentativelyAcceptItem/>
                <t:DeclineItem/>
                <t:ProposeNewTime/>
                <t:ReplyToItem/>
                <t:ReplyAllToItem/>
                <t:ForwardItem/>
              </t:ResponseObjects>
              <t:Start>2013-11-09T17:00:00Z</t:Start>
              <t:End>2013-11-09T17:30:00Z</t:End>
            </t:MeetingRequest>
          </m:Items>
        </m:GetItemResponseMessage>
      </m:ResponseMessages>
    </m:GetItemResponse>
  </s:Body>
</s:Envelope>

Proponer una nueva hora de reunión mediante EWS

Si recibió un objeto de respuesta ProposeNewTime cuando usó la operación GetItem para obtener un elemento de calendario o una convocatoria de reunión, puede responder con una nueva hora de reunión propuesta. Si no recibió un objeto de respuesta ProposeNewTime , no podrá proponer una nueva hora de reunión como parte del flujo de trabajo del calendario. Sin embargo, puede responder al organizador para solicitar una nueva hora de reunión. Si recibe un objeto de respuesta ProposeNewTime , puede responder a la reunión haciendo referencia a su identificador y proponer una nueva hora de reunión al organizador. Aquí es donde el objeto de respuesta ProposeNewTime es diferente del patrón de objeto de respuesta típico en que no responde con un objeto de respuesta ProposeNewTime . Use uno de los otros objetos de respuesta de reunión, como AcceptItem, TentativelyAcceptItem o DeclineItem, para proponer una nueva reunión. En este ejemplo se usa el objeto de respuesta AcceptItem .

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013"/>
  </soap:Header>
  <soap:Body>
    <m:CreateItem>
      <m:Items>
        <t:AcceptItem>
          <t:Body BodyType="Text">This time works better for the HiPPO.</t:Body>
          <t:ReferenceItemId Id="AAMkADEzOTExYjJkL1AAA=" ChangeKey="CwAAAB/G6X"/>
          <t:ProposedStart>2013-11-28T04:00:00Z</t:ProposedStart>
          <t:ProposedEnd>2013-11-28T04:30:00Z</t:ProposedEnd>
        </t:AcceptItem>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

La respuesta a esta solicitud contiene el identificador del elemento de calendario que se agregó al calendario del asistente y una copia de la solicitud de reunión que se colocó en la carpeta Elementos eliminados del asistente. El mensaje de respuesta con la nueva propuesta de tiempo también se guardó en la carpeta Elementos enviados del asistente (tendrá que encontrar el mensaje de respuesta de la reunión para obtener un identificador en él).

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15" 
                         MinorVersion="0" 
                         MajorBuildNumber="815" 
                         MinorBuildNumber="6" 
                         Version="V2_7" 
                         xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" 
                         xmlns="http://schemas.microsoft.com/exchange/services/2006/types" 
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  </s:Header>
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <m:CreateItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
                          xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:CreateItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:CalendarItem>
              <t:ItemId Id="AAMkAGRmOWE2OWAAA=" ChangeKey="DwAAJsmU"/>
            </t:CalendarItem>
            <t:MeetingRequest>
              <t:ItemId Id="AAMkAGRmOWE2AAABB=" ChangeKey="AAAGJu1A"/>
            </t:MeetingRequest>
          </m:Items>
        </m:CreateItemResponseMessage>
      </m:ResponseMessages>
    </m:CreateItemResponse>
  </s:Body>
</s:Envelope>

El organizador recibirá un mensaje de MeetingResponse cuando el asistente responda con una nueva hora de reunión propuesta. El mensaje MeetingResponse contiene la nueva hora de inicio y hora de finalización de la reunión propuesta, así como el identificador del elemento de calendario asociado en el calendario del organizador. El organizador puede usar esa información para actualizar su elemento de calendario existente para la reunión. A continuación se muestra el flujo de trabajo para que el organizador responda a un mensaje de MeetingResponse que propone una nueva hora de reunión:

  1. Determine si los elementos ProposedStart o ProposedEnd se han establecido en MeetingResponse. Si es así, vaya al paso 2. Si no es así, el mensaje MeetingResponse solo indica si el asistente ha aceptado, aceptado provisionalmente o rechazado la reunión.

  2. Obtenga el elemento de calendario existente del organizador para la reunión mediante el identificador de EWS devuelto en el elemento AssociatedCalendarItemId .

  3. Compare la hora de inicio y finalización original con la nueva hora de reunión propuesta. Si la nueva hora de reunión propuesta es aceptable para el organizador, vaya al paso 4. De lo contrario, el organizador de la reunión puede omitir la hora de reunión propuesta o enviar una respuesta por correo electrónico al asistente que propuso la nueva hora de la reunión.

  4. (Opcional) Realice una llamada a la operación GetUserAvailability EWS para averiguar si el tiempo propuesto funcionará para todos los asistentes, incluidos los buzones de sala y de recursos. (También puede usar el método de API administrada de EWS ExchangeService.GetUserAvailability para hacerlo).

  5. A continuación, el organizador puede actualizar su reunión con las nuevas horas de reunión propuestas y enviar las actualizaciones a todos los asistentes mediante la operación EWS UpdateItem (o el método Appointment.Update EWS Managed API).

En la ilustración siguiente se muestra el proceso que se produce entre el organizador de la reunión, el asistente y el servidor de Exchange que controló las llamadas EWS.

Figura 1. Proceso para proponer una nueva hora de reunión

La figura muestra el flujo de trabajo entre el organizador, Exchange y un asistente cuando se propone una nueva hora de reunión. Si el organizador permite nuevas propuestas para la reunión, un asistente puede proponer una nueva hora de reunión con un objeto Response.

Diferencias de versión

La característica de nueva hora propuesta se introdujo en la versión de compilación de Exchange 15.00.0800.007. En versiones anteriores de Exchange, los usuarios de la aplicación EWS tienen que enviar un correo electrónico independiente al organizador de la reunión para solicitar una hora de reunión diferente.

Consulte también