2016-11-03 3 views
1

Im Versuch, Push-Benachrichtigung auf Kalenderereignisse durch Microsoft GraphMicrosoft Graph Webhook/Abonnement, immer mehrere Posten zu meinem notificationUrl

die notificationURL Punkte webservice zu empfangen, die auf NodeJS läuft

Abonnement ich gemacht habe, hat diese Optionen.

{ 
    "changeType": "created,updated,deleted", 
    "notificationUrl": "myurl", 
    "resource": "users/userid/events?$filter=sensitivity%20eq%20%27Normal%27", 
    "expirationDateTime":"2016-11-05T18:23:45.9356913Z", 
    "clientState": "customclientstate" 
} 

aber im, mehrere POST Anrufe bekommen (2 ~ 4) aus Abo kommen (alle von ihnen identisch Körper), wenn ein einzelnes Ereignis geändert wird.

Es ist nur ein Abonnement aktiv, ein einzelner Kalender, und ich reagiere auf die Anfrage mit Statuscode 204 ohne Inhalt (getestet mit Postboten).

sein ein großes Problem, da im Aktualisierung DB wann immer kommt die Anforderung in.

jemand hat in dieses Problem? Ich habe überall ohne Ergebnisse gesucht.

jeder Eingang würde sehr geschätzt werden !! =).

+0

Ich kann das Problem nicht wiederholen, das Sie sehen. Haben Sie beim Erstellen oder Aktualisieren von Ereignissen mehrere Benachrichtigungen erhalten? Können Sie überprüfen, ob die Nutzdaten der Benachrichtigung identisch sind, indem Sie die Eigenschaften subscriptionId und changeType betrachten? Beachten Sie, dass das Löschen eines Ereignisses 2 Benachrichtigungen auslöst, eine wird aktualisiert und eine gelöscht. Möglicherweise haben Sie 2 oder mehr Abonnements mit derselben notificationUrl erstellt. –

+0

mehrere eintreffende Ereignisse haben dieselbe Subskriptions-ID. und ich erhalte mehrere Benachrichtigungen sowohl beim Erstellen als auch beim Aktualisieren. Ich dachte, es wäre der Fall von zwei Subskriptionen mit der gleichen notificationURL, aber nach dem Löschen aller Subskriptionen und um sicherzustellen, dass ich keine Benachrichtigung erhalten habe, versuchte ich es erneut mit dem einzigen Abonnement, nur um mehrere Benachrichtigungen zu erhalten –

Antwort

0

Ich habe das gleiche Problem. Wenn ich ein neues Ereignis im Bürokalender erstelle, erhalte ich immer eine Benachrichtigung mit ChangeType: Created und gleichzeitig drei Benachrichtigungen mit ChangeType: Updated. Wenn ich eine Veranstaltung im Büro annulliere, bekomme ich immer 3 x aktualisierte Benachrichtigungen und schließlich 1 x ChangeType: Deleted.

Was Sie hier tun können, ist die ChangeKey-Validierung. Jedes Mal, wenn Sie eine neue Benachrichtigung vom Büro erhalten, müssen Sie dieses Ereignis von der API anfordern, richtig?

Sobald Sie dieses Ereignis abgerufen haben, können Sie überprüfen, ob sich die Eigenschaft event.ChangeKey geändert hat.

Es ist dasselbe wie Etag in Websites. Wenn sich der Inhalt ändert, ändert sich der Etag-Hash.

Wenn Sie Created Benachrichtigung erhalten, nehmen Sie ChangeKey dieses Ereignis und speichern Sie es in Array oder db und immer wenn Sie Benachrichtigung erhalten Sie überprüfen, ob Sie die ID dieses Ereignisses bereits in Array oder db und auch wenn ChangeKey geändert hat. Wenn ChangeKey das gleiche wie beim letzten Mal ist, müssen Sie dieses Ereignis nicht in db aktualisieren.

Dies funktioniert auch bei wiederkehrenden Ereignissen, wenn sich auch nur ein Ereignis geändert hat. ChangeCey des SeriesMaster-Ereignisses ändert sich ebenfalls.

Verwandte Themen