WebHook Email (V5.5)
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 un affichage dans Divalto weavy web, les codes entité (baseentity_ID) gérés sont :
customer : clients
customercontact : contacts
customeraddress : adresses
task : tâches
event : événements
deal : affaires
project : opportunités
interventionrequest ; demandes d’interventions
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.