Outlook Streaming-Benachrichtigungen REST-API-Verweis (Vorschauversion)
Gilt für: Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com
Hinweis
Diese Version der Dokumentation deckt die Streaming-Benachrichtigungs-API in der Vorschauversion ab. Die Funktionen der Vorschauversion können vor der Fertigstellung geändert werden und können den Code, der sie verwendet, unterbrechen. Aus diesem Grund sollten Sie in der Regel nur eine Produktionsversion einer API in Ihrem Produktivcode verwenden. Falls verfügbar, ist v2.0 derzeit die bevorzugte Version.
Die Outlook Streaming Benachrichtigungen REST API sendet Benachrichtigungen über eine direkte Verbindung, damit Client-Anwendungen über Änderungen an den Postfachdaten des Benutzers informiert werden. Die Daten können in den Mail-, Kalender-, Kontakt- oder Aufgabendaten des Benutzers enthalten sein, die durch Azure Active Directory in Office 365 oder in Microsoft-Konten speziell in diesen Domänen gesichert sind: Hotmail.com, Live.com, MSN.com, Outlook.com und Passport.com.
Hinweis
Zur Vereinfachung des Verweises verwendet der Rest dieses Artikels Outlook.com, um diese Microsoft-Konto-Domänen mit einzuschließen.
Übersicht
Der Office 365 Streaming-Benachrichtigungsdienst stellt eine direkte Verbindung zu einem Client her und liefert Benachrichtigungen über Datenänderungen, die von einer Client-App angefordert werden.
Wenn eine App Benachrichtigungen für eine Art von Änderungsereignis auf einer bestimmten Ressource abonniert (z. B. Nachrichten im Posteingang des Benutzers), wird eine langlebige Verbindung zwischen dem Office 365-Server und dem Client hergestellt. Wenn ein auslösendes Ereignis eintritt (z. B. eine neue Nachricht im Posteingang), sendet der Office 365-Dienst eine Benachrichtigung an den Client. Der Client analysiert die Benachrichtigung und ergreift Maßnahmen entsprechend seiner Geschäftslogik, wie z.B. das Abrufen der neuen Nachricht und das Aktualisieren der ungelesenen Anzahl.
Vergleich von Streaming- und Push-Benachrichtigungen
Mail-, Kalender- und CRM-Apps verwenden normalerweise Benachrichtigungen, um ihren lokalen Cache, die entsprechenden Client-Ansichten oder das Backend-System bei Änderungen zu aktualisieren. Outlook unterstützt sowohl Streaming als auch Push- Benachrichtigungen. Benachrichtigungen. Für Push-Benachrichtigungen muss der Client einen Listener-Webdienst bereitstellen, um Benachrichtigungen vom Office 365-Server zu erhalten, während für Streaming-Benachrichtigungen nur eine direkte Verbindung zwischen dem Client und dem Office 365-Server erforderlich ist. Sobald eine Verbindung mit dem Server hergestellt ist, bleibt die Verbindung für einen bestimmten Zeitraum offen. Während dieser Zeit sendet der Client einmalig eine langlebige GetNotifications
Anfrage. Wenn ein auslösendes Ereignis eintritt, kann der Server einfach eine Benachrichtigung als Teil des Antwortstreams senden. Dies wird so lange fortgesetzt, bis die Verbindung unterbrochen wird, der Client die Verbindung abbricht oder ein Problem im Netzwerk auftritt.
Verwenden Sie die REST-API für Streaming-Benachrichtigungen
Authentifizierung
Um Benachrichtigungen zu abonnieren, abzurufen und zu schließen, geben Sie die entsprechenden Bereiche für die Arten von Ressourcen an, über die Sie benachrichtigt werden möchten.
Minimal benötigter Bereich
Einer der folgenden Lese- / Schreibbereiche für die Zielressource:
- https://outlook.office.com/mail.read
- https://outlook.office.com/calendars.read
- https://outlook.office.com/contacts.read
- https://outlook.office.com/tasks.read
- wl.imap
- wl.calendars
- wl.contacts_calendars
- wl.basic
Wie andere Outlook-REST-APIssollten Sie für jede Anforderung an die Outlook-Streaming-Benachrichtigungs-API ein gültiges Zugriffstoken angeben. Um ein Zugriffstoken zu erhalten, müssen Sie sich registriert und Ihre App identifiziert und die entsprechende Autorisierung erhalten haben.
Sie können mehr über einige optimierte Registrierungs- und Autorisierungs-Optionen für Sie herausfinden. Beachten Sie dies, wenn Sie mit den spezifischen Operationen in der Benachrichtigungs-API fortfahren.
Version der API
Derzeit befindet sich diese API im Vorschau-Status und ist nur im Beta-REST-API-Endpunkt verfügbar:
https://outlook.office.com/api/beta/
Ziel-Benutzer
API-Anfragen der Streaming-Benachrichtigungen werden immer im Namen des aktuellen Benutzers ausgeführt.
Streaming-Benachrichtigungs-Operationen
Änderungen in meiner Mail, meinem Kalender, meinen Kontakten oder Aufgaben abonnieren
Abonniert Streaming-Benachrichtigungen, wenn sich E-Mails, Kalenderereignisse, Kontakte oder Aufgaben in einem Office 365- oder Outlook.com-Postfach ändern. Dies ist der erste Schritt für einen Client, um Benachrichtigungen für eine Ressource (eine Entität oder Entitätensammlung) zu erhalten.
POST https://outlook.office.com/api/beta/me/subscriptions
Geben Sie im Anfragetext die folgenden erforderlichen Eigenschaften für eine Streaming-Abonnement-Anforderung an. Weitere Informationen finden Sie unter Benachrichtigungsentitäten.
odata.type - Enthält
"@odata.type":"#Microsoft.OutlookServices.StreamingSubscription"
.ChangeType - Gibt die Art der zu überwachenden Ereignisse für diese Ressource an. Siehe ChangeType für die unterstützten Arten.
Ressource - Gibt die Ressource an, die überwacht werden und Benachrichtigungen erhalten soll. Sie können optionale Abfrageparameter verwenden,
$filter
oder$select
die Bedingungen für eine Benachrichtigung verfeinern oder spezifische Eigenschaften in eine umfangreiche Benachrichtigung aufnehmen. Im Folgenden sind die unterstützten Ressourcen aufgeführt:Ein normaler Ordner oder Suchordner für Nachrichten, Ereignisse, Kontakte oder Aufgaben. Als Beispiele dienen:
https://outlook.office.com/api/beta/me/mailfolders('inbox')/messages
https://outlook.office.com/api/beta/me/taskfolders('{folder_id}')/tasks
Oder eine Entitätssammlung auf oberster Ebene mit Nachrichten, Ereignissen, Kontakten oder Aufgaben wie z.B.:
https://outlook.office.com/api/beta/me/messages
https://outlook.office.com/api/beta/me/events
https://outlook.office.com/api/beta/me/contacts
https://outlook.office.com/api/beta/me/tasks
Wenn die Abonnementsanforderung erfolgreich war, wird eine Abonnements-ID zurückgegeben. Standardmäßig läuft diese Abo-ID in 90 Minuten ab, es sei denn, der Client startet das Abhören von Benachrichtigungen über eine Verbindung. Solange die Verbindung besteht, wird das Abonnement automatisch verlängert.
Stichprobe für die Anforderung eines Abonnements
Die folgende Anforderung erstellt ein Streaming-Abonnement für erstellte, aktualisierte und gelöschte Änderungen für den Posteingang des Benutzers.
POST https://outlook.office.com/api/beta/me/subscriptions HTTP/1.1
Content-Type: application/json
{
@odata.type: "#Microsoft.OutlookServices.StreamingSubscription",
Resource: "https://outlook.office.com/api/beta/me/mailfolders('inbox')/Messages",
ChangeType: "Created,Updated,Deleted"
}
Stichprobe für die Antwort auf ein Abonnement
Eine erfolgreiche Antwort gibt HTTP 201 zurück und enthält die Abonnements-ID. Nachfolgend sehen Sie ein Antwortbeispiel:
HTTP/1.1 201 Created
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Subscriptions/$entity",
"@odata.type":"#Microsoft.OutlookServices.StreamingSubscription",
"@odata.id":"https://outlook.office.com/api/beta/Users('266efe5a-0fd7-4edd-877b-b2d1e561f193@ae01a323-3934-4475-a32d-af1274312bb0')/Subscriptions('RUM4OEJFNUIQUQ4MQ==')",
"Id":"RUM4OEJFNUIQUQ4MQ==",
"Resource":"https://outlook.office.com/api/beta/me/mailfolders('inbox')/Messages",
"ChangeType":"Created, Updated, Deleted, Missed"
}
Bedingungen für Benachrichtigung verfeinern
Sie können Benachrichtigungen auf eine Teilmenge von Elementen beschränken, indem Sie eine $filter
Klausel verwenden. Der folgende Abonnementantrag erzeugt z.B. ein Abonnement, das nur dann eine Benachrichtigung auslöst, wenn Änderungen an Nachrichten mit dem Betreff-Feld "Nachträge" vorgenommen werden.
POST https://outlook.office.com/api/beta/me/subscriptions HTTP/1.1
Content-Type: application/json
{
@odata.type: "#Microsoft.OutlookServices.StreamingSubscription",
Resource: "https://outlook.office.com/api/beta/me/mailfolders('inbox')/Messages?$filter=Subject%20eq%20%27Supplements%27",
ChangeType: "Created,Updated,Deleted"
}
Eine erfolgreiche Abonnement-Antwort sieht so aus:
HTTP/1.1 201 Created
{
"@odata.context":"https://outlook.office.com/api/beta/$metadata#Me/Subscriptions/$entity",
"@odata.type":"#Microsoft.OutlookServices.StreamingSubscription",
"@odata.id":"https://outlook.office.com/api/beta/Users('266efe5a-0fd7-4edd-877b-b2d1e561f193@ae01a323-3934-4475-a32d-af1274312bb0')/Subscriptions('MjcwOUQ2MjEtQUQ4MQ==')",
"Id":"MjcwOUQ2MjEtQUQ4MQ==",
"Resource":"https://outlook.office.com/api/beta/me/mailfolders('inbox')/Messages?$filter=Subject%20eq%20%27Supplements%27",
"ChangeType":"Created, Updated, Deleted, Missed"
}
Rich-Streaming-Benachrichtigungen abonnieren
Ein Abonnement, das nur für eine Ressourcensammlung eingerichtet wurde, gibt die ID einer geänderten Ressourceninstanz zurück. Sie müssen die Eigenschaften dieser Instanz separat abrufen. Die erste Abonnement-Anfrage oben ist ein Beispiel für diese Art von Abonnement. Der Benachrichtigungsstrom im nächsten Abschnitt zeigt nur die Ressourcen-ID an, die in einer Benachrichtigung zurückgegeben wird.
Sie können alternativ einen $select
Parameter in der Abonnementanfrage verwenden, die Eigenschaften angeben, an denen Sie Interesse haben, und diese Eigenschaftswerte auch in Streaming-Benachrichtigungen zurückgeben lassen.
Das Folgende ist ein Beispiel, das Streaming-Benachrichtigungen anfordert, die die Eigenschaft Subject umfassen, wenn ein Ereignis erzeugt wurde:
POST https://outlook.office.com/api/beta/me/subscriptions HTTP/1.1
Content-Type: application/json
{
@odata.type:"#Microsoft.OutlookServices.StreamingSubscription",
Resource: "https://outlook.office.com/api/beta/me/events?$select=Subject",
ChangeType: "Created"
}
Nach erfolgreichem Abonnieren von Rich-Streaming-Benachrichtigungen, hören Sie Benachrichtigungen zu, um die Themen- Eigenschaft in Rich-Benachrichtigungs-Nutzlastenzu erhalten.
Benachrichtigungen abhören
Der Client erstellt eine ausstehende POST-Verbindung für die angegebenen Abonnements, um den Server aufzufordern, Streaming-Benachrichtigungen zu starten.
POST https://outlook.office.com/api/beta/Me/GetNotifications
Diese POST-Anfrage wird erst abgeschlossen, wenn die angegebene ConnectionTimeoutinMinutes
erreicht ist und der Server den JSON-Blob in der Antwort beendet, oder wenn es andere Probleme gibt und entweder der Client oder der Server die Verbindung schließt.
Solange die Verbindung geöffnet ist, werden alle Abonnements, die die Verbindung nutzen, automatisch erneuert. Wenn die Verbindung beendet wird, verfallen diese Abonnements ebenfalls in 90 Minuten, es sei denn, der Client baut eine neue Verbindung für diese Abonnements auf.
Stellen Sie sicher, dass Ihr Code, der diese POST-Anfrage erzeugt, den Rückgabestatuscode HTTP 404 Not found
verarbeitet, der zurückgegeben wird, wenn ein bestimmtes Abonnement tatsächlich abgelaufen ist. Wenn das passiert, fordern Sie ein neues Abonnement an, bevor Sie erneut seinen Benachrichtigungen zuhören.
Benötigte Textparameter | Typ | Beschreibung |
---|---|---|
ConnectionTimeoutInMinutes | int32 | Die Anzahl der Minuten, die die Verbindung am Leben bleiben soll. |
KeepAliveNotificationIntervalInSeconds | int32 | Das Intervall, in dem der Server Keep-Alive-Benachrichtigungen sendet, um dem Client mitzuteilen, dass die Verbindung offen bleibt. |
SubscriptionIds | Sammlung (Zeichenfolge) | IDs der Abonnements, die über diese Verbindung benachrichtigt werden. |
Stichprobe für Abhör-Anforderungen
POST https://outlook.office.com/api/beta/Me/GetNotifications HTTP/1.1
Content-Type: application/json
{
ConnectionTimeoutInMinutes: 30,
KeepAliveNotificationIntervalInSeconds: 15,
SubscriptionIds: [
"N0UzMEU4RjMtMjg1Ri00OEFGLUE5NzEtRDM5MkI3NjBDMDY5XzdFMzU4QTE1LTFCQjAtNDc4NS04MTg2LUYwRjFFNUVFNTNDRg=="
]
}
Sie können dieselbe langlebige Verbindung verwenden, um Benachrichtigungen für mehrere Abonnements abzuhören, indem Sie mehr als eine Abonnement-ID in die POST-Anfrage aufnehmen.
POST https://outlook.office.com/api/beta/Me/GetNotifications HTTP/1.1
Content-Type: application/json
{
ConnectionTimeoutInMinutes: 30,
KeepAliveNotificationIntervalInSeconds: 15,
SubscriptionIds: [
"N0UzMEU4RjMtMjg1Ri00OEFGLUE5NzEtRDM5MkI3NjBDMDY5XzdFMzU4QTE1LTFCQjAtNDc4NS04MTg2LUYwRjFFNUVFNTNDRg==",
"Dc4NS04MTg2LUYwRjFFNUVFNTNDRgN0UzMEU4RjMtMjg1Ri00OEFGLUE5NzEtRDM5MkI3NjBDMDY5XzdFMzU4QTE1LTFCQjAtN=="
]
}
Stichprobe für Benachrichtigungsstrom
Sobald der Dienst eingerichtet ist, erhält der Client den Beginn der Benachrichtigungen JSON blob.
{
{"@odata.context":"https://outlook.office.com/api/beta/metadata#Notifications",
"value": [
Der Server sendet in festgelegten Intervallen eine Keep-Alive-Benachrichtigung, um die Verbindung offen und aktiv zu halten. Der Client stellt dieses Intervall in der KeepAliveNotificationIntervalInSeconds
Eigenschaft ein. Das Format der Keep-Alive-Benachrichtigung ist wie folgt:
{
"@odata.type": "#Microsoft.OutlookServices.KeepAliveNotification",
"Status": "OK"
}
Wenn eine verfolgte Änderung auf dem Server auftritt, sendet der Server eine Benachrichtigung an den Client über die Verbindung. In jeder Benachrichtigung setzt der Server die Eigenschaft SubscriptionExpirationDateTime
und erneuert sie immer wieder, solange die vorherige Benachrichtigung erfolgreich war.
{
"@odata.type": "#Microsoft.OutlookServices.Notification",
"Id": null,
"SubscriptionId": "N0UzMEU4...",
"SubscriptionExpirationDateTime": "2016-09-09T18:36:42.3454926Z",
"SequenceNumber": 9,
"ChangeType": "Created",
"Resource": "https://outlook.office.com/api/beta/Users('bee8ce18AAA')/Messages('AAMkADdlAA=')",
"ResourceData": {
"@odata.type": "#Microsoft.OutlookServices.Message",
"@odata.id": "https://outlook.office.com/api/beta/Users('bee8ce18AAA')/Messages('AAMkADdlAA=')",
"@odata.etag": "W/\"CQAAABYAAAB+0z/4Ly/1ToDr5FGl5k99AAABl5Do\"",
"Id": "AAMkADdlAA="
}
}
Wenn Ihre Anwendung mehreren Benachrichtigungen über dieselbe langlebige Verbindung zuhört, können Sie das Feld SubscriptionId
verwenden, um festzustellen, welches Abonnement die Benachrichtigung gesendet hat.
Hinweis
Die zweite und die danach folgende Benachrichtigung vom Server hat ein führendes Komma vor der öffnenden eckigen Klammer, um die Benachrichtigung zu einer gültigen JSON zu machen.
,{
"Id": null,
"SubscriptionId": "N0UzMEU4...",
...
}
Beispiel für die Nutzlast einer Rich-Benachrichtigung
Wenn Ihr Abonnementantrag bestimmte Eigenschaften angibt, die zurückgegeben werden sollen, umfassen die Benachrichtigungs-Nutzlasten die Werte dieser Eigenschaften. Wenn Sie das obige Beispiel verwenden, um Rich-Benachrichtigungenzu abonnieren, kann eine Rich-Benachrichtigungs-Nutzlast mit der Eigenschaft Subject wie folgt aussehen:
{
"@odata.context": "https://outlook.office.com/api/beta/$metadata#Notifications",
{
"@odata.type": "#Microsoft.OutlookServices.Notification",
"Id": null,
"SubscriptionId": "QjQzNzAwBQQ==",
"SubscriptionExpirationDateTime": "2017-01-18T00:57:28.6134733Z",
"SequenceNumber": 1,
"ChangeType": "Created",
"Resource": "https://outlook.office.com/api/beta/Users('6ed6de00-b4c1-4f9b-8ce0-30908c54da0a@ea54488f-a8f6-4c8d-acad-c3a1da54f79f')/Events('AAMkAGAAAAACisAAA=')",
"ResourceData": {
"@odata.type": "#Microsoft.OutlookServices.Event",
"@odata.id": "https://outlook.office.com/api/beta/Users('6ed6de00-b4c1-4f9b-8ce0-30908c54da0a@ea54488f-a8f6-4c8d-acad-c3a1da54f79f')/Events('AAMkAGAAAAACisAAA=')",
"@odata.etag": "W/\"IpGjeMHoYUS/RhJxluiSeAAAAAAyoQ==\"",
"Id": "AAMkAGAAAAACisAAA=",
"Subject": "Quarterly meeting CY17Q1"
}
}
]
}
Schließen Sie die Verbindung
Wenn das in der ConnectionTimeoutInMinutes
Eigenschaft angegebene Zeitlimit erreicht ist, schließt der Server die Verbindung und sendet das Ende des JSON-Blobs wie folgt.
]
}
Die Verbindung kann unter anderen Umständen unterbrochen werden, z.B. bei Netzwerkproblemen und Änderungen am Server wie Neustarts. Der Client kann anhand der Keep-Alive-Benachrichtigungen feststellen, ob die Verbindung noch aktiv ist oder abgebrochen wurde. Im letzteren Fall sollte der Client versuchen, die Verbindung mit der vorhandenen Abonnement-ID wiederherzustellen. Wenn die Abonnement-ID abgelaufen ist, sollte eine neue Abonnement-Anfrage gestellt werden, um die Verbindung wieder herzustellen.
Wenn der Client kein Abonnement mehr hören möchte, kann er die POST-Anfrage abbrechen und die Verbindung aufgeben. Wenn der Server das nächste Mal versucht, eine Benachrichtigung zu senden, erhält er einen Fehler, entdeckt den Abbruch der Verbindung, stoppt die Keep-Alive-Benachrichtigungen und schließt die Verbindung.
Benachrichtigungs-Entitäten und Aufzählungen
Abonnement
Stellt das Basisabonnement dar. Dies ist eine abstrakte Basisklasse.
Basistyp: Entität
Eigenschaft | Typ | Beschreibung | Beschreibbar? | Filterbar |
---|---|---|---|---|
Ressource | Zeichenfolge | Gibt die Ressource an, die auf Änderungen überwacht wird. | Ja | Nicht zutreffend |
ChangeType | ChangeType | Gibt die Art der Ereignisse an, die eine Benachrichtigung auslösen werden. Siehe ChangeType für die unterstützten Arten. | Ja | Nicht zutreffend |
Benachrichtigung
Stellt eine an den Client gesendete Benachrichtigung dar.
Basistyp: Entität
Eigenschaft | Typ | Beschreibung | Beschreibbar? | Filterbar |
---|---|---|---|---|
SubscriptionId | Zeichenfolge | Eindeutiger Bezeichner für das Abonnement. | Nein | Nicht zutreffend |
SequenceNumber | int32 | Gibt den Sequenzwert der Änderungs-Benachrichtigung an. | Nein | Nicht zutreffend |
ChangeType | Zeichenfolge | Gibt die Art des Ereignisses an, das die Benachrichtigung ausgelöst hat. Siehe ChangeType für die unterstützten Arten. | Nein | Nicht zutreffend |
Ressource | Zeichenfolge | Gibt das Ressourcenelement an, das auf Änderungen überwacht wird | Nein | Nicht zutreffend |
ResourceData | Entität | Identifiziert die Entität, die sich geändert hat. Dies ist eine Navigationseigenschaft | Nein | Nicht zutreffend |
ChangeType
Eine Aufzählung, die die Arten von Ereignissen angibt, die bei unterstützten Ressourcen auftreten, die eine Benachrichtigung auslösen können.
Unterstützte Werte:
- Anerkennung
- Erstellt
- Gelöscht
- Entgangen. Eine
Missed
Benachrichtigung erfolgt, wenn der Benachrichtigungsdienst die angeforderte Benachrichtigung nicht senden kann. - Aktualisiert
Nächste Schritte
Egal, ob Sie bereit sind, eine App zu erstellen oder einfach nur mehr darüber erfahren möchten, wir haben alles im Griff.
- Beginnen Sie mit den E-Mail-, Kalender- und Kontakte-REST-APIs.
- Möchten Sie Beispiele sehen? Wir haben sie.
Oder erfahren Sie mehr über die Verwendung der Office 365-Plattform:
- Outlook-REST-API im Outlook-Dev-Center
- Überblick über die Entwicklung auf der Office 365-Plattform
- Office 365 App-Authentifizierung und Ressourcen-Autorisierung
- Registrieren Sie Ihre Anwendung manuell bei Azure AD, damit sie auf Office 365-APIs zugreifen kann
- Verwenden der Outlook REST-API
- E-Mail-REST-API-Verweis
- Kalender-REST-API-Verweis
- Kontakte-REST-API-Verweis
- Ressourcenverweis für die E-Mail, Kalender, Kontakte und REST-APIs