簡體   English   中英

使用 Exchange web 服務和 PHP 添加日歷約會

[英]Adding calendar appointments with Exchange web services and PHP

我在這里有一個有趣的難題,我希望有人至少可以告訴我我可能的解決方案是否真的可行。

我有一個 PHP 站點,我正在該站點上創建一個頁面來創建和跟蹤響應以交換日歷約會及其通知。

用戶添加有關事件的所有相關信息並保存,事件信息存儲在數據庫中,並創建 email 並將其發送給收件人。 我正在編寫 ics 代碼,因此當收件人收到它時,它看起來像一個約會通知,就好像它是從交換客戶端發送的一樣。 到目前為止,一切都是金色的。

但這個想法是使用 email,其唯一目的是跟蹤這些響應和事件。 然后我將在單獨的服務器上使用 EWS 設置服務,因為該站點位於 LAMP 服務器上,該服務將定期檢查此地址上的事件以獲取響應,並使用響應更新 mysql 數據庫,以便它們可以顯示在活動頁面。

問題是當我創建事件並從 PHP 發送電子郵件時,沒有為主機地址創建事件,因此當收件人選擇響應選項(接受、拒絕、暫定)時,主機什么也沒有收到,因為響應是對於它沒有的事件。

有沒有辦法通過 PHP 創建事件?

或者我可以向我已經擁有的服務添加一個方法,該方法將在主機地址上創建事件並從 PHP 調用它?

正如您所寫:參與者對已發送邀請的反應是無用的,因為約會的組織者(您的活動)沒有關於此約會的任何信息。

您可以做的是在 ExchangeServer 的主機日歷中添加一個約會的創建,該約會與用戶使用您的 PHP 網頁創建的事件有關。 當您使用正確的保存方法保存約會時,邀請將自動發送,並且如果您訂閱了主持人的日歷文件夾事件(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("joe@example.com");
app.RequiredAttendees.Add("tom@example.com");
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 分鍾至少檢查一次,訂閱將從服務器中刪除)並且訂閱將包含有關已創建、修改的項目的事件隊列,已刪除,或更改了他們的忙/閑狀態。

要查詢事件訂閱,您可以執行以下操作:

    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;
           }
       }
   }

當您獲得您感興趣的項目的事件類型時,您可以更新您的數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM