2013-04-25 65 views
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; 
} 

回答

0

看看這個thread。似乎您必須指定您嘗試從您的訪問憑據中收集信息的Exchange服務器。希望有幫助;)

+0

請求不返回null,它返回一個有效的對象,但不是我在找什麼。我已經創建和嘗試的任何其他請求(一般可用性請求)都能正常工作,並且運行良好,但這只是OOF狀態有問題。 – Brian 2013-06-19 13:12:08