На прошлой неделе я боролся с библиотеками Php для EWS. Я попробовал Package365Ews и Php-ews, но у обоих из них отсутствует основная функция для меня, или она не документирована - GetRooms. Кто-нибудь знает, как справиться с этим, или узнать другую библиотеку, реализующую это?Библиотека PHP для Office365 EWS с GetRooms
ответ
Я лично предложил бы свою собственную библиотеку, 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 на любой запрос, который вам нужно сделать.
Привет! Гарет! Что за сюрприз, я только что протестировал вашу библиотеку и сделал все, что вы пишете, но я получил пустой ответ: [link] (http://pastebin.com/1pxQ84Ls) Что относительно RoomList? – Sajgoniarz
Мой пример был именно этим, примером. Вы можете показать мне полный массив $ request, который вы делаете перед отправкой? –
[link] (http://pastebin.com/ycrVx2Pz) – Sajgoniarz