Recherche
Si vous utilisez les notifications par défaut, les messages sont envoyés en anglais.
Pour personnaliser les messages aux utilisateurs, il faut procéder comme suit :
Créez un répertoire templates dans templates/custom. C'est dans ce répertoire que vous placerez ensuite tous les fichiers .ftl qui constituent le corps des messages envoyés.
A titre d'exemple voici le fichier esupNotificationCreateDoc.ftl pour l'envoi de notification à la création d'un document :
<HTML> <BODY> <P>Un nouveau document est disponible ce jour, le ${dateTime?datetime?string("dd/MM/yyyy - HH:mm")}.<BR> Il est consultable ici : <a href="${docUrl}">${htmlEscape(docTitle)}</a></P> </BODY> </HTML>
Il convient maintenant d'éditer le fichier templates/custom/config/esup-notification-config.xml qui va surcharger les fichiers de configuration par défaut. Ce fichier se compose de deux points d'extensions : un pour définir nos notifications, le deuxième pour définir les templates ftl liés à ces notifications.
Pour l'instant, Nuxeo ne sait pas gérer deux définitions de notifications utilisant les mêmes événements (ie création, modification ...). Il convient donc, pour que nos personnalisations soient prises en compte de désactiver celles par défaut. Voici un extrait du fichier esup-notification-config.xml qui personnalise les notifications sur les créations et les modifications de documents dans les espaces de travail :
<component name="org.esup.notification.service.NotificationContrib"> <require>org.nuxeo.ecm.platform.notification.service.NotificationContrib</require> <require>org.nuxeo.ecm.platform.comment.workflow.notification.service.NotificationContrib</require> <extension target="org.nuxeo.ecm.platform.ec.notification.service.NotificationService" point="notifications"> <!-- first disable defaults notifications => no merge --> <notification name="Modification" channel="email" enabled="false"> <event name="documentModified"/> </notification> <notification name="Creation" channel="email" enabled="false"> <event name="documentCreated"/> </notification> <!-- then declare ours notifications --> <notification name="Esup Modification" channel="email" enabled="true" availableIn="Workspace" autoSubscribed="false" template="modif" subject="Modification du document ${docTitle}" label="label.nuxeo.notifications.modif"> <event name="documentModified"/> </notification> <notification name="Esup Creation" channel="email" enabled="true" availableIn="Workspace" autoSubscribed="false" template="create" subject="Nouveau document" label="label.nuxeo.notifications.create"> <event name="documentCreated"/> </notification> </extension> <!-- define template files --> <extension target="org.nuxeo.ecm.platform.ec.notification.service.NotificationService" point="templates"> <template name="modif" src="templates/esupNotificationModifDoc.ftl" /> <template name="create" src="templates/esupNotificationCreateDoc.ftl" /> </extension> </component>
Cette configuration va créer de nouvelles notifications et désactiver celles par défaut de Nuxeo. Il faut donc de s'abonner aux nouvelles notifications. Si on était abonnés aux anciennes, on ne les recevra plus !
2 commentaires
Raymond Bourges dit :
Pour éviter une erreur "Unable to find Java mail API" j'ai été obligé d'ajouter cette config :
En effet, sinon j'utilisais un mailSessionJndiName à java:/Mail qui n'est pas défini
De plus, cette config me permet de préciser le serverPrefix
Raymond Bourges dit :
Objets manipulable avec FreeMarker
Dans le fichier ftl on peut manipuler les objets passés à FreeMarker (sous forme d'une map) par nuxeo dans la méthode sendNotification de la classe NotificationEventListener
On accède alors à ces objets en utilisant la clé de la map. On peut accéder aux attributs ces objets. ex :
Voici ce que contient la map (version 5.4.1 de nuxeo) :
clé
valeur (type)
mail.to
Email du destinataire (String)
principalAuthor
Auteur (NuxeoPrincipal)
document
Documentpublié (DocumentModel)
subject
Sujet du mail (String)
template
? (String)
subjectTemplate
? (String)
Toutes les clés de DocumentEventContext.getProperties()
Les valeurs correspondantes
eventId
Nom de l’événement ayant déclencher la notification (String)