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 requêtes envoyées depuis Vonage Cloud Runtime vers votre application via le fournisseur Scheduler contiendront les informations relatives à la session au cours de laquelle le rappel programmé a été configuré. Vous pouvez donc accéder à l'état de la session d'origine à l'aide de getSessionFromRequest pour créer un objet de session.
Le jeton transmis à vcr.verifyAuth() devrait être extrait de la Authorization en-tête. Actuellement, le Bearer le préfixe est pas est incluse dans le jeton — le fait de transmettre directement la valeur brute de l'en-tête fonctionnera donc telle quelle.
Toutefois, pour que votre application soit à l'épreuve du temps, vous devriez supprimer en toute sécurité le Bearer préfixe, s'il existe, afin que votre code continue de fonctionner correctement lorsque ce préfixe sera introduit lors d'une future mise à jour de la plateforme :
const token = req.headers['authorization']?.replace(/^Bearer\s+/i, '') ?? '';
vcr.verifyAuth(token);
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);
}
});