Recherche

Sommaire

Pages enfant
  • Personnaliser les messages des notifications

Pré-requis

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>

Modifier les notifications

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 !

  • Aucune étiquette

2 commentaires

  1. Pour éviter une erreur "Unable to find Java mail API" j'ai été obligé d'ajouter cette config :

    <extension target="org.nuxeo.ecm.platform.ec.notification.service.NotificationService" point="generalSettings">
      <settings>
        <serverPrefix>http://ecm-test.univ-rennes1.fr/nuxeo/</serverPrefix>
        <eMailSubjectPrefix>[Nuxeo5]</eMailSubjectPrefix>
        <mailSessionJndiName>java:comp/env/Mail</mailSessionJndiName>
      </settings>
    </extension>
    
    

    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

  2. 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 :

    ${principalAuthor.lastName}

    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)