2016-06-30 9 views
0

Office 365カレンダーに独自のアプリケーションを統合しました。私たちのアプリケーションから、Outlookアドインを使って余分な情報やアクションにアクセスできるカレンダーアイテムを作成します。私たちはカレンダーアイテムに自分の情報を追加して、アウトルックアドを制御するためにエンドユーザーには見えないはずです。Office365のカレンダーアイテムにカスタム情報を追加

Office 365のカレンダーアイテムに独自のデータを追加する方法はありますか?

答えて

0

これはOpenTypeExtensionModelで可能です。あなたが最初の情報が含まれており、OpenTypeExtensionModelから継承するクラスを作成する必要があり、カレンダー項目の拡張機能を作成するには :あなたは https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/opentypeextension_post_opentypeextension

例でより多くの情報を見つけることができます。次のサンプルコードでは、データのReservationExtentionから継承した自分のクラスであるOpenTypeExtensionModel抽象呼び出しを作成します。あなたはこれらのクラスを持っていたら

public abstract class OpenTypeExtensionModel 
{ 
    [JsonProperty("@odata.type")] 
    public string Type { get { return "Microsoft.Graph.OpenTypeExtension"; } } 

    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] 
    public string Id { get; set; } 
    public string ExtensionName { get; set; } 
} 

public enum ItemType 
{ 
    Booking, 
    Reservation, 
    Option 
} 

public class BookingExtension : OpenTypeExtensionModel 
{ 
    public ItemType ItemType { get; set; } 

    public BookingExtension(string extensionName) 
    { 
     Id = Guid.NewGuid().ToString(); 
     ExtensionName = extensionName; 
    } 
} 

は、使用して予定表アイテムに追加することができます:私は(このケースでは、私は、予約と予定表アイテムを使用すると、これは予約の種類を定義する)の情報が含まれている列挙型を持っています次のコード:

 private EventModel CreateOutlookEvent(string subject, string body) 
    { 
     Models.EmailAddress EventOrganizer = new Models.EmailAddress { address = "[email protected]", name = "Donald Trump" }; 
     Models.EmailAddress EventAttendee = new Models.EmailAddress { address = "[email protected]", name = "Hilary Clinton" }; 

     EventModel outlookEvent = new EventModel(); 
     outlookEvent.body = new EventBody { contentType = "Text", content = body }; 
     outlookEvent.subject = subject; 
     outlookEvent.start = new Models.DateTimeTimeZone 
     { 
      DateTime = DateTime.Now 
     }; 
     outlookEvent.end = new Models.DateTimeTimeZone 
     { 
      DateTime = DateTime.Now.AddHours(1) 
     }; 
     outlookEvent.attendees = new List<Models.Attendee>(); 
     outlookEvent.attendees.Add(new Models.Attendee { emailAddress = EventAttendee }); 
     outlookEvent.isOrganizer = false; 
     outlookEvent.organizer = new Organizer() { emailAddress = EventOrganizer }; 

     var extension = new BookingExtension("mindPark.Extensions.Booking") 
     { 
      ItemType = ItemType.Option 
     }; 

     outlookEvent.extensions = new List<BookingExtension>(); 
     outlookEvent.extensions.Add(extension); 
     return outlookEvent; 
    } 

そして、このコードを使用すると、イベントを作成し、それが

public async Task<ActionResult> CreateEvent() 
    { 
     EventModel outlookEvent = CreateOutlookEvent("Debat", "Are you in for a debate?"); 
     await PostOutLookEvent(outlookEvent); 

    } 

    private async Task PostOutLookEvent(EventModel outlookEvent) 
    { 
     var accessToken = (string)Session["access_token"]; 
     HttpClient httpClient = new HttpClient(); 
     httpClient.BaseAddress = new Uri("https://graph.microsoft.com/"); 
     httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); 
     httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     var request = new HttpRequestMessage(HttpMethod.Post, "beta/me/events"); 
     request.Content = new StringContent(JsonConvert.SerializeObject(outlookEvent), Encoding.UTF8, "application/json"); 


     HttpResponseMessage response = await httpClient.SendAsync(request); 
     if (response.IsSuccessStatusCode) 
     { 
      string s = await response.Content.ReadAsStringAsync(); 
     } 
    } 
をO365投稿することができます
関連する問題