先週、私は EWS の PHP ライブラリに苦労しました。Package365Ews と Php-ews を試しましたが、どちらもコア機能が欠落しているか、文書化されていません - GetRooms。誰かがそれを処理する方法を知っていますか、またはこれを実装する別のライブラリを知っていますか?
1 に答える
個人的には、私自身のライブラリをお勧めしますgarethp/php-ews
。
使い方は簡単ですが、すべてが単純な API でカバーされているわけではありません。EWS は大規模なものであり、すべてを文書化するのは大変なことです。そうは言っても、マイクロソフトの既存のドキュメントをこのコードを使用するように翻訳するのを手伝うことができます。また、この投稿の後にさらに問題が発生した場合は、Github を毎日チェックするので、リポジトリに対して問題をログに記録すると、より適切な場所でやり取りできるようになります。
しかし、最初に、直接文書化されていない機能を実行する方法について概説させてください。のようにGetRooms
。私の API は EWS をラップしており、アクセスをブロックしません。したがって、GetRooms を実行する明確な方法を作成していませんが、まだあります。このような
<?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% ではありませんが、この記事をベースとして使用します。複製しようとしている 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>
<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 の公式ドキュメントを参照するだけです。