2011-07-14 1 views
0

J'ai une énigme intéressante ici et j'espère que quelqu'un peut au moins me dire si ma solution possible est réellement possible.Ajouter des rendez-vous au calendrier avec les services Web Exchange et PHP

J'ai un site PHP sur lequel je crée une page pour créer et suivre les réponses aux rendez-vous du calendrier et leurs notifications.

L'utilisateur ajoute toutes les informations pertinentes sur l'événement et les enregistre, l'information d'événement est stockée dans la base de données et l'e-mail est créé et envoyé aux destinataires. J'écris le code ics, donc quand les destinataires le reçoivent, cela ressemble à une notification de rendez-vous comme si elle avait été envoyée par un client d'échange. Jusqu'à ce point tout est doré.

Mais l'idée est d'utiliser un email dont le seul but est de suivre ces réponses et événements. Ensuite, je vais avoir un service utilisant EWS setup sur un serveur séparé, car le site est sur un serveur LAMP, qui vérifie périodiquement les événements sur cette adresse pour les réponses, et met à jour la base de données mysql avec les réponses afin qu'ils puissent être affichés sur le serveur. page des événements. Le problème est que lorsque je crée l'événement et j'envoie les emails de PHP, il n'y a pas d'événement créé pour l'adresse de l'hôte, donc quand un destinataire sélectionne une option de réponse (acceptée, refusée, provisoire), l'hôte ne reçoit rien comme la réponse est à un événement qu'il n'a pas.

Existe-t-il un moyen de créer l'événement via PHP?

Ou est-ce que je pourrais ajouter une méthode au service que j'ai déjà qui créera l'événement sur l'adresse d'hôte et l'appellera de PHP?

Répondre

0

Comme vous l'avez écrit: les réactions des participants à l'invitation envoyée sont inutiles car l'organisateur d'un rendez-vous (votre événement) n'a aucune information sur ce rendez-vous.

Ce que vous pouvez faire est d'ajouter la création d'un rendez-vous dans le calendrier de l'hôte dans ExchangeServer concernant un événement créé par l'utilisateur avec votre page Web PHP. Les invitations seront envoyées automatiquement lorsque vous enregistrez un rendez-vous avec la méthode de sauvegarde appropriée et si vous effectuez un abonnement pour les événements du dossier calendrier (les événements d'abonnement EWS ne vous appartiennent pas) et que vous le vérifierez périodiquement.

Vous pouvez créer rendez-vous comme ceci:

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

Et pour un abonnement pour le dossier de calendrier:

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

code ci-dessus crée l'abonnement pour l'événement concernant le calendrier avec délai d'attente de 5 minutes (si l'abonnement sera être supprimé du serveur si vous ne le vérifiez pas au moins une fois toutes les 5 minutes) et que l'abonnement contiendra la file d'attente concernant les éléments créés, modifiés, supprimés ou dont le statut de disponibilité a été modifié.

Pour interroger un abonnement pour les événements que vous faites quelque chose comme ceci:

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

Et vous pouvez mettre à jour votre base de données lorsque vous obtenez le type d'événement pour les articles qui vous intéressent

.
Questions connexes