PHP 带有 GetRooms 的 Office365 EWS 库

PHP library for Office365 EWS with GetRooms

整个上周我都在为 EWS 的 Php 库苦苦挣扎。我尝试了 Package365Ews 和 Php-ews,但它们都缺少我的核心功能,或者没有记录 - GetRooms。有谁知道如何处理它,或者知道另一个实现这个的库?

我个人会推荐我自己的图书馆,garethp/php-ews

它的用法很简单,但并不是所有内容都包含在更简单的 API 中。 EWS 是一个 的东西,记录一切会很紧张。也就是说,我当然可以帮助您将 Microsoft 的现有文档转换为使用此代码。而且,如果您在 post 之后发现自己遇到更多问题,我每天都会检查我的 Github,因此在我的存储库中记录问题将在更好的地方获得更多帮助。

但首先,让我说明一下如何执行未直接记录的功能。喜欢GetRooms。我的 API 包裹 around 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>bldg3rooms@contoso.com</t:EmailAddress>
      </m:RoomList>
    </m:GetRooms>
  </soap:Body>
</soap:Envelope>

您可以跳过 header 和 <m:GetRooms> 部分,这些都是为您打造的。我们关注的是您要发送的有效负载,即

<m:RoomList>
    <t:EmailAddress>bldg3rooms@contoso.com</t:EmailAddress>
</m:RoomList>

我们想让我们的请求看起来像那样。因此,在我们的代码中,我们的请求将如下所示:

$request = array (
    'RoomsList' => array (
        'EmailAddress' => 'bldg3rooms@contoso.com'
    )
);

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

这将为您的 SOAP 调用翻译成 XML。使用此方法,对于任何未记录或完全支持的功能,您仍然可以轻松地使用它们,只需参考 Microsoft 官方文档以获取您需要提出的任何请求