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.
Gilt für: Entwickler
Verwenden Sie Microsoft Graph-Webhooks, wenn Ihre App auf Dateiänderungen in einem SharePoint Embedded-Container reagieren muss. Ein Abonnement weist Microsoft Graph an, Ihren HTTPS-Endpunkt aufzurufen, wenn sich die abonnierte Ressource ändert.
Erstellen eines Benachrichtigungsendpunkts
Machen Sie einen HTTPS-Endpunkt verfügbar, der Anforderungen akzeptiert POST . Verwenden Sie während der lokalen Entwicklung ngrok, um Anforderungen an einen lokalen Server zu tunneln.
ngrok http 3001
Wenn Microsoft Graph ein Abonnement erstellt, wird der Endpunkt durch Senden eines validationToken Abfrageparameters überprüft. Geben Sie dieses Token als Nur-Text mit HTTP 200 zurück.
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, "");
}
Registrieren Sie die Route in Ihrem API-Server, und aktivieren Sie die Analyse des Anforderungstexts und der Abfrage, bevor die Route Benachrichtigungen verarbeitet.
server.use(restify.plugins.bodyParser(), restify.plugins.queryParser());
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();
});
Abonnieren eines Containerlaufwerks
Erstellen Sie das Abonnement mit Microsoft Graph. In diesem Muster ist die SharePoint Embedded-Container-ID die Laufwerks-ID.
POST https://graph.microsoft.com/v1.0/subscriptions
Content-Type: application/json
{
"changeType": "updated",
"notificationUrl": "https://contoso.example/api/onReceiptAdded?driveId={container-id}",
"resource": "drives/{container-id}/root",
"expirationDateTime": "2026-06-25T03:58:34.088Z",
"clientState": ""
}
Abonnieren Sie die Änderungen unter , drives/{container-id}/root und fügen Sie driveId={container-id} sie an die Benachrichtigungs-URL an, damit der Handler den Container identifizieren kann.
Berechnen des Ablaufs
Laufwerkelementabonnements haben eine maximale Lebensdauer von 4.230 Minuten. Verwenden Sie ein Skript vor der Anforderung oder einen Back-End-Scheduler, um die Ablaufzeit festzulegen, bevor Sie das Abonnement erstellen.
var now = new Date();
var duration = 1000 * 60 * 4230;
var expiry = new Date(now.getTime() + duration);
pm.environment.set("ContainerSubscriptionExpiry", expiry.toISOString());
Speichern Sie die Abonnement-ID, Die Ressource, die Container-ID und die Ablaufzeit. Verlängern Sie jedes Abonnement, bevor es abläuft.
Sicheres Verarbeiten von Benachrichtigungen
Schnelle Rückkehr aus der Webhookanforderung. Hintergrundarbeit in die Warteschlange stellen, den aktuellen Datei- oder Containerstatus mit Microsoft Graph abrufen und die Verarbeitung idempotent machen, da Benachrichtigungen dupliziert oder verzögert werden können.
Verwenden Sie Webhooks für Aktionen wie Dokumentverarbeitung, Indexaktualisierung, Benutzerbenachrichtigungen oder Workflowtrigger. Behalten Sie einen regelmäßigen Abstimmungsauftrag für verpasste Benachrichtigungen oder abgelaufene Abonnements bei.
Überprüfen des Flows
Erstellen Sie ein Abonnement, laden Oder aktualisieren Sie eine Datei im Container, und bestätigen Sie, dass Ihr Endpunkt die erwartete Laufwerks-ID protokolliert. Wenn die Überprüfung fehlschlägt, überprüfen Sie die öffentliche HTTPS-URL, den validationToken Antwortinhaltstyp und ob Ihr Server Abfrageparameter vor der Routenausführung analysiert.