Résumé
Manipulation de l'entité EmailTemplate (Modèles d’emails) en lecture/écriture/suppression via un objet métier depuis une application externe.
Tables
Les tables utilisées sont :
sw_data_emailtemplate : Table des modèles d’emails
Les tables liées sont :
sw_data_emailtemplatedocument : Table des pièces jointes d'un modèle d'email
Critères d'activation
WHK_EmailTemplate est défini dans la gestion des webhooks du studio.
Règles métier
verb: PUT
La date de début de validité est mise par défaut à la date du jour (validityStartDate) si non fournie lors d'une création
Fonctionnement
verb: GET
resultType: simple
"emailtemplate": { "codeemailtemplate": "INVIT_CONF1", "name": "Invitation conférence tuning mysql" "validityStartDate": "2022-02-28 00:00:00", "validityEndDate": "" }
verb: GET
resultType: extended
"emailtemplate": { "codeemailtemplate": "INVIT_CONF1", "name": "Invitation conférence tuning mysql" "validityStartDate": "2022-02-28 00:00:00", "validityEndDate": "", "description": "Email d'invitation à la conférence Tuning MySql", "subject": "Invitation Tuning MySql", "body": "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></head><body><p>Bonjour [customercontact.firstName] [customercontact.lastName],</p><p>Vous êtes cordialement invité(e) à notre conférence sur le Tuning Mysql qui se tiendra en nos locaux.<br>11 rue Icare à Entzheim<br>Salle Erasme</p><p><strong>Le vendredi 11/03/2022 à partir de 10H.</strong></p><p>Cordialement,<br>Votre dévoué [baseuser.firstName] [baseuser.lastName]<br></p></body></html>" }
verb: GET
resultType: extendedRelated
en complément du résultat pour resultType: extended on aura pas de détails pour l'instant
verb: PUT
"emailtemplate": { "codeemailtemplate": "INVIT_CONF1", /* Code globalement unique du modèle d'email. Si non fourni code=ID (Varchar (255))*/ "name": "Invitation conférence tuning mysql" /* Nom (Varchar (255))*/ "validityStartDate": "2022-02-28 00:00:00", /* Date de début de validité (DatetIme())*/ "validityEndDate": "", /* Date de fin de validité (DatetIme())*/ "description": "Email d'invitation à la conférence Tuning MySql", /* Description (Text (65535))*/ "subject": "Invitation Tuning MySql", /* Objet (Varchar (255))*/ "body": "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />..." /* Corps du modèle en HTML (Text (65535))*/ }
Possibilité d’utiliser des tags dans le body pour faire référence à des champs de la base qui seront interprétés lors de l’utilisation du modèle d’email.
La liste complète est disponible dans le web (Paramétrage → Général → Modèles d’email puis bouton “Tags”).
Exemples : [customer.address1], [baseuser.firstName], [customer.address1], …
Pour ajouter une ou plusieurs pièces jointes à un modèle d'email il suffira d'appeler le webhook file autant de fois que voulu.
Exemple :
"action": { "verb": "PUT", "parameters": { "entity": "emailtemplate", "extension": "document" } }, "data": { "file": { "codefile": "", /* Code globalement unique pour entity/extension. Si non fourni code=ID (Varchar (255))*/ "parent_ID": "xxxxx", /* Code du parent. Ici il faut utiliser le code email template qui est retourné après la création du modèle d'email (soit celui qui a été fourni manuellement dans le json du modèle d'email ou celui qui été attribué automatiquement). (ForeignKey () - sw_data_emailtemplate.codeemailtemplate)*/ "fileName": "Introduction-to-MySQL-Query-Tuning.png", /* Nom du fichier (Varchar (255))*/ "description": "Invitation", /* Description (Text (65535))*/ "fileBase64": "iVBORw0KGgoAAAANSUhEUgAAAEsAAACQCAYAAABAt5Y ....", /* Fichier encodé en base 64 (MediumBlob ())*/ } }
verb: LIST
resultType: simple, extended reprendre les définitions du GET
Ce mode ne retourne pas le champ "body" pour une question de performances.
A la suite du résultat recherché il suffira de lancer le webhook en mode GET sur le "codeEmailTemplate" voulu pour récupérer le "body".
"filters:" { "codeEmailTemplate: "value", filter is equal "name: "value", filter is contains "subject: "value", filter is contains "description": "value", filter is contains "validityActive": "value", filter is equal (if value = "1" return only template email active today) "validityStartDate": "value", filter is greater or equal to "validityEndDateDate": "value" filter is less or equal to }, "orderBy": "value"
Valeurs possibles pour le tri "orderBy" :
nameAsc : par nom ascendant
verb: DELETE
Une suppression d'un modèle d'email (sw_data_emailtemplate) va supprimer en cascade les éléments dans la table liée sw_data_emailtemplatedocument.