2
我正在使用PHP Exchange Web服務庫(https://github.com/jamesiarmes/php-ews)來當前檢索用戶可用性而沒有問題。我想要做的是檢索用戶的離開辦公室響應(如果設置),似乎無法弄清楚如何正確設置請求。我至今:PHP EWS OOF(不在辦公室)請求
$ews = new ExchangeWebServices();
$request = new EWSType_GetUserOofSettingsRequest();
$request->Mailbox->Address = '[email protected]';
$ewsResponse = $ews->GetUserOofSettings($request);
但是所有我找回是:
stdClass Object
(
[ResponseMessage] => stdClass Object
(
[MessageText] => Connection did not succeed. Try again later.
[ResponseCode] => ErrorConnectionFailed
[DescriptiveLinkKey] => 0
[ResponseClass] => Error
)
)
如何設置這個請求正常有什麼想法?
編輯 正如我收到用戶的一些電子郵件,我覺得我會相應地更新這個問題。我不再有權訪問Exchange環境來測試此代碼,因此任何更新都將有所幫助!
下面的代碼來自於我ldapAdapter文件,並可以通過以下方式使用:
$request = createEWSRequest();
$request->MailboxDataArray->MailboxData->Email->Address = $email;
$ewsResponse = $ews->GetUserAvailability($request);
$fbtInfo = getFreeBusyTime();
private function getFreeBusyTime() {
if (isset($this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray)) {
if (is_array($this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray->CalendarEvent)) {
$this->nextMeetingStart = $this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray->CalendarEvent[0]->StartTime;
$this->nextMeetingEnd = $this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray->CalendarEvent[0]->EndTime;
$this->busyType = $this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray->CalendarEvent[0]->BusyType;
} else {
$this->nextMeetingStart = $this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray->CalendarEvent->StartTime;
$this->nextMeetingEnd = $this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray->CalendarEvent->EndTime;
$this->busyType = $this->ewsResponse->FreeBusyResponseArray->FreeBusyResponse->FreeBusyView->CalendarEventArray->CalendarEvent->BusyType;
}
$this->meetingScheduled = true;
$date = new DateTime($this->nextMeetingStart, new DateTimeZone('America/Chicago'));
$date->setTimezone(new DateTimeZone('UTC'));
$this->nextMeetingStart = $date->format(DateTime::W3C);
$date = new DateTime($this->nextMeetingEnd, new DateTimeZone('America/Chicago'));
$date->setTimezone(new DateTimeZone('UTC'));
$this->nextMeetingEnd = $date->format(DateTime::W3C);
} else {
$this->meetingScheduled = false;
$this->nextMeetingStart = false;
$this->nextMeetingEnd = false;
$this->busyType = false;
}
}
private function createEWSRequest() {
$request = new EWSType_GetUserAvailabilityRequestType();
$request->TimeZone = new EWSType_SerializableTimeZone();
$request->TimeZone->Bias = '360';
$request->TimeZone->StandardTime = new EWSType_SerializableTimeZoneTime();
$request->TimeZone->StandardTime->Bias = '0';
$request->TimeZone->StandardTime->Time = '02:00:00';
$request->TimeZone->StandardTime->DayOrder = '5';
$request->TimeZone->StandardTime->Month = '1';
$request->TimeZone->StandardTime->DayOfWeek = 'Sunday';
$request->TimeZone->DaylightTime->Bias = '-60';
$request->TimeZone->DaylightTime->Time = '02:00:00';
$request->TimeZone->DaylightTime->DayOrder = '1';
$request->TimeZone->DaylightTime->Month = '4';
$request->TimeZone->DaylightTime->DayOfWeek = 'Sunday';
$request->MailboxDataArray = new EWSType_ArrayOfMailboxData();
$request->MailboxDataArray->MailboxData = new EWSType_MailboxData();
$request->MailboxDataArray->MailboxData->Email = new EWSType_EmailAddress();
$request->MailboxDataArray->MailboxData->Email->RoutingType = 'SMTP';
$request->MailboxDataArray->MailboxData->AttendeeType = 'Required';
$request->MailboxDataArray->MailboxData->ExcludeConflicts = false;
$request->FreeBusyViewOptions = new EWSType_FreeBusyViewOptionsType();
$request->FreeBusyViewOptions->TimeWindow = new EWSType_Duration();
$request->FreeBusyViewOptions->MergedFreeBusyIntervalInMinutes = '30';
$request->FreeBusyViewOptions->RequestedView = 'FreeBusy';
$date = new DateTime();
$this->startDate = date_format($date, DateTime::W3C);
$date->modify('+8 hours');
$this->endDate = date_format($date, DateTime::W3C);
$request->FreeBusyViewOptions->TimeWindow->StartTime = $this->startDate; //'2013-04-01T15:00:00';
$request->FreeBusyViewOptions->TimeWindow->EndTime = $this->endDate; //'2013-04-20T18:00:00';
return $request;
}
請求不返回null,它返回一個有效的對象,但不是我在找什麼。我已經創建和嘗試的任何其他請求(一般可用性請求)都能正常工作,並且運行良好,但這只是OOF狀態有問題。 – Brian 2013-06-19 13:12:08