Fournisseur d'horaire
Le fournisseur Scheduler vous permet de planifier des fonctions à exécuter à un moment précis dans le futur, ou de les répéter en fonction d'un intervalle. Il prend également en charge les opérations de planification à l'aide de CRON expressions.
Comment cela fonctionne-t-il ?
Lorsque vous appelez le startAt sur le planificateur, la plateforme Vonage Cloud Runtime crée un travail avec les détails que vous avez fournis. Si vous avez fourni un ID, celui-ci sera utilisé, sinon un ID sera généré pour vous. Cet identifiant vous permet d'annuler le travail si nécessaire à l'aide de la fonction cancel fonction.
Le fournisseur du Scheduler fonctionne avec une précision minimale d'une minute. Par exemple, un travail programmé pour démarrer à 10:01 commencera dans cette minute, entre 10:01:00 et 10:01:59.
Lorsque le temps d'invocation du job est atteint, votre application recevra une requête au callback que vous avez spécifié. Vous aurez 30 secondes pour répondre à cette demande avec un statut 200, faute de quoi la demande sera réessayée. Les demandes sont relancées 5 fois avant d'être abandonnées.
Chaque demande de l'ordonnanceur est assortie d'un hachage dans l'en-tête de la demande sous la rubrique X-Neru-Scheduler-RequestHash. En utilisant ce hachage, vous pouvez vous assurer de traiter les demandes entrantes du planificateur au cas où votre application n'aurait pas été en mesure de répondre à temps avec un statut 200.
Fonctions
startAt- vous permet de programmer votre application pour qu'elle soit appelée à l'avenir après un temps donné, ou de manière répétée à un intervalle donné. Voir l'extrait de code ici.cancel- cela vous permet d'annuler un rappel programmé existant en utilisant l'identifiant de la programmation. Voir l'extrait de code ici.get- cela vous permet de récupérer un travail planifié existant en utilisant l'identifiant de la planification. Voir l'extrait de code ici.list- vous permet de récupérer les identifiants de tous les travaux programmés existants. Voir l'extrait de code ici.
Remarque : Utiliser le vcr.verifyAuth méthode pour vérifier que les rappels proviennent de la plateforme d'exécution cloud.
Initialisation du fournisseur de l'ordonnanceur
Pour utiliser le Scheduler Provider, vous devez créer une instance du fournisseur à l'aide d'une session :
const session = vcr.createSession();
const scheduler = new Scheduler(session);
Les Applications faites à partir de Vonage Cloud Runtime vers votre application via le fournisseur Scheduler contiendront les informations de la session qui a mis en place le rappel programmé, ce qui signifie que vous pouvez accéder à l'état de la session d'origine en utilisant. getSessionFromRequest pour créer un objet de session.
Cas d'utilisation
Par exemple, pour utiliser le fournisseur Scheduler afin d'envoyer un texte de rappel ponctuel dans les cinq minutes suivant un message entrant :
app.post('/onMessage', async (req, res, next) => {
try {
const session = vcr.createSession();
const scheduler = new Scheduler(session);
const reminderTime = new Date(new Date().setMinutes(new Date().getMinutes() + 5)).toISOString();
await scheduler.startAt({
startAt: reminderTime,
callback: 'textReminder',
payload: {
from: req.body.from,
}
});
} catch (error) {
next(error);
}
});
Après cinq minutes, le textReminder sera appelée avec la charge utile :
app.post('/textReminder', async (req, res, next) => {
try {
const session = vcr.createSession();
const messaging = new Messages(session);
const from = req.body.from;
const to = { type: "sms", number: from };
const vonageNumber = { type: "sms", number: "447000000000" };
await messaging.sendText(
vonageNumber,
to,
`Reminder from Vonage!`
);
res.sendStatus(200);
} catch (error) {
next(error);
}
});
Le fournisseur Scheduler prend également en charge l'utilisation de CRON pour définir l'intervalle dans lequel il appelle l'itinéraire défini. Cette fois-ci, le code déclenche l'itinéraire défini toutes les 10 minutes après l'heure pendant une journée :
app.post('/onMessage', async (req, res, next) => {
try {
const session = vcr.createSession();
const scheduler = new Scheduler(session);
const nowDate = new Date();
const endDate = new Date();
endDate.setDate(endDate.getDate() + 1);
await scheduler.startAt({
startAt: nowDate.toISOString(),
callback: 'textReminder',
interval: {
cron: '10 * * * *',
until: {
date: endDate.toISOString(),
maxInvocations: 24
}
},
payload: {
from: req.body.from,
}
});
} catch (error) {
next(error);
}
});