Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Einrichten von Webhooks mit SharePoint Embedded
Webhooks sind automatisierte Nachrichten, die von einer Anwendung übertragen werden, wenn ein Trigger aktiviert wird. Sie können in SPE verwendet werden, um die Automatisierung von Workflows, die Integration von Systemen und die Reaktion auf Ereignisse in Echtzeit zu ermöglichen.
Sie verwenden Webhooks, um die Azure-Cognitive Services-APIs aus der Anwendung aufzurufen, wenn eine vorhandene Datei aktualisiert oder eine neue Datei hochgeladen wird.
Um Webhooks mit Ihrer aktuellen SharePoint Embedded-Anwendung einzurichten, müssen Sie Folgendes ausführen:
- Erstellen und registrieren Sie einen Webhookendpunkt, um Benachrichtigungen zu erhalten, wenn es eine Änderung in Ihrem Container gibt. Dies erfolgt mithilfe von REST-APIs.
- Stellen Sie eine Verbindung mit Graph her, und abonnieren Sie Änderungen. Sie können Ihre Anwendung im Internet verfügbar machen, indem Sie sie entweder lokal ausführen oder in der Cloud bereitstellen. In diesem Tutorial verwenden Sie ersteres, indem Sie ngrok verwenden und dann die Änderungen abonnieren, indem Sie einen POST-Aufruf ausführen.
- Führen Sie eine beliebige Aktion aus, indem Sie die Webhookdaten verarbeiten. Ein solcher Anwendungsfall wird im Tutorial Aktivieren der Dokumentverarbeitung mit Azure Cognitive Services behandelt.
Tipp
Weitere Informationen zu den in diesem Tutorial verwendeten Microsoft Graph-APIs finden Sie unter Erstellen eines Abonnements.
Erstellen und Registrieren eines Webhooks
Öffnen Sie die index.ts-Datei , und fügen Sie einen Endpunkt onReceiptAddedhinzu:
server.post('/api/onReceiptAdded', async (req, res, next) => {
try {
const response = await onReceiptAdded(req, res);
res.send(200, response)
} catch (error: any) {
res.send(500, { message: `Error in API server: ${error.message}` });
}
next();
});
Außerdem müssen Sie das Abfrageparser-Plug-In oben in dieser Datei hinzufügen, damit es beim Start des Servers ausgeführt wird:
server.use(restify.plugins.bodyParser(), restify.plugins.queryParser());
Erstellen Sie onReceiptAdded.ts, und implementieren Sie die -MethodeonReceiptAdded, um und driveIdzu lesenvalidationToken.
validationToken ist erforderlich, wenn Microsoft Graph einen einmaligen Aufruf zum Überprüfen des Endpunkts bei der Erstellung des Webhookabonnements vornimmt.
driveId ist die Container-ID, für die das Abonnement erstellt wird.
require('isomorphic-fetch');
export const onReceiptAdded = async (req: Request, res: Response) => {
const validationToken = req.query['validationToken'];
if (validationToken) {
res.send(200, validationToken, {"Content-Type":"text/plain"});
return;
}
const driveId = req.query['driveId'];
if (!driveId) {
res.send(200, "Notification received without driveId, ignoring", {"Content-Type":"text/plain"});
return;
}
console.log(`Received driveId: ${driveId}`);
res.send(200, "");
return;
}
Herstellen einer Verbindung mit Graph und Abonnieren von Änderungen
Befolgen Sie die Dokumentation , um mithilfe von ngrok einen Tunnel für Ihren Back-End-Server zu erstellen.
Führen Sie nach dem Starten der App den folgenden Befehl in einem Terminal aus:
ngrok http 3001
Nach erfolgreichem Abschluss sollten Sie die folgende Ausgabe erhalten. Der öffentliche Endpunkt für die App ist im roten Rechteck hervorgehoben:
Sobald das Tunneling aktiv ist, können Sie Deltaänderungen im Container abonnieren, indem Sie die Webhook-URL hinzufügen. Öffnen Sie dazu Postman, und führen Sie die folgende POST Anforderung mit dem entsprechenden Graphzugriffstoken und notificationUrl dem driveId angefügten als Abfrageparameter aus, um sicherzustellen, dass Sie nur Benachrichtigungen für Änderungen im gewünschten Container erhalten.
POST https://graph.microsoft.com/v1.0/subscriptions
{
"changeType": "updated",
"notificationUrl":"https://5ac2-2404-f801-8028-3-691a-87b2-d309-545b.ngrok-free.app/api/onReceiptAdded?driveId={{ContainerId}}",
"resource": "drives/{{ContainerId}}/root",
"expirationDateTime": "2024-01-20T03:58:34.088Z",
"clientState": ""
}
Sie können den folgenden Codeausschnitt verwenden, um die maximal mögliche Ablaufzeit von 4230 Minuten ab der aktuellen Zeit festzulegen, indem Sie diesen dem Abschnitt "Pre-request Script" hinzufügen. Es wird eine Umgebungsvariable festgelegt, die im Anforderungstext verwendet werden kann.
var now = new Date()
var duration = 1000 * 60 * 4230; // max lifespan of driveItem subscription is 4230 minutes
var expiry = new Date(now.getTime() + duration);
var expiryDateTime = expiry.toISOString();
pm.environment.set("ContainerSubscriptionExpiry", expiryDateTime);
Wenn Sie an diesem Punkt eine Datei im Container hinzufügen/aktualisieren, erhalten Sie eine Benachrichtigung am zuvor hinzugefügten Endpunkt (/api/onReceiptAdded) und eine Protokollmeldung in der Konsole: Received driveId: <containerId>