Abonnieren von Änderungsbenachrichtigungen von Clouddruck-APIs mit Microsoft Graph
Universelles Drucken unterstützt Kunden beim Verlegen ihrer Druckinfrastruktur in die Cloud und ist Teil eines stabilen Systems aus Partnerlösungen, die erweiterte Druckfunktionen bieten. Die Leistungsfähigkeit dieser Lösungen kann zusätzlich gesteigert werden, wenn Sie die Clouddruck-APIs in Microsoft Graph für die Integration in Universelles Drucken verwenden.
Viele Partnerlösungen müssen von den Benutzergeräten an die Drucker gesendete Druckaufträge in Echtzeit verarbeiten. Dies bedeutet, dass sie benachrichtigt werden müssen, wenn Druckaufträge zur Verarbeitung verfügbar sind. Universelles Drucken bietet Hooks für Druckanbieterlösungen, die über Aufträge in der Cloud benachrichtigt werden, und APIs, die die Verwaltung von Druckern und Druckaufträgen ermöglichen.
In diesem Artikel wird erläutert, wie Sie Benachrichtigungen für verschiedene Druckauftragsereignisse abonnieren können.
Erste Schritte mit Änderungsbenachrichtigungen
Bevor Sie änderungsbenachrichtigungen über Microsoft Graph nutzen können, müssen Sie Ihre Anwendung in Azure registrieren und Ihre Anwendung im Kunden Microsoft Entra Mandanten bereitstellen. Stellen Sie sicher, dass für die Anwendung die erforderlichen Berechtigungsbereiche aktiviert sind, wie weiter unten in diesem Artikel beschrieben.
Benachrichtigungen und Abonnements
Universelles Drucken unterstützt derzeit Benachrichtigungen für zwei Szenarien im Zusammenhang mit Druckaufträgen:
"PrintTask is triggered (JobStarted)": Eine Anwendung kann Benachrichtigungen zum Auslösen ihres PrintTask(Hook) abonnieren. Details zum Auslösen einer Aufgabe finden Sie unter Aktivieren des Pull-Drucks. Aktuell kann ein Druckauftrag nur für ein "JobStarted"-Ereignis ausgelöst werden. Ein "JobStarted"-Ereignis wird ausgelöst, wenn ein Druckauftrag erfolgreich erstellt wurde, die Nutzdaten hochgeladen und die Auftragsverarbeitung gestartet wurde.
"JobFetchable": Nach dem Starten des Auftrags kann eine Verarbeitung durch Druckanwendungen von Drittanbietern oder Universelles Drucken erfolgen (z. B. Konvertieren von XPS-Nutzdaten in PDF bei einem PDF-Drucker). Nach Abschluss der Verarbeitung und wenn die Nutzdaten bereit zum Herunterladen durch einen Drucker sind, wird für den entsprechenden Druckauftrag ein "JobFetchable"-Ereignis ausgelöst.
Hinweis
Für die Überwachung auf Änderungsbenachrichtigungen zu JobFetchable-Ereignissen ist keine printTaskDefinition-Ressource erforderlich.
Die Anwendung sollte doppelte Benachrichtigungen verarbeiten.
Erstellen einer Anwendung zum Überwachen auf Benachrichtigungen
Informationen zum Lauschen auf Microsoft Graph-Benachrichtigungen finden Sie unter Einrichten von Benachrichtigungen für Änderungen an Benutzerdaten – Codebeispiele.
Berechtigungsbereiche
Um Benachrichtigungen für Druckaufträge zu abonnieren, müssen für Anwendungen die folgenden Berechtigungsbereiche im Microsoft Entra Mandanten des Kunden genehmigt sein:
Für "printTask triggered (JobStarted)"-Ereignisse: die in Get taskDefinition aufgeführten Berechtigungen.
Für "JobFetchable"-Ereignisse: die in Abonnement erstellen aufgeführten Berechtigungen.
Anwendungen müssen das Microsoft Entra Sicherheitstoken im Microsoft Graph-API-Anforderungsheader generieren und verwenden. Das Sicherheitstoken enthält die Ansprüche gemäß den Bereichen, die vom Administrator für den Microsoft Entra Mandanten des Kunden genehmigt wurden.
Erstellen eines Abonnements: "PrintTask triggered (JobStarted)"-Ereignis
Einige Anwendungen überwachen Druckwarteschlangen auf eingehende Aufträge und sollten benachrichtigt werden, sobald sich ein gültiger Auftrag in der Warteschlange befindet. Nachdem sie benachrichtigt wurden, können sie die relevanten Auftragsmetadaten erfassen oder sogar Änderungen am Druckauftrag vornehmen – z. B. den Auftrag abbrechen oder ihn von der aktuellen in eine andere Druckwarteschlange umleiten, nachdem die Jobattribute entsprechend geändert wurden.
Stellen Sie vor dem Erstellen einer Benachrichtigung zu einem "printTasktriggered"-Ereignis sicher, dass die Anwendung Folgendes erstellt hat:
Eine printTaskDefinition für den Microsoft Entra Mandanten des Kunden. Eine einzelne Aufgabendefinition kann einem oder mehreren Druckern innerhalb desselben Microsoft Entra Mandanten zugeordnet werden.
Ein printTaskTrigger für jede der Druckerwarteschlangen, für die der Partner eine Benachrichtigung erhalten möchte, wenn ein neuer Druckauftrag gestartet wird. Das printTaskTrigger muss an das printTaskDefinition gebunden werden.
Hinweis
Einem einzelnen Drucker kann nur ein printTaskTrigger und einem einzelnen printTaskTrigger kann nur ein printTaskDefinitionzugeordnet werden. Einem printTaskDefinition können hingegen ein oder mehrere printTaskTriggers zugeordnet werden.
Mit der printTaskDefinition, die für den Microsoft Entra Mandanten des Kunden vorhanden ist, kann die Anwendung mithilfe von printTaskDefinition ein Abonnement für ein printTask-ausgelöstes (JobStarted)-Ereignis erstellen. Zu beachten beim Erstellen des Abonnements:
- Das
resource
-Feld muss aufprint/taskDefinitions/{printTaskDefinition ID}/tasks
festgelegt werden. - Das
changeType
-Feld muss aufcreated
festgelegt werden. - Das
expirationDateTime
-Feld muss einen kleineren Wert als die maximale Ablaufzeit aufweisen.
Weitere Informationen finden Sie unter Eigenschaften des subscription-Ressourcentyps.
Anforderung
Das folgende Beispiel zeigt eine Anfrage.
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType":"created",
"resource":"print/taskDefinitions/{printTaskDefinition ID}/tasks",
"clientState":"secret",
"notificationUrl":"{URL for receiving the event – e.g. https://webhookappexample.azurewebsites.net/api/notifications}",
"expirationDateTime":"2020-01-30T22:42:09Z"
}
Antwort
Das folgende Beispiel zeigt die Antwort.
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#subscriptions/$entity",
"id": "{Subscription ID}",
"resource": "print/taskDefinitions/{printTaskDefinition ID}/tasks",
"applicationId": "{application ID}",
"changeType": "created",
"clientState": "secret",
"notificationUrl": "{URL for receiving the event – e.g. https://webhookappexample.azurewebsites.net/api/notifications}",
"notificationQueryOptions": null,
"lifecycleNotificationUrl": null,
"expirationDateTime": "2020-12-30T22:42:09Z",
"creatorId": "{Creator ID}",
"includeResourceData": null,
"latestSupportedTlsVersion": "v1_2",
"encryptionCertificate": null,
"encryptionCertificateId": null
}
Erstellen eines Abonnements: JobFetchable-Ereignis
Einige Cloudanwendungen müssen Druckaufträge von Universelles Drucken herunterladen, wenn sie bereit sind. Da sich diese in der Cloud ausgeführten Anwendungen nicht hinter der Firewall des Kunden befinden, können sie Microsoft Graph-Änderungsbenachrichtigungen verwenden, um benachrichtigt zu werden, wenn ein Druckauftrag heruntergeladen werden kann.
Hinweis
Druckaufträge können nicht mehr geändert werden, wenn sie in den Status "JobFetchable" übergehen. Für jede Druckerwarteschlange muss eine JobFetchable-Benachrichtigung erstellt werden. Zu beachten beim Erstellen des Abonnements:
- Das
resource
-Feld muss als 'print/printers/{printer id}/jobs' (drucken/Drucker/{Drucker-ID}/Aufträge) festgelegt werden. - Das
changeType
-Feld muss aufupdated
festgelegt werden. - Das
notificationQueryOptions
-Feld muss auf$filter = isFetchable eq true
festgelegt werden. - Das
expirationDateTime
-Feld muss einen kleineren Wert als die maximale Ablaufzeit aufweisen.
Weitere Informationen finden Sie unter Eigenschaften des subscription-Ressourcentyps.
Anforderung
Das folgende Beispiel zeigt eine Anfrage.
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType":"updated",
"resource":"print/printers/{printer id}/jobs",
"notificationQueryOptions": "$filter = isFetchable eq true",
"notificationUrl":"{URL for receiving the event – e.g. https://webhookappexample.azurewebsites.net/api/notifications}",
"expirationDateTime":"2020-12-30T22:42:09Z",
"clientState":"mysecret"
}
Antwort
Das folgende Beispiel zeigt die Antwort.
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#subscriptions/$entity",
"id": "{Subscription ID}",
"resource": "print/printers/{printer ID}/jobs",
"applicationId": "{Application ID}",
"changeType": "updated",
"clientState": "mysecret",
"notificationUrl": "{URL for receiving the event – e.g. https://webhookappexample.azurewebsites.net/api/notifications}",
"notificationQueryOptions": "$filter = isFetchable eq true",
"lifecycleNotificationUrl": null,
"expirationDateTime": "2020-12-30T22:42:09Z",
"creatorId": "{Creator ID}",
"includeResourceData": null,
"latestSupportedTlsVersion": "v1_2",
"encryptionCertificate": null,
"encryptionCertificateId": null
}
Erneuerung eines Abonnements für Benachrichtigungen
In Microsoft Graph besteht ein Limit für Ablaufzeiten. Einzelheiten hierzu finden Sie unter maximale Ablaufzeit. Damit weiterhin Benachrichtigungen erhalten werden, muss das Abonnement in regelmäßigen Abständen mithilfe der Abonnementerneuerungs-API verlängert werden.
Abonnements für Benachrichtigungen abrufen oder löschen
Anwendungen können bei Bedarf Details zum Abonnement abrufen oder ein Abonnement löschen. Einzelheiten finden Sie unter Verwenden der Microsoft Graph-API, um Änderungsbenachrichtigungen zu erhalten.
Häufig gestellte Fragen
Wie überprüft Microsoft Graph Benachrichtigungs-URLs?
Microsoft Graph überprüft den Benachrichtigungsendpunkt, der in der Eigenschaft notificationUrl der Abonnementanfrage angegeben ist, bevor das Abonnement erstellt wird. Einzelheiten hierzu finden Sie unter Überprüfung von Benachrichtigungsendpunkten.
Was sollten Anwendungen nach dem Empfang einer Änderungsbenachrichtigung tun?
Anwendungen sollten jede empfangene Änderungsbenachrichtigung verarbeiten und bestätigen. Weitere Informationen finden Sie unter Verarbeitung von Änderungsbenachrichtigungen.
Wie kann ich die Authentizität von Benachrichtigungen überprüfen?
Die Authentizität von Benachrichtigungen kann mit dem clientState-Wert überprüft werden, wie in Verarbeiten der Änderungsbenachrichtigung beschrieben, oder durch Validieren von Token in der Änderungsbenachrichtigung.
Wie kann ich eine Liste der aktiven Abonnements erhalten?
Details zum Abrufen einer Liste von Webhook-Abonnements finden Sie unter Abonnements auflisten.
Verwandte Inhalte
- Weitere Informationen zur API für den Clouddruck in Microsoft Graph finden Sie unter Clouddruck-API "Universelles Drucken" – Übersicht.
- Wenn Sie Vorschläge machen oder Feedback zur API für das Drucken in der Cloud in Microsoft Graph geben möchten, besuchen Sie die Tech Community für Universelles Drucken.