2017-06-29 1 views
1

効率を高めるために、システムをポーリングからwebhooksサブスクリプションとデルタクエリを使用するようにアップグレードしました。Microsoft Graphは作成/削除のために多くの不必要な通知を送信します

しかし、ウェブフックの場合、私は不必要な/偽の通知をたくさん得ていることを知っています。

たとえば、ユーザがイベントをキャンセルした場合、通知は複数のupdateと表示され、そのあとにはdeleted通知が1秒間で送信されます。

これは、(作業キューが空であれば)通知に即座に反応できるのではなく、スロットル/デバウンスを追加しなければならないという状況を作り出すので、非常に面倒ですウェブフックからのより正確な読み取り。次のように

も更新を招く削除の例は:

[2017-06-28T23:17:40.657Z][meetingroom1.outlookDidNotify] Received notification { 
    "subscriptionId": "54c27b11-c2e2-4962-89dd-cf316bf3eecb", 
    "subscriptionExpirationDateTime": "2017-06-28T23:59:59.999+00:00", 
    "changeType": "updated", 
    "resource": "Users/f4a2ac63-ddf7-40dc-80da-4e05acf6488a/Events/AAMkADc1MWNjZWM3LTNhZDYtNGYwYi04OWYxLTU0N2E0MmI5YTE4MwBGAAAAAAAKhIOGniPIR6bsTEhp5zDzBwAPLFcVBl_pRZA4tM1jHR47AAAAAAENAAAPLFcVBl_pRZA4tM1jHR47AAD5gM31AAA=", 
    "resourceData": { 
    "@odata.type": "#Microsoft.Graph.Event", 
    "@odata.id": "Users/f4a2ac63-ddf7-40dc-80da-4e05acf6488a/Events/AAMkADc1MWNjZWM3LTNhZDYtNGYwYi04OWYxLTU0N2E0MmI5YTE4MwBGAAAAAAAKhIOGniPIR6bsTEhp5zDzBwAPLFcVBl_pRZA4tM1jHR47AAAAAAENAAAPLFcVBl_pRZA4tM1jHR47AAD5gM31AAA=", 
    "@odata.etag": "W/\"DwAAABYAAAAPLFcVBl+pRZA4tM1jHR47AAD+zvOL\"", 
    "id": "AAMkADc1MWNjZWM3LTNhZDYtNGYwYi04OWYxLTU0N2E0MmI5YTE4MwBGAAAAAAAKhIOGniPIR6bsTEhp5zDzBwAPLFcVBl_pRZA4tM1jHR47AAAAAAENAAAPLFcVBl_pRZA4tM1jHR47AAD5gM31AAA=" 
    }, 
    "clientState": "…" 
} 
[2017-06-28T23:17:40.658Z][meetingroom1.outlookDidNotify] Received notification { 
    "subscriptionId": "54c27b11-c2e2-4962-89dd-cf316bf3eecb", 
    "subscriptionExpirationDateTime": "2017-06-28T23:59:59.999+00:00", 
    "changeType": "deleted", 
    "resource": "Users/f4a2ac63-ddf7-40dc-80da-4e05acf6488a/Events/AAMkADc1MWNjZWM3LTNhZDYtNGYwYi04OWYxLTU0N2E0MmI5YTE4MwBGAAAAAAAKhIOGniPIR6bsTEhp5zDzBwAPLFcVBl_pRZA4tM1jHR47AAAAAAENAAAPLFcVBl_pRZA4tM1jHR47AAD5gM31AAA=", 
    "resourceData": { 
    "@odata.type": "#Microsoft.Graph.Event", 
    "@odata.id": "Users/f4a2ac63-ddf7-40dc-80da-4e05acf6488a/Events/AAMkADc1MWNjZWM3LTNhZDYtNGYwYi04OWYxLTU0N2E0MmI5YTE4MwBGAAAAAAAKhIOGniPIR6bsTEhp5zDzBwAPLFcVBl_pRZA4tM1jHR47AAAAAAENAAAPLFcVBl_pRZA4tM1jHR47AAD5gM31AAA=", 
    "@odata.etag": "W/\"CQAAAA==\"", 
    "id": "AAMkADc1MWNjZWM3LTNhZDYtNGYwYi04OWYxLTU0N2E0MmI5YTE4MwBGAAAAAAAKhIOGniPIR6bsTEhp5zDzBwAPLFcVBl_pRZA4tM1jHR47AAAAAAENAAAPLFcVBl_pRZA4tM1jHR47AAD5gM31AAA=" 
    }, 
    "clientState": "…" 
} 

は、同様に第二の画分中の同じイベントに対して複数の更新通知を送信します。秒以内に、いくつかのアップデートイベントが続くことができます作成​​され

イベント:

[2017-06-28T15:57:45.044Z][meetingroom2.outlookDidNotify] Received notification { 
    "subscriptionId": "de0147cc-cdef-4141-b601-4eb32cec1377", 
    "subscriptionExpirationDateTime": "2017-06-28T23:59:59.999+00:00", 
    "changeType": "created", 
    "resource": "Users/97e22591-9c20-4030-a11e-102ba89741fc/Events/AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=", 
    "resourceData": { 
    "@odata.type": "#Microsoft.Graph.Event", 
    "@odata.id": "Users/97e22591-9c20-4030-a11e-102ba89741fc/Events/AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=", 
    "@odata.etag": "W/\"DwAAABYAAADlDV58cGeaS7ZJcZ6ff+AvAAD9kqa/\"", 
    "id": "AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=" 
    }, 
    "clientState": "…" 
} 
[2017-06-28T15:57:45.954Z][meetingroom2.outlookDidNotify] Received notification { 
    "subscriptionId": "de0147cc-cdef-4141-b601-4eb32cec1377", 
    "subscriptionExpirationDateTime": "2017-06-28T23:59:59.999+00:00", 
    "changeType": "updated", 
    "resource": "Users/97e22591-9c20-4030-a11e-102ba89741fc/Events/AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=", 
    "resourceData": { 
    "@odata.type": "#Microsoft.Graph.Event", 
    "@odata.id": "Users/97e22591-9c20-4030-a11e-102ba89741fc/Events/AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=", 
    "@odata.etag": "W/\"DwAAABYAAADlDV58cGeaS7ZJcZ6ff+AvAAD9kqa/\"", 
    "id": "AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=" 
    }, 
    "clientState": "…" 
} 
[2017-06-28T15:57:47.409Z][meetingroom2.outlookDidNotify] Received notification { 
    "subscriptionId": "de0147cc-cdef-4141-b601-4eb32cec1377", 
    "subscriptionExpirationDateTime": "2017-06-28T23:59:59.999+00:00", 
    "changeType": "updated", 
    "resource": "Users/97e22591-9c20-4030-a11e-102ba89741fc/Events/AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=", 
    "resourceData": { 
    "@odata.type": "#Microsoft.Graph.Event", 
    "@odata.id": "Users/97e22591-9c20-4030-a11e-102ba89741fc/Events/AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=", 
    "@odata.etag": "W/\"DwAAABYAAADlDV58cGeaS7ZJcZ6ff+AvAAD9kqbB\"", 
    "id": "AAMkADFlY2YyODZiLTc1OGItNGE1Yy1iNDI1LWNjMGQ5MDRjNDU2ZABGAAAAAACfo61cAY_iTZYbfhL-JgzZBwDlDV58cGeaS7ZJcZ6ff_AvAAAAAAENAADlDV58cGeaS7ZJcZ6ff_AvAAD9hgs0AAA=" 
    }, 
    "clientState": "…" 
} 

答えて

2

通知は、Outlookのカレンダーの行動の結果です。特定の変更タイプのみを購読したり、サブスクリプションに$フィルタを使用することを検討することができます。

POST https://graph.microsoft.com/V1.0/subscriptions 

Header: 
Content-type = application/json 

Body: 
{ 
    "resource": "me/mailFolders('Inbox')/messages?$filter=IsRead%20eq%20false", 
    "notificationUrl": "https://mywebhook.azurewebsites.net/api/send/NotifyClient", 
    "changeType": "Created,Deleted ", 
    "expirationDateTime": "2017-06-30T18:23:45.935Z", 
    "clientState": "Message unread" 
} 
+0

私は残念ながら、作成/削除以外の更新も追跡したいので、changeTypeでフィルタリングすることはできません。 $フィルタは会議室のリソース用のカレンダーですが、私が見ることのできるフィルタリング可能なものはありませんが、素晴らしいトリックです。 あなたの答えをありがとう、それは非常に便利ですが、私はそれがまだあなたが言及Outlookの予定表の動作のバグレポートとして関連性があるとして受け入れられるとマークすることはできません。 –

関連する問題