Exchange で EWS を使用して会議の新しい日時を提案する
Exchange で EWS を使用して Exchange クライアント アプリケーションから新しい会議日時を提案する方法について説明します。
出席者は、新しい日時を提案する機能を使用して、新しい会議日時を Exchange 予定表ワークフローの一部として会議開催者に提案できます。 出席者が新しい会議を提案すると、開催者は提案された新しい会議日時を使用して会議を更新し、最新情報をすべての出席者に送信できます。 新しい会議日時を出席者が提案できるようにするためには、新しい日時の提案を開催者が許可しているかどうかを確認しておく必要があります。 この記事では、新しい日時を提案できるかどうかを確認する方法、および EWS を使用して新しい日時を提案する方法について説明します。
注:
EWS マネージ API はこの機能を実装していません。
EWS を使用して会議の新しい日時を提案できるかどうかを確認する
会議の新しい日時を提案するためには、その会議への参照を見つけ、新しい日時の提案をサポートするように会議開催者が会議を構成しているかどうかを確認しておく必要があります。 会議への参照は、次のいずれかの方法で取得できます。
受信トレイで会議出席依頼を見つける
予定表で予定を見つける
会議の参照を見つけるには、次の手順を使用します。
FindItem EWS 操作 (または Folder.FindItems EWS マネージ API メソッド) を使用して、対象の会議出席依頼アイテムまたは予定表アイテムを見つけます。 あるいは、SyncFolderItems EWS 操作を使用して、対象の会議出席依頼アイテムまたは予定表アイテムの識別子を取得することもできます。
FindItem 操作 (または Folder.FindItems メソッド) の結果を解析して、会議アイテムのアイテム識別子を取得します。
GetItem EWS 操作を使用して、会議の応答オブジェクトを取得します。
次の XML は、アイテムの応答オブジェクトを要求するために何が送られるかを示しています。
<?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>
アイテム識別子、会議の開始時刻と終了時刻、応答オブジェクト コレクション、および会議日時変更提案を開催者が許可しているかどうかを要求した場合、GetItem 操作の応答は次の XML のようになります。 ResponseObjects 要素で表される応答オブジェクト コレクションには、予定表アイテムに有効な応答のセットが含まれます。 ProposeNewTime 要素は、新しい会議日時をユーザーが提案できることを示す応答オブジェクトです。 AcceptItem、TentativelyAcceptItem、および DeclineItem 要素は、新しい会議日時を会議開催者に提案するために使用できる応答オブジェクトを表します。
<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>
EWS を使用して新しい会議日時を提案する
GetItem 操作を使用して予定表アイテムまたは会議出席依頼を取得した際に ProposeNewTime 応答オブジェクトを受け取ったら、新しい会議日時の提案で応答できます。 ProposeNewTime 応答オブジェクトを受け取らなかった場合、新しい会議日時を予定表ワークフローの一部として提案することはできません。 ただし、開催者に返信して、新しい会議日時を要求することができます。 ProposeNewTime 応答オブジェクトを受け取った場合は、会議に対してその識別子を参照して応答し、新しい会議日時を開催者に提案できます。 ここが、ProposeNewTime 応答オブジェクトを使用して応答しない通常の応答オブジェクト パターンと ProposeNewTime 応答オブジェクトが異なる点です。 AcceptItem、TentativelyAcceptItem、または DeclineItem などの他の会議応答オブジェクトのいずれかを使用して、新しい会議を提案します。 この例では、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>
この要求への応答には、出席者の予定表に追加された予定表アイテムの識別子、および出席者の [削除済みアイテム] フォルダーに置かれた会議出席依頼のコピーが含まれます。 新しい日時の提案を含む応答メッセージは、出席者の [送信済みアイテム] フォルダーにも保存されます (会議応答メッセージのハンドルを取得するには、その会議応答メッセージを見つける必要があります)。
<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>
出席者が新しい会議日時の提案で応答すると、開催者は MeetingResponse メッセージを受け取ります。 MeetingResponse メッセージには、会議の新しい開始時刻と終了時刻の提案、開催者の予定表の中の関連予定表アイテムの識別子が含まれます。 開催者はその情報を使用して、会議を表す既存の予定表アイテムを更新できます。 新しい会議日時を提案する MeetingResponse メッセージに開催者が応答するワークフローを次に示します。
ProposedStart 要素、または ProposedEnd 要素が MeetingResponse で設定されているかどうかを判断します。 設定されている場合は、手順 2 に進みます。 設定されていない場合、MeetingResponse メッセージは、出席者が会議を承諾した、仮承諾した、または辞退したことのみを示します。
AssociatedCalendarItemId 要素で返される EWS 識別子を使用して、会議を表す開催者の既存予定表アイテムを取得します。
元の開始時刻と終了時刻を、提案された新しい会議日時と比較します。 提案された新しい会議日時を開催者が受け入れることができる場合は、手順 4 に進みます。 それ以外の場合、会議開催者は、提案された会議日時を無視するか、新しい会議日時を提案した出席者にメール応答を送信できます。
(省略可能) GetUserAvailability EWS 操作呼び出しを実行して、提案された日時がすべての出席者 (部屋およびリソース メールボックスを含む) にとって都合がよいかどうかを調べます。 (これを行うには、ExchangeService.GetUserAvailability EWS マネージ API メソッドを使用することもできます。)
その後開催者は、UpdateItem EWS 操作 (または Appointment.Update EWS マネージ API メソッド) を使用して、提案された新しい会議日時に基づいて会議を更新し、最新情報をすべての出席者に送信できます。
次の図は、会議開催者、出席者、および EWS 呼び出しを処理する Exchange サーバーの間で行われるプロセスを示しています。
図 1. 新しい会議日時の提案プロセス
バージョンの相違点
新しい日時を提案する機能は、Exchange ビルド バージョン 15.00.0800.007 で導入されました。 以前のバージョンの Exchange では、EWS アプリケーション ユーザーは、異なる会議日時を要求するためには、別個のメールを会議開催者に送信する必要があります。