Graph SDK 中的订​​阅通知

Mic*_*gel 5 c# microsoft-graph-api

我目前正在使用 Graph SDK 实现 Webhook,但遇到了一些问题/不便。我正在订阅用户资源的日历事件,如下所示:

var request = GraphClientInitializer.Instance.GraphClient.Subscriptions.Request();
var result = await request.AddAsync(
                    new Subscription
                    {
                        ChangeType = WebhookConsts.SubscriptionChangeType,
                        NotificationUrl = WebhookConsts.SubscriptionNotificationUrl,
                        Resource = "/users/" + UserMail + "/" + "events",
                        ExpirationDateTime = DateTimeOffset.Now.AddMinutes(20),
                        ClientState = WebhookConsts.SubscriptionIdentifier
                    }
                    );
Run Code Online (Sandbox Code Playgroud)

我收到通知,并且可以读取发送到通知 URL 的消息,但 SDK 中似乎没有解析收到通知的对象。

目前我自己正在做:

public class Notification
{
    [JsonProperty("value")]
    public List<NotificationValue> Values { get; set; }
}

public class NotificationValue
{
    [JsonProperty("subscriptionId")]
    public String SubscriptionId { get; set; }

    [JsonProperty("subscriptionExpirationDateTime")]
    public String SubscriptionExpirationDateTime { get; set; }

    [JsonProperty("clientState")]
    public String ClientState { get; set; }

    [JsonProperty("changeType")]
    public String ChangeType { get; set; }

    [JsonProperty("resource")]
    public String Resource { get; set; }

    [JsonProperty("resourceData")]
    public NotificationResourceData ResourceData { get; set; }
}

public class NotificationResourceData
{
    [JsonProperty("@odata.type")]
    public String ODataType { get; set; }

    [JsonProperty("@odata.id")]
    public String ODataId { get; set; }

    [JsonProperty("odata.etag")]
    public String ODataEtag { get; set; }

    [JsonProperty("Id")]
    public String Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

是否有一个我可以用于此目的的对象或我可以在 Graph SDK 中实现它的任何其他方式。

小智 1

目前 SDK 中不存在此功能。SDK是根据API服务(https://graph.microsoft.com/v1.0/$metadata)提供的元数据生成的,并且那里没有定义通知对象。

我相信这将为图书馆带来巨大的扩展。您愿意向 Microsoft.GraphModels>Extensions文件夹提出拉取请求吗?这将允许其他人使用您创建的通知类。