2016-08-05 1 views
1

На прошлой неделе я боролся с библиотеками Php для EWS. Я попробовал Package365Ews и Php-ews, но у обоих из них отсутствует основная функция для меня, или она не документирована - GetRooms. Кто-нибудь знает, как справиться с этим, или узнать другую библиотеку, реализующую это?Библиотека PHP для Office365 EWS с GetRooms

ответ

2

Я лично предложил бы свою собственную библиотеку, garethp/php-ews.

У этого есть простое использование, но не все покрывается более простыми API. EWS является большой вещь, и документирование все будет интенсивным. При этом я могу, безусловно, помочь вам перевести существующую документацию Microsoft на использование этого кода. И, если вы обнаружите, что у вас больше проблем после этой публикации, я ежедневно проверяю свой Github, поэтому регистрация проблемы с моим репозиторием поможет получить больше помощи в лучшем месте за спиной и вперед.

Но прежде всего позвольте мне выполнить, как выполнять функции, которые не документированы напрямую. Мне нравится GetRooms. Мой API обертывает вокруг EWS, он не блокирует ваш доступ к нему. Поэтому, хотя я не сделал очевидного способа сделать GetRooms, it's still there. Нравится

<?php 

use garethp\ews\API; 
use garethp\ews\API\Type; 

$api = API::fromUsernameAndPassword($server, $username, $password); 

//Build Request 

$result = $api->getClient()->GetRooms($request); 

var_dump($result); 

Итак, вопрос становится, как мы строим запрос? Хорошо, к счастью EWS очень хорошо документирован в XML. Сначала найдите статью, в которой описывается то, что вы пытаетесь сделать, а затем ищите XML. Я не на 100%, что вы хотите сделать, но я буду использовать this article as a base. XML, что мы собираемся, чтобы попытаться повторить это

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" 
      xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" 
      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Header> 
    <t:RequestServerVersion Version="Exchange2010" /> 
    </soap:Header> 
    <soap:Body> 
    <m:GetRooms> 
     <m:RoomList> 
     <t:EmailAddress>[email protected]</t:EmailAddress> 
     </m:RoomList> 
    </m:GetRooms> 
    </soap:Body> 
</soap:Envelope> 

Вы можете пропустить заголовок и <m:GetRooms> часть, те построены для вас. Мы ориентируемся на полезную нагрузку, которую вы хотите отправить, которая составляет

<m:RoomList> 
    <t:EmailAddress>[email protected]</t:EmailAddress> 
</m:RoomList> 

Мы хотим, чтобы наш запрос выглядел так. Так, в нашем коде, наш запрос будет выглядеть следующим образом:

$request = array (
    'RoomsList' => array (
     'EmailAddress' => '[email protected]' 
    ) 
); 

$request = Type::buildFromArray($request); 

И это будет переведен на XML для вас для вызова SOAP. Используя этот метод, для любых функций, которые не документированы или полностью поддерживаются, вы можете легко использовать их и просто ссылаться на официальную документацию Microsoft на любой запрос, который вам нужно сделать.

+0

Привет! Гарет! Что за сюрприз, я только что протестировал вашу библиотеку и сделал все, что вы пишете, но я получил пустой ответ: [link] (http://pastebin.com/1pxQ84Ls) Что относительно RoomList? – Sajgoniarz

+0

Мой пример был именно этим, примером. Вы можете показать мне полный массив $ request, который вы делаете перед отправкой? –

+0

[link] (http://pastebin.com/ycrVx2Pz) – Sajgoniarz