Exchange 2007 ews (веб-служба) - узнать, кто принял участие в собрании?

Я новичок в использовании Exchange EWS, и мне не удалось найти упоминания об этом в документации или в Интернете.

Я подключаюсь к своему серверу Exchange 2007 и получаю список календарных встреч для данной учетной записи с помощью PHP SoapClient. Это работает и извлекает все собрания как объекты CalendarItem, которые затем я могу использовать в моем сценарии PHP.

Однако мне действительно нужно знать, кто согласился присутствовать на собраниях. Я так понимаю, что свойство DisplayTo объекта CalendarItem сообщает нам, кто был приглашен, но наверняка некоторые из них могли отклонить предложение. Итак, если я хочу знать, кто на самом деле будет там, как я могу получить эту информацию?

Это может показаться полезной информацией, которую нужно сделать доступной (например, для планирования питания или чего-то еще), поэтому маловероятно, что она не будет раскрыта через веб-службу, но я не могу найти, как найти эту информацию.

Кто-нибудь может помочь?

изменить: просто чтобы уточнить, что возвращается веб-службой Exchange 2007, это то, что служба возвращает для каждой встречи:

[0] => stdClass Object
        (
            [ItemId] => stdClass Object
                (
                    [Id] => AAAQAHN0ZXBld0BNQkEuYWMud
                    [ChangeKey] => DwAAABYA
                )

            [ParentFolderId] => stdClass Object
                (
                    [Id] => AQAQAHN0ZXBld0BNQkEuYWM
                    [ChangeKey] => AQ
                )

            [ItemClass] => IPM.Appointment.Occurrence
            [Subject] => IT Meeting
            [Sensitivity] => Normal
            [DateTimeReceived] => 2013-09-11T13:06:27Z
            [Size] => 6724
            [Importance] => Normal
            [IsSubmitted] => 
            [IsDraft] => 
            [IsFromMe] => 
            [IsResend] => 
            [IsUnmodified] => 
            [DateTimeSent] => 2013-09-11T13:06:27Z
            [DateTimeCreated] => 2013-09-11T13:06:27Z
            [ReminderDueBy] => 2014-08-04T10:30:00Z
            [ReminderIsSet] => 1
            [ReminderMinutesBeforeStart] => 15
            [DisplayCc] => 
            [DisplayTo] => Bob, Frank, Tim, Alf, Juanita
            [HasAttachments] => 
            [Culture] => en-US
            [Start] => 2014-06-02T10:30:00Z
            [End] => 2014-06-02T12:00:00Z
            [IsAllDayEvent] => 
            [LegacyFreeBusyStatus] => Busy
            [Location] => Meeting Room
            [IsMeeting] => 1
            [IsRecurring] => 1
            [MeetingRequestWasSent] => 
            [IsResponseRequested] => 1
            [CalendarItemType] => Occurrence
            [MyResponseType] => Accept
            [Organizer] => stdClass Object
                (
                    [Mailbox] => stdClass Object
                        (
                            [Name] => Bob
                        )

                )

            [Duration] => PT1H30M
            [TimeZone] => (UTC) Dublin, Edinburgh, Lisbon, London
            [AppointmentReplyTime] => 2013-09-11T13:07:00Z
            [AppointmentSequenceNumber] => 0
            [AppointmentState] => 3
            [ConferenceType] => 0
            [AllowNewTimeProposal] => 1
            [NetShowUrl] => 
        )

person Ambulare    schedule 18.07.2014    source источник


Ответы (3)


Вы можете просмотреть участников встречи и проверить тип их ответа. Я написал для вас расширенный блок кода, который поможет вам понять. Надеюсь, это поможет :)

Appointment existingAppointment;

int acceptCount = 0;

if (existingAppointment.RequiredAttendees.Count > 0)
{
    foreach(Attendee att in existingAppointment.RequiredAttendees)
    {
        if ((att.ResponseType.HasValue) && (att.ResponseType.Value == MeetingResponseType.Accept))
        {
            acceptCount++;
        }
    }
}
person Alex    schedule 22.07.2014
comment
Привет @Alex, спасибо за вашу помощь, но я немного смущен вашим ответом. Используете ли вы в своем ответе какую-либо библиотеку, поскольку я просто использую клиент PHP SOAP? Если я не ошибаюсь, PHP-класса Appointment нет, а объект, возвращаемый EWS в ответ на запрос календарных встреч, не имеет свойства RequiredAttendees. - person Ambulare; 24.07.2014
comment
Похоже, вы недавно редактировали свой вопрос. Я и @Mimi Gentz ​​думали, что вы программируете на C #. Я не знаю, как это сделать на PHP. Прости - person Alex; 24.07.2014
comment
Привет @Alex, нет, в моем вопросе всегда говорилось о PHP и помечено как PHP. Я отредактировал его, чтобы добавить пример данных, возвращаемых веб-службой. Тем не менее, спасибо за попытку помочь. - person Ambulare; 24.07.2014

Это предварительное решение, но, насколько я могу судить, оно работает.

Итак, чтобы сформировать запрос SOAP с помощью PHP SOAPClient, чтобы получить сведения о встрече для каждой встречи, как показано в исходном вопросе, я использую следующее:

//Loop through each CalendarItem in the CalendarItems collection
//Using a "by reference" pointer as I want to add the extra information to the original object.
foreach($calendaritems as &$b){
    $NewSearch->Traversal = "Shallow";
    $NewSearch->ItemShape->BaseShape = "AllProperties";
    $NewSearch->ItemIds->ItemId = $b->ItemId;
    $result = $client->GetItem($NewSearch);

    //add the RequiredAttendees element to the original calendar item, just for convenience
    $b->RequiredAttendees = $result->ResponseMessages->GetItemResponseMessage->Items->CalendarItem->RequiredAttendees;
}

Однако кажется, что вы можете просматривать ResponseType только для приглашений на собрания, для которых учетная запись, которую вы подключаете, была организатором. Все остальные собрания отображаются как «Неизвестно» в качестве ResponseType.

person Ambulare    schedule 25.07.2014
comment
Вам понадобится разрешение на просмотр календарей других людей, чтобы видеть ответы на собрания, которые они организовали. - person J. Wrong; 24.02.2015

Вам нужно будет подсчитать количество участников, у которых для параметра MeetingResponseType установлено значение Accept. См. Этот похожий пост: Подсчитайте число участников, которые приняли встречу с EWS.

person Mimi Gentz    schedule 21.07.2014