2011-07-14 14 views
0

ここに興味深い問題があります。Exchange WebサービスとPHPで予定表を追加する

私は、カレンダーの予定とその通知を交換するための応答を作成して追跡するためのページを作成するPHPサイトを用意しています。

イベントに関するすべての関連情報を追加して保存し、イベント情報をdbに保存し、電子メールを作成して受信者に送信します。私はicsコードを書いているので、受信者がそれを受け取ったとき、それは交換クライアントから送られたかのように予定通知のように見えます。これまではすべてが金色です。

しかし、その唯一の目的は、これらの応答とイベントを追跡することである電子メールを使用することです。次に、サイトがLAMPサーバー上にあるので、別のサーバー上のEWSセットアップを使用してサービスを行います。定期的にこのアドレスのイベントをチェックしてレスポンスを返します。イベントのページ。

問題は、イベントを作成してPHPから電子メールを送信すると、ホストアドレス用にイベントが作成されないため、受信者が応答オプション(受け入れられた、拒否された、暫定)を選択すると、応答はそれが持っていないイベントへのものです。

PHP経由でイベントを作成する方法はありますか?

また、ホストアドレスにイベントを作成してPHPから呼び出すメソッドを、既に持っているサービスに追加できますか?

答えて

0

あなたが書いた通り:予定の主催者(あなたのイベント)にこの予定に関する情報がないため、招待状への参加者の反応は役に立たない。

あなたができることは、PHPウェブページで作成したイベントに関するExchangeServerのホストカレンダーに予定の作成を追加することです。適切な保存方法で予定を保存すると、招待状が自動的に送信され、ホストのカレンダーフォルダイベント(EWSサブスクリプションイベントはあなたのものではない)のサブスクリプションを作成し、定期的にチェックして参加者の応答でレコードを更新できます。

あなたはこのような約束を作成することができます

Appointment app = new Appointment(_service); 
app.Start = DateTime.Now.AddMinutes(30); 
app.End = DateTime.Now.AddHours(2); 
app.Subject = "Test appointment"; 
app.RequiredAttendees.Add("[email protected]"); 
app.RequiredAttendees.Add("[email protected]"); 
app.Save(WellKnownFolderName.Calendar, SendInvitationsMode.SendOnlyToAll); 

を、カレンダーフォルダのサブスクリプションを作成する:

var subscription = _service.SubscribeToPullNotifications(new FolderId[] { WellKnownFolderName.Calendar }, 5, null, EventType.Created, EventType.Deleted, EventType.Modified, EventType.FreeBusyChanged); 

上記のコードは、タイムアウト5分(そのサブスクリプションの意志とカレンダーに関するイベントのサブスクリプションを作成します5分に1回以上チェックしないとサーバーから削除されます)、サブスクリプションには作成、変更、削除、または空き時間情報が変更されたアイテムに関するイベントのキューが含まれます。

は、あなたがこのような何かをするイベントのサブスクリプションを照会するには、次の

var events = subscription.GetEvents(); 
    if (events.AllEvents.Count > 0) 
    { 
     foreach (var itemEvent in events.ItemEvents) 
     { 
      switch (itemEvent.EventType) 
      { 
       case EventType.Created: 
        break; 
       case EventType.Modified: 
        break; 
       case EventType.Copied: 
        break; 
       case EventType.FreeBusyChanged: 
        break; 
      } 
     } 
    } 

そして、あなたはあなたが興味のある項目のためのイベントタイプを取得するとき、あなたはあなたのデータベースを更新することができ

関連する問題