Я работаю с библиотекой php-ews для интеграции с обменом. Мне было интересно, есть ли доступ к глобальной адресной книге, я искал документацию, и ничего не вышло. Я хотел бы получить к нему доступ, чтобы я мог просматривать ресурсы комнаты.
благодаря
Я не думаю, что метод GetRooms
всегда добавлялся к php-ews. Кажется, они просто прекратили развитие. см. https://github.com/jamesiarmes/php-ews/issues/91
В качестве обходного пути, если ваши комнаты существуют в Active Directory, вы можете выполнить запрос LDAP, чтобы получить номера, а затем прокрутить каждую комнату, используя адрес электронной почты комнаты, чтобы получить календарь с помощью php-ews. В противном случае вы могли бы сохранить список номеров в номерах с их адресами электронной почты и вытащить их таким образом перед циклом.
После того, как у вас будут адреса электронной почты номеров, вы должны использовать имидж Exchange, выдавая себя за адрес электронной почты в комнате, чтобы проверить его календарь.
Что-то вроде этого…
// Configure impersonation using the conference OwnerEmailAddress $ei = new EWSType_ExchangeImpersonationType(); $sid = new EWSType_ConnectingSIDType(); $sid->PrimarySmtpAddress = $email; $ei->ConnectingSID = $sid; $ews->setImpersonation($ei); // Set the search for calendar item types $request = new EWSType_FindItemType(); $request->Traversal = EWSType_ItemQueryTraversalType::SHALLOW; $request->ItemShape = new EWSType_ItemResponseShapeType(); $request->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::ALL_PROPERTIES; $request->CalendarView = new EWSType_CalendarViewType(); // Set the instance start and end times $request->CalendarView->StartDate = $start->format('Ymd\TH:i:s'); $request->CalendarView->EndDate = $end->format('Ymd\TH:i:s'); // Set the search location as the calendars folder of the impersonated user $request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType(); $request->ParentFolderIds->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType(); $request->ParentFolderIds->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::CALENDAR; $request->ParentFolderIds->DistinguishedFolderId->Mailbox->EmailAddress = $email; // Execute the search $response = $ews->FindItem($request);
где вы $start
$email
и $start
и $end
. ПРИМЕЧАНИЕ: для учетной записи, к которой вы обращаетесь к API EWS, потребуются привилегии олицетворения.
Удачи.
@Souljacker – EWS не раскрывает Глобальную адресную книгу. Если вы хотите найти ресурсы комнаты, вы можете использовать операцию GetRoomLists и операцию GetRooms . Единственные места, где EWS предоставляет информацию из Глобальной адресной книги, – это операция ResolveNames и операция FindPeople с опцией Directory.