Я использую node.js и пакет Microsoft Graph npm (@microsoft/microsoft-graph-client
) для вызова webhook в Office 365 для событий календаря. Я получаю несколько уведомлений о веб-крюках для каждого обновления, удаления и создания событий календаря Office 365.
Мой исходный код:
router.post("/webhook", (req, res) => {
if (req.query.validationToken) {
res.status(200);
res.send(req.query.validationToken)
} else {
res.status(202);
console.log(req.body.value[0].changeType);
console.log(req.body.value[0].resource);
}
});
//CREAE A WEBHOOK
router.get("/createWebhook", async (req, res) => {
const accessToken = await authHelper.getAccessToken(req.cookies, res);
const client = graph.Client.init({
authProvider: (done) => {
done(null, accessToken);
}
});
const subscription = {
changeType: "deleted,updated,created",
notificationUrl: "https://abccb3e5.ngrok.io/calendar/webhook",
resource: "me/events",
expirationDateTime: "2020-01-26T18:23:45.9356913Z",
clientState: "My calendar sync"
};
try {
client.api('/subscriptions')
.post(subscription, (errr,result) => {
if (result)
console.log(result);
//process subscription
});
} catch (err) {
console.log(err)
}
res.redirect('/calendar');
});
Когда я создаю событие, Graph несколько раз уведомляет об этом через веб-крючок конечная точка, а затем продолжается для удаления и обновления также.