Les applications modernes doivent réagir instantanément aux changements. Qu’il s’agisse de l’arrivée d’un nouvel e-mail, de la mise à jour d’un événement de calendrier ou de la suppression d’un élément, les utilisateurs s’attendent à ce que l’interface reste synchronisée sans qu’ils aient à actualiser manuellement la page.
Pour simplifier ce processus, 4D 21 R4 introduit un système de notification unifié dans 4D NetKit, compatible à la fois avec Google Workspace et Microsoft 365. Grâce à un modèle de programmation unique, vous pouvez vous abonner aux modifications de messagerie et de calendrier et réagir automatiquement dès qu’une donnée change.
HDI Microsoft Google Notifications
L’un des principaux avantages de 4D NetKit réside dans le fait que les API de notification fonctionnent exactement de la même manière, quel que soit le fournisseur.
Que vous utilisiez Google ou Microsoft 365, les API de notification se comportent de la même manière :
cs.NetKit.Google.new($myOAuth2Provider).mail.notifier($notification)
cs.NetKit.Office365.new($myOAuth2Provider).mail.notifier($notification)
Le même principe s’applique aux notifications d’agenda.
Que pouvez-vous surveiller ?
4D NetKit vous permet de vous abonner aux modifications concernant à la fois les e-mails et les événements de calendrier.
Vous pouvez réagir à :
- Création
- Modification
- Suppression
de :
- E-mails
- Événements du calendrier
Dès qu’une modification est détectée, votre application reçoit une notification et peut mettre à jour l’interface utilisateur, actualiser les données, afficher des alertes ou déclencher une logique métier personnalisée.
Choix d’un mode d’écoute
Avant de lancer un notificateur, vous devez définir comment 4D NetKit détectera les changements.
Deux modes sont disponibles.
Notifications Webhook en temps réel
La première option consiste à laisser Google ou Microsoft appeler votre application chaque fois qu’un changement se produit.
Pour activer ce mode, définissez une propriété endPoint contenant l’URL de rappel :
$parameter.endPoint:="https://mydomain.com/notifications"
Le point de terminaison doit :
- Être public
- Utiliser un nom de domaine valide
- Être sécurisé par un certificat SSL de confiance
- Disposer d’un certificat correspondant au nom de domaine
Une fois configuré, Google ou Microsoft informera directement votre application dès qu’une ressource à laquelle vous êtes abonné subira une modification.
Cette approche offre un temps de réaction optimal et est idéale pour les applications web et les solutions hébergées dans le cloud.
// Microsoft Graph webhook handler
[
{
"class": "NetKit.GraphNotificationHandler",
"method": "getResponse",
"regexPattern": "/4dnk-graph-notification",
"verbs": "post"
}
]
// Google webhook handler
[
{
"class": "NetKit.GoogleNotificationHandler",
"method": "getResponse",
"regexPattern": "/4dnk-google-notification",
"verbs": "post"
}
]
Notez que Gmail nécessite un paramètre supplémentaire : topicName, qui spécifie le sujet Google Cloud Pub/Sub utilisé par l’API Gmail pour publier les notifications de modification de boîte mail.
Surveillance par minuterie
Si vous ne fournissez pas de point de terminaison, 4D NetKit bascule automatiquement vers la surveillance par minuterie.
Dans ce mode, 4D NetKit interroge périodiquement les API Google ou Microsoft pour détecter les modifications.
$parameter.timer:=60
Dans cet exemple, 4D NetKit vérifie les mises à jour toutes les 60 secondes. Cette approche est particulièrement utile lorsque :
- Votre application s’exécute sur un réseau local
- Aucun point de terminaison HTTPS public n’est disponible
- Vous préférez un modèle de déploiement plus simple
Le mode par minuterie est activé automatiquement dès lors qu’aucun point de terminaison n’est fourni.
Définition des fonctions de rappel
Que vous surveilliez des e-mails ou des événements de calendrier, le modèle de rappel est identique.
Une approche pratique consiste à créer une classe dédiée qui centralise la gestion de toutes les notifications.
Par exemple, vous pouvez créer une classe NetKitEventNotification :
// This function is triggered when a mail or calendar event is created
Function onCreate($provider : Object; $event : Object)
var $resource:=$event.type="mailCreated" ? "Email" : "Calendar event"
ALERT("You have a new "+$resource+" event")
// This function is triggered when a mail or calendar event is deleted
Function onDelete($provider : Object; $event : Object)
var $resource:=$event.type="mailDeleted" ? "Email" : "Calendar event"
ALERT("A "+$resource+" has been deleted")
// This function is triggered when a mail or calendar event is modified
Function onModify($provider : Object; $event : Object)
var $resource:=$event.type="mailModified" ? "Email" : "Calendar event"
ALERT("A "+$resource+" event has been modified")
Dans l’exemple ci-dessus, aucune propriété endPoint n’est déclarée. Les notifications s’exécutent donc en mode de surveillance par minuterie, avec un intervalle par défaut de 30 secondes, sauf si vous définissez une valeur de minuterie personnalisée. Si vous souhaitez utiliser les notifications Webhook en temps réel, la définition d’un endPoint est obligatoire :
// Set this URL to use Real-Time Webhook Notifications
property endPoint:="https://mydomain.com/googlenotifications"
// Gmail webhook mode only: Google Cloud Pub/Sub topic used for mailbox notifications
property topicName:="projects/my-project/topics/gmail-notifications"
// This function is triggered when a mail or calendar event is created
Function onCreate($provider : Object; $event : Object)
var $resource:=$event.type="mailCreated" ? "Email" : "Calendar event"
ALERT("You have a new "+$resource+" event")
// This function is triggered when a mail or calendar event is deleted
Function onDelete($provider : Object; $event : Object)
var $resource:=$event.type="mailDeleted" ? "Email" : "Calendar event"
ALERT("A "+$resource+" has been deleted")
// This function is triggered when a mail or calendar event is modified
Function onModify($provider : Object; $event : Object)
var $resource:=$event.type="mailModified" ? "Email" : "Calendar event"
ALERT("A "+$resource+" event has been modified")
Lancer un abonnement aux notifications
Une fois vos callbacks définis, la création d’un notifier est très simple :
// Create a notification handler instance.
var $notification:=cs.NetKitEventNotification.new()
// Create a Gmail notifier using the OAuth2 provider and the handler.
var $gmailNotification:=cs.NetKit.Google.new($myOAuth2Provider).mail.notifier($notification)
// Start listening for Gmail notifications.
$gmailNotification.start()
// Create a Google Calendar notifier using the same handler.
var $calendarNotification:=cs.NetKit.Google.new($myOAuth2Provider).calendar.notifier($notification)
// Start listening for Calendar notifications.
$calendarNotification.start()
Conclusion
Les notifications 4D NetKit vous permettent de synchroniser facilement votre application avec les données de Google Workspace ou Microsoft 365. Grâce à la prise en charge des modifications apportées aux e-mails et aux calendriers, vous pouvez rapidement développer des applications réactives qui réagissent en temps réel à l’activité des utilisateurs.
Mieux encore, le modèle de programmation reste identique d’un fournisseur à l’autre, ce qui vous permet d’écrire votre logique de notification une seule fois et de l’utiliser partout.
Les commentaires ne sont pas disponibles pour cet article pour le moment.