Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP EWS OOF(外出)请求_Php_Exchangewebservices - Fatal编程技术网

PHP EWS OOF(外出)请求

PHP EWS OOF(外出)请求,php,exchangewebservices,Php,Exchangewebservices,我正在使用phpchangewebservices库()来检索用户的可用性。我想做的是为用户检索一个离开办公室的响应(如果设置了),但似乎无法确定如何正确设置请求。到目前为止,我所拥有的: $ews = new ExchangeWebServices(); $request = new EWSType_GetUserOofSettingsRequest(); $request->Mailbox->Address = 'TEstUser@Test.com'; $ewsResponse

我正在使用phpchangewebservices库()来检索用户的可用性。我想做的是为用户检索一个离开办公室的响应(如果设置了),但似乎无法确定如何正确设置请求。到目前为止,我所拥有的:

$ews = new ExchangeWebServices();
$request = new EWSType_GetUserOofSettingsRequest();
$request->Mailbox->Address = 'TEstUser@Test.com';
$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;
}

看看这个。似乎必须指定您试图从中收集信息的exchange服务器以及访问凭据。希望有帮助;)

请求不返回null,它返回一个有效的对象,但不是我要找的对象。我创建并尝试的任何其他请求(通用可用性请求)都可以正常工作,只有OOF状态有问题。