将自定义信息添加到Office365中的日历项目

京王

我们已经将自己的应用程序与Office 365日历集成在一起。在我们的应用程序中,我们创建可以从Outlook查看的日历项目,其中可以通过Outlook加载项访问其他信息和操作。我们希望将自己的信息添加到日历项目中,以使最终用户无法控制控制Outlook添加。

有没有一种方法可以将我们自己的数据添加到Office 365中的日历项目中?

桑德·范·登·霍文

使用OpenTypeExtensionModel可以做到这一点。您可以在https://graph.microsoft.io/zh-cn/docs/api-reference/v1.0/api/opentypeextension_post_opentypeextension中找到更多信息

示例:要在日历项目上创建扩展,您首先需要创建一个包含信息并从OpenTypeExtensionModel继承的类。在下一个示例代码中,我创建一个OpenTypeExtensionModel Abstract调用,该类是我自己的包含BookingExtention数据的类所继承的。我有一个包含信息的枚举(在这种情况下,我使用日历项作为预订,这定义了预订的类型):

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

并使用此代码可以创建一个事件并将其发布O365

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将自定义数据添加到Kendo UI日历中作为工具提示

来自分类Dev

将自定义Gradle插件添加到项目

来自分类Dev

在什么时候可以将自定义信息添加到userDetails中?

来自分类Dev

想要将自定义Google日历通知添加到通过Google表格创建的活动中

来自分类Dev

将自定义列添加到Azure表存储中的Serilog表中以记录新信息

来自分类Dev

Word 365 2016-将自定义按钮添加到``主页''选项卡

来自分类Dev

Android-Google Maps V2-将自定义信息窗口添加到从数组创建的标记中

来自分类Dev

如何从Office365接收会议邀请,以便可以将其解析并添加到日历中?

来自分类Dev

(QML日历示例)当将自定义MouseArea添加到代理的矩形中后,日历将失去更改选择的功能

来自分类Dev

在Firebase Functions中将自定义信息添加到Stackdriver错误日志

来自分类Dev

将自定义卡信息添加到付款请求

来自分类Dev

在Visual Studio 2013中将自定义项目添加到智能感知

来自分类Dev

如何将自定义类添加到emmet.io列表包装中的项目?

来自分类Dev

如何将自定义警报对话框中的项目添加到列表视图?

来自分类Dev

如何将自定义项目添加到nautilus上下文菜单中,而不是添加到子菜单中?

来自分类Dev

如何将自定义项目添加到nautilus上下文菜单中,而不是添加到子菜单中?

来自分类Dev

Office 365组日历中的自定义加载项

来自分类Dev

使用CocoaPods时如何将自定义项目配置添加到Xcode?

来自分类Dev

将自定义HTML帮助器添加到MVC项目

来自分类Dev

如何使用菜单布局将自定义项目添加到NavigationView?

来自分类Dev

将自定义字段添加到购物车项目

来自分类Dev

如何将自定义内容添加到CMake项目?

来自分类Dev

如何将自定义操作添加到Wix安装项目

来自分类Dev

如何将自定义项目符号添加到tinyMCE?

来自分类Dev

如何将自定义目录添加到Scala SBT项目?

来自分类Dev

将自定义HTML帮助器添加到MVC项目

来自分类Dev

如何将自定义项目符号添加到tinyMCE?

来自分类Dev

将自定义工作流程添加到“创建项目”屏幕

来自分类Dev

Wix无法将自定义操作添加到项目

Related 相关文章

  1. 1

    将自定义数据添加到Kendo UI日历中作为工具提示

  2. 2

    将自定义Gradle插件添加到项目

  3. 3

    在什么时候可以将自定义信息添加到userDetails中?

  4. 4

    想要将自定义Google日历通知添加到通过Google表格创建的活动中

  5. 5

    将自定义列添加到Azure表存储中的Serilog表中以记录新信息

  6. 6

    Word 365 2016-将自定义按钮添加到``主页''选项卡

  7. 7

    Android-Google Maps V2-将自定义信息窗口添加到从数组创建的标记中

  8. 8

    如何从Office365接收会议邀请,以便可以将其解析并添加到日历中?

  9. 9

    (QML日历示例)当将自定义MouseArea添加到代理的矩形中后,日历将失去更改选择的功能

  10. 10

    在Firebase Functions中将自定义信息添加到Stackdriver错误日志

  11. 11

    将自定义卡信息添加到付款请求

  12. 12

    在Visual Studio 2013中将自定义项目添加到智能感知

  13. 13

    如何将自定义类添加到emmet.io列表包装中的项目?

  14. 14

    如何将自定义警报对话框中的项目添加到列表视图?

  15. 15

    如何将自定义项目添加到nautilus上下文菜单中,而不是添加到子菜单中?

  16. 16

    如何将自定义项目添加到nautilus上下文菜单中,而不是添加到子菜单中?

  17. 17

    Office 365组日历中的自定义加载项

  18. 18

    使用CocoaPods时如何将自定义项目配置添加到Xcode?

  19. 19

    将自定义HTML帮助器添加到MVC项目

  20. 20

    如何使用菜单布局将自定义项目添加到NavigationView?

  21. 21

    将自定义字段添加到购物车项目

  22. 22

    如何将自定义内容添加到CMake项目?

  23. 23

    如何将自定义操作添加到Wix安装项目

  24. 24

    如何将自定义项目符号添加到tinyMCE?

  25. 25

    如何将自定义目录添加到Scala SBT项目?

  26. 26

    将自定义HTML帮助器添加到MVC项目

  27. 27

    如何将自定义项目符号添加到tinyMCE?

  28. 28

    将自定义工作流程添加到“创建项目”屏幕

  29. 29

    Wix无法将自定义操作添加到项目

热门标签

归档