Résumé
Manipulation de l'entité Email en lecture/écriture/suppression via un objet métier depuis une application externe.
Tables
Les tables utilisées sont :
sw_data_email : Table des entêtes/corps d'emails
Les tables liées sont :
sw_data_emaildocument : Table des pièces jointes d'un email
sw_data_emaillinkedto : Table des liens entre emails et entités (customer, customercontact, deal, intervention, intervention request, ...)
Critères d'activation
WHK_Email est défini dans la gestion des webhooks du studio.
Fonctionnement
verb: GET
resultType: simple
"email": { "codeemail": "6690000000045", "sentDate": "2021-07-05 14:24:32", "sender": "Communication <communication@divalto.com>", "generictype_ID_emailImportance": "NORMAL", "subject": "Deviens jury du Divalto C.A.R.E I.T", "bodyPreview": "HE’S BACK ! Rejoins l’aventure de notre concours solidaire étudiants 4ème edition 2021-2022Pour celles et ceux d’entre vous fraîchement arrivés au sein de la #TeamDIvalto ou bien pour les mémoires de poisson rouge ?Le Divalto" }
verb: GET
resultType: extended
"email":{ "codeemail":"6690000000045", "sentDate": "2021-07-05 14:24:32", "sender": "Communication <communication@divalto.com>", "generictype_ID_emailImportance": "Normal", "subject": "Deviens jury du Divalto C.A.R.E I.T", "bodyPreview": "HE’S BACK ! Rejoins l’aventure de notre concours solidaire étudiants 4ème edition 2021-2022Pour celles et ceux d’entre vous fraîchement arrivés au sein de la #TeamDIvalto ou bien pour les mémoires de poisson rouge ?Le Divalto", "receivedDate": "2021-07-05 14:24:34", "lastModifiedDate": "2021-07-10 06:10:41", "toRecipients": "GRD_EVERYBODY <grdeverybody@divalto.com>", "ccRecipients": "", "bccRecipients": "", "replyTo": "", "isDraft": "0", "isRead": "1", "externalID": "<DBAPR01MB6F8CB1C9@DBAPR01MB6856.eurprd01.prod.exchangelabs.com>", "body": "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><meta content=\"text/html; charset=utf-8\">...", "hasAttachments": "0" /* Permet de savoir si l'email a des pièces jointes. Mis à jour automatiquement lors de l'ajout/suppression de pièces jointes dans sw_data_emaildocument. (Valeurs possibles : 0,1) (Bool ())*/ }
verb: GET
resultType: extendedRelated
en complément du résultat pour resultType: extended on aura le détail pour la table generictype_emailImportance.
"related":[ { "generictype_emailImportance":{ "codegenerictype": "EMAIL_IMPORTANCE-NORMAL", "label": "Normal", "originalCode": "NORMAL", "dataType": "EMAIL_IMPORTANCE", "description": "", "translationKey": "GenType_EMAIL_IMPORTANCE-NORMAL", "generictype_ID_parent": "", "tag": "NORMAL", "orderNumber": "" } }]
verb: PUT
{ "email": { "codeemail": "", /* Code globalement unique de l'email. Si non fourni code=ID (Varchar (255))*/ "sentDate": "2021-07-05T14:24:32Z", /* Date d'envoi (DateTime ())*/ "receivedDate": "2021-07-05T14:24:34Z", /* Date de réception (DateTime ())*/ "lastModifiedDate": "2021-07-10T06:10:41Z", /* Date de dernière modification (DateTime ())*/ "sender": "Communication <communication@divalto.com>", /* Emetteur (Varchar (255))*/ "toRecipients": "GRD_EVERYBODY <grdeverybody@divalto.com>", /* Destinataires À (Text (65535))*/ "ccRecipients": "", /* Destinataires Cc (Text (65535))*/ "bccRecipients": "", /* Destinataires Cci (Text (65535))*/ "replyTo": "", /* Adresse email à utiliser lors de la réponse (Varchar (255))*/ "generictype_ID_emailImportance": "EMAIL_IMPORTANCE-NORMAL", /* Code importance email (ForeignKey () - sw_data_generictype.codegenerictype avec datatype = EMAIL_IMPORTANCE)*/ "isDraft": "0", /* Brouillon (Valeurs possibles : 0,1) (Bool ())*/ "isRead": "1", /* Message lu (Valeurs possibles : 0,1) (Bool ())*/ "externalID": "<DBAPR01MB6F8CB1C9@DBAPR01MB6856.eurprd01.prod.exchangelabs.com>", /* ID message externe (Varchar (255))*/ "subject": "Deviens jury du Divalto C.A.R.E I.T", /* Objet (Varchar (255))*/ "bodyPreview": "HE’S BACK ! Rejoins l’aventure de notre concours solidaire étudiants 4ème edition 2021-2022Pour celles et ceux d’entre vous fraîchement arrivés au sein de la #TeamDIvalto ou bien pour les mémoires de poisson rouge ?Le Divalto", /* 255 premiers caractères du corps du message (Varchar (255))*/ "body": "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><meta content=\"text/html; charset=utf-8\">..." /* Corps du message en HTML (MediumBlob ())*/ }, "emaillinkedto": [ { "codeemaillinkedto": "", /* Code globalement unique d'un lien d'email. Si non fourni code=ID (Vachar(255))*/ "email_ID": "", /* Code email. Reprendre le code email du bloc json "email". Si non fourni, sera alimenté automatiquement. (ForeignKey () - sw_data_email.codeemail)*/ "baseentity_ID" : "customer", /* Code de l'entité. (ForeignKey () - sw_data_baseentity.codebaseentity)*/ "rowID": "C0000001" /* Code de la table principale de l'entité. Par exemple pour customer il s'agira du codecustomer (Varchar (255)*/ }, { "codeemaillinkedto": "", /* Code globalement unique d'un lien d'email. Si non fourni code=ID (Vachar(255))*/ "email_ID": "", /* Code email. Reprendre le code email du bloc json "email". Si non fourni, sera alimenté automatiquement. (ForeignKey () - sw_data_email.codeemail)*/ "baseentity_ID" : "customercontact", /* Code de l'entité. (ForeignKey () - sw_data_baseentity.codebaseentity)*/ "rowID": "C0000001-AA123" /* Code de la table principale de l'entité. Par exemple pour customercontact il s'agira du codecustomercontact (Varchar (255)*/ } ] }
Pour ajouter une ou plusieurs pièces jointes à un email il suffira d'appeler le webhook file autant de fois que voulu.
Exemple :
"action": { "verb": "PUT", "parameters": { "entity": "email", "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 qui est retourné après la création de l'email (soit celui qui a été fourni manuellement dans le json de l'email ou celui qui été attribué automatiquement). (ForeignKey () - sw_data_email.codeemail)*/ "fileName": "NewsLetter0721.pdf", /* Nom du fichier (Varchar (255))*/ "description": "Nouveautés juillet 21", /* 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 "codeEmail" voulu pour récupérer le "body".
"filters:" { "codeEmail: "value", filter is equal "subject: "value", filter is contains "bodyPreview": "value", filter is contains "sender": "value", filter is contains "toRecipients": "value", filter is contains "sentDate": "value", filter is greater or equal to "sentDateBetween": "value1|value2", filter is between value1 and value2 "receivedDate": "value", filter is greater or equal to "receivedDateBetween": "value1|value2", filter is between value1 and value2 "hasAttachments": "value", filter is equal "codeEmailImportance": "value" filter is equal }, "orderBy": "value"
Valeurs possibles pour le tri "orderBy" :
receivedDateDesc : par date de réception descendant
receivedDateAsc : par date de réception ascendant
verb: DELETE
Une suppression d'un email (sw_data_email) va supprimer en cascade les éléments dans les tables liées sw_data_emaillinkedto et sw_data_emaildocument.