Verified Commit 8e3554fd authored by Giovannoni Laurent's avatar Giovannoni Laurent
Browse files

FEAT add process to deploy new mail for an instance

parent 8916db30
Déploiement de la capture d'une boite mail pour une instance de MaarchCourrier
=========================================
Ce paragraphe décrit le mode opératoire pour déployer la capture d’une boite mail d’une nouvelle instance MaarchCourrier.
Ce mode opératoire peut être décliné lorsque l’on souhaite ajouter la capture d’une boite mail supplémentaire à une instance MaarchCourrier.
Une fois les fichiers type de paramétrage correctement préparés (voir paragraphes précédents), le mode opératoire consistera essentiellement à procéder à des copier/coller et au remplacement de la variable de fusion ID_INSTANCE.
Nous prendrons l’exemple où ID_INSTANCE est valorisée de la façon suivante :
cs_olivet
Dans votre cas, il faudra remplacer cs_olivet par l'identifiant de votre instance MaarchCourrier.
Par défaut, se positionner dans le répertoire de MaarchCapture :
cd /opt/maarch/MaarchCapture/
## Paramétrage de la configuration générale pour la capture de courriels
Ajouter le bloc suivant dans le fichier ./config/Capture.xml :
<batch directory="/opt/maarch/MaarchCapture/files/" id="{batchname}-{timestamp}-{rand}" lock="0" name="cs_olivet_MAIL_1">
<workflow debug="false" logMode="Maarch" maarchLogParam="/var/www/html/MaarchCourrier/apps/maarch_entreprise/xml/log4php.xml" maarchLoggerName="loggerTechnique" name="cs_olivet_MAIL_1">
<step function="CaptureMails" module="MailCapture" name="CaptureMails">
<input name="account">cs_olivet_MAIL_1</input>
<input name="Action">delete</input>
<input name="configFile">cs_olivet_MAIL_1 .xml</input>
<input name="folder"></input>
<input name="attachmentsOutputDir"></input>
<input name="addHeaderInMailContent">false</input>
<input name="folderError">incidents</input>
</step>
<step name="SendToMaarch" module="MaarchWSClient" function="processBatch">
<input name="WS">cs_olivet</input>
<input name="Process">MaarchRestWSProcess</input>
<input name="CatchError">true</input>
<input name="configFile">MaarchWSClient_standard_sample.xml</input>
</step>
</workflow>
</batch>
## Paramétrage de la capture de la boite mail
Créer le fichier ./modules/MailCapture/cs_olivet_MAIL_1.xml, compléter les informations de connexion à la boite mail et préciser l’identifiant du service destinataire (ID_SERVICE_DESTINATAIRE) :
<?xml version="1.0" encoding="UTF-8"?>
<MailCapture>
<formatters>
<formatter name="date" script="scripts/formatters.php" func="format_mail_date"/>
</formatters>
<accounts>
<account name="cs_olivet_MAIL_1" >
<mailbox>{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX</mailbox>
<username>testmail@gmail.com</username>
<password>****</password>
<IMAP_CLIENT_CERT>/vagrant/certs/client.pem</IMAP_CLIENT_CERT>
<IMAP_CLIENT_KEY>/vagrant/certs/noclient.key</IMAP_CLIENT_KEY>
</account>
</accounts>
<messagerules>
<messagerule name="from_maarch" info="fromaddress" action="delete">false</messagerule>
</messagerules>
<messageoutputs >
<!-- info : header info -->
<messageoutput name="doc_date" info="date" formatter="date"/>
<messageoutput name="type_id">1</messageoutput>
<messageoutput name="destination">ID_SERVICE_DESTINATAIRE</messageoutput>
<messageoutput name="subject" info="subject" />
<messageoutput name="fromaddress" info="fromaddress"/>
<messageoutput name="frompersonal" info="from[0]/personal" />
<messageoutput name="toaddress" info="toaddress" />
<messageoutput name="message_id" info="message_id" />
<messageoutput name="ccaddress" info="ccaddress" />
</messageoutputs>
<attachmentrules>
<attachmentrule name="pj" info="extension" op="notin" action="none">EML PDF DOC DOCX XLSX ODT ODS ODP TXT JPG JPEG JPE GIF PNG BMP RTF HTM HTML CSV</attachmentrule>
<attachmentrule name="thename" info="filename" op="contains">PJ</attachmentrule>
<attachmentrule name="application" info="format" op="in">pdf msword vnd.oasis.opendocument.text octet-stream eml</attachmentrule>
</attachmentrules>
<attachmentoutputs mode="attachment">
<attachmentoutput name="filename" info="dparameters[filename]"/>
<attachmentoutput name="description" info="description"/>
</attachmentoutputs>
</MailCapture>
## Paramétrage de l'envoi des courriels dans MaarchCourrier
Ajouter le bloc suivant dans le haut du fichier ./modules/MaarchWSClient/MaarchWSClient.xml et configurer l’accès aux web services REST de l’instance MaarchCourrier cs_olivet :
<WS name="MaarchRestWS" type="REST" uri="http://userMaarchWS:passwordMaarchWS@courrier.metropoleorleans.fr/cs_oliver/rest/">
</WS>
## Paramétrage du shell de lancement de MaarchCapture pour la capture de courriels
Créer le fichier ./scripts/cs_olivet.sh :
#!/bin/sh
cd /opt/maarch/MaarchCapture/
php MaarchCapture.php init -BatchName cs_olivet_MAIL_1
Planifier le shell créé dans votre planificateur de tâches :
su maarch
crontab -e
*/10 * * * * /opt/maarch/MaarchCapture/scripts/cs_olivet_MAIL_1.sh
Déploiement de la configuration pour une instance de MaarchCourrier
===========================
Paramétrage type de la capture d’une boite mail
=================================================
Le paramétrage spécifique de la capture d’une boite mail se situe dans le module MailCapture de MaarchCapture.
Le fichier se situe dans le répertoire **./modules/MailCapture/**
Nous nous basons en partie sur l’exemple présent dans le répertoire **./modules/MailCapture/samples/Capture_standard_sample_linux.xml.default.**
Considérons le fichier intitulé **ID_INSTANCE_MAIL_1.xml** servant de base pour le paramétrage des autres instances de boite mail de MaarchCourrier. Son chemin sera donc le suivant :
**./modules/MailCapture/ID_INSTANCE_MAIL_1.xml**
<?xml version="1.0" encoding="UTF-8"?>
<MailCapture>
<formatters>
<formatter name="date" script="scripts/formatters.php" func="format_mail_date"/>
</formatters>
<accounts>
<account name="D_INSTANCE_MAIL_1" >
<mailbox>{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX</mailbox>
<username>mail@address.com</username>
<password>APassw0rd</password>
</account>
</accounts>
<messagerules>
<messagerule name="from_maarch" info="fromaddress" action="delete">false</messagerule>
</messagerules>
<messageoutputs >
<messageoutput name="doc_date" info="date" formatter="date"/>
<messageoutput name="type_id">1</messageoutput>
<messageoutput name="destination">ID_SERVICE_DESTINATAIRE</messageoutput>
<messageoutput name="subject" info="subject" />
<messageoutput name="fromaddress" info="fromaddress"/>
<messageoutput name="frompersonal" info="from[0]/personal" />
<messageoutput name="toaddress" info="toaddress" />
<messageoutput name="xpriority" info="xpriority" />
<messageoutput name="message_id" info="message_id" />
<messageoutput name="ccaddress" info="ccaddress" />
</messageoutputs>
<attachmentrules>
<attachmentrule name="pj" info="extension" op="notin" action="none">EML PDF DOC DOCX XLSX ODT ODS ODP TXT JPG JPEG JPE GIF PNG BMP RTF HTM HTML CSV</attachmentrule>
<attachmentrule name="thename" info="filename" op="contains">PJ</attachmentrule>
<attachmentrule name="application" info="format" op="in">pdf msword vnd.oasis.opendocument.text octet-stream eml</attachmentrule>
</attachmentrules>
<attachmentoutputs mode="attachment"><!-- mode attachment of mail document / new document with a copy of metadata -->
<!-- info : mime part info -->
<attachmentoutput name="filename" info="dparameters[filename]"/>
<attachmentoutput name="description" info="description"/>
<!--attachmentoutput name="mimetype" info="mimetype"/>
<attachmentoutput name="size" info="bytes"/-->
</attachmentoutputs>
</MailCapture>
Les éléments de paramétrage suivants sont à définir à chaque déploiement d’une capture de boite mail supplémentaire :
* **account name="ID\_INSTANCE_MAIL_1"** doit correspondre à l’identifiant positionné dans le fichier Capture.xml et au nom de fichier xml ID_INSTANCE_MAIL_1.xml
* **\<mailbox>{imap.gmail.com:993/imap/ssl/novalidate-cert}INBOX\</mailbox>** ici on paramètre l’adresse du serveur de messagerie, attention à bien respecter la syntaxe **{adresseserver:port/modeacces}repertoire**
* **\<username>mail@address.com\</username>** compte de la boite mail à capturer
* **\<password>APassw0rd\/password>** mot de passe du compte de la boite mail à capturer
* **\<messageoutput name="destination">ID_SERVICE_DESTINATAIRE\</messageoutput>** identifiant du service destinataire dans MaarchCourrier.
Les éléments de paramétrage suivants pourront être défini de façon identique pour toutes les boites mails à capturer :
* **\<attachmentrule name="pj" info="extension" op="notin" action="none">EML PDF DOC DOCX XLSX ODT ODS ODP TXT JPG JPEG JPE GIF PNG BMP RTF HTM HTML CSV\</attachmentrule>** définit la liste des extensions des pièces jointes autorisées à être capturées.
* **\<messageoutput name="type_id">1\</messageoutput>** identifiant du type de document dans MaarchCourrier.
Paramétrage type du shell de lancement de MaarchCapture
=========================================================
## lancement de la capture de fichiers scannés
Pour lancer la capture de fichiers scannés sur le poste hébergeant le poste de numérisation, il faut créer un shell permettant de lancer MaarchCapture avec en paramètre l’identifiant du workflow de capture des scans.
Ce fichier shell se trouve dans : **./scripts/MAARCH_SCAN_TO_MC.bat** et contient :
cd F:\maarch\MaarchCapture\
C:\xampp\php\php.exe MaarchCapture.php init -BatchName MAARCH_SCAN_TO_MC
Le répertoire C:\xampp\php\php.exe correspond ici au chemin vers l’interpréteur PHP.
## lancement de la capture de courriels
Afin de lancer la capture de courriels pour une boite mail, il faut créer un shell permettant de lancer MaarchCapture avec en paramètre l’identifiant de l’instance MaarchCourrier préalablement paramétrée dans le fichier de configuration général de MaarchCapture.
Ce fichier shell se trouve dans : **./scripts/ID_INSTANCE_MAIL_1.sh** et contient :
#!/bin/sh
cd /opt/maarch/MaarchCapture/
php MaarchCapture.php init -BatchName ID_INSTANCE_MAIL_1
Les éléments de paramétrage suivants sont à définir à chaque déploiement d’une nouvelle boite mail à capturer :
* **php MaarchCapture.php init -BatchName ID\_INSTANCE_MAIL_1** correspond à l’identifiant unique d'une boite mail à capturer.
Si on devait capturer deux boites mails, il suffirait de déclarer un nouveau batch dont l’identifiant serait ID_INSTANCE_MAIL_2.
Et ainsi de suite si d’autres boites mails seraient à capturer pour la même instance MaarchCourrier.
Paramétrage du modèle de capture général
=========================================
Le fichier général de configuration de MaarchCapture se trouve dans :
**./config/Capture.xml**
Il est commun à toutes les instances MaarchCourrier sur votre serveur d’instances mutualisées MaarchCourrier. Il est par contre unique sur vos postes de numérisation.
## Capture des fichiers numérisés
Nous nous basons sur l’exemple présent dans le répertoire **./config/samples/Capture_standard_sample_windows.xml.default**.
Ce paramétrage est à décliner sur les postes de numérisation où vous déployez MaarchCapture.
Le paramétrage type pour la capture de fichiers numérisés dans un répertoire et à destination de MaarchCourrier est le suivant :
<batch name="MAARCH_SCAN_TO_MC" directory="F:\maarch\MaarchCapture\files\" id="{batchname}-{timestamp}-{rand}" lock="0">
<workflow name="MAARCH_SCAN_TO_MC" debug="false" logMode="default">
<step name="ImportFiles" module='FileImport' function="ImportFiles">
<input name="Directory">F:\maarch\MaarchCapture\files\TEST_IMPORT\</input>
<input name="Target">Document</input>
<input name="Action">none</input>
<input name="MoveDirectory">F:\maarch\MaarchCapture\files\TEST_IMPORT\backup\</input>
<input name="Recursive">0</input>
<input name="CreateFolders">0</input>
</step>
<step name="SendToMaarch" module="MaarchWSClient" function="processBatch">
<input name="WS">MaarchRestWS</input>
<input name="Process">MaarchRestWSProcessFromScan</input>
<input name="CatchError">true</input>
<input name="configFile">MaarchWSClient_standard_sample.xml</input>
</step>
</workflow>
</batch>
Les éléments de paramétrage suivants sont à définir à chaque déploiement d’un nouveau poste de numérisation où vous déployez MaarchCapture :
* **directory="F:\maarch\MaarchCapture\files\"** représente le répertoire de travail de MaarchCapture. Seront déposés ici les logs et le fichier XML de traitement général du batch.
* **name="Directory">F:\maarch\MaarchCapture\files\TEST_IMPORT\\** répertoire d’import des fichiers en sortie du scanner.
* **name="MoveDirectory">F:\maarch\MaarchCapture\files\TEST_IMPORT\backup\\** répertoire de sauvegarde des fichiers traités.
L’étape de transfert des fichiers vers MaarchCourrier **SendToMaarch** n’a pas besoin d’être paramétrée dans ce fichier à partir du moment où vous utilisez MaarchWSClient_standard_sample.xml comme fichier de paramétrage de vos webservices, voir [l'envoi dans MaarchCourrier](ws_maarch_courrier.md).
## Capture des courriels
Nous nous basons en partie sur l’exemple présent dans le répertoire **./config/samples/Capture_standard_sample_linux.xml.default**.
Ce paramétrage type est déclinable par boite mail à capturer depuis votre serveur où est installé MaarchCapture.
Le paramétrage type pour la capture de courriels à destination de MaarchCourrier est le suivant :
<batch name="ID_INSTANCE_MAIL_1" directory="/opt/maarch/MaarchCapture/files/" id="{batchname}-{timestamp}-{rand}" lock="0">
<workflow name="ID_INSTANCE_MAIL_1" debug="false" logMode="Maarch" maarchLogParam=""/var/www/html/ID_INSTANCE_MAIL_1/apps/maarch_entreprise/xml/log4php.xml" maarchLoggerName="loggerTechnique">
<step function="CaptureMails" module="MailCapture" name="CAPTURE_MAIL_1">
<input name="account">ID_INSTANCE_MAIL_1</input>
<input name="Action">delete</input>
<input name="configFile">ID_INSTANCE_MAIL_1 .xml</input>
<input name="folder"></input>
<input name="attachmentsOutputDir"></input>
<input name="addHeaderInMailContent">false</input>
<input name="folderError">incidents</input>
</step>
<step name="SendToMaarch" module="MaarchWSClient" function="processBatch">
<input name="WS">ID_INSTANCE</input>
<input name="Process">MaarchRestWSProcessFromMail</input>
<input name="CatchError">true</input>
<input name="configFile">MaarchWSClient_standard_sample.xml</input>
</step>
</workflow>
</batch>
Les éléments de paramétrage suivants sont à définir de façon identique pour tous vos paramétrages de courriels à capturer :
* **directory="/opt/maarch/MaarchCapture/files/"** représente le répertoire de travail de MaarchCapture.
C’est ici que vous trouverez les fichiers capturés et logs détaillés du produit.
Lorsque l’on est en mode debug= « false », ce répertoire contient uniquement les répertoires de travail des batchs ayant échoués.
* **maarchLogParam="/var/www/html/ID\_INSTANCE\_MAIL_1/apps/maarch_entreprise/xml/log4php.xml"** représente le chemin vers le paramétrage des logs d’instance MaarchCourrier.
Ce paramétrage sert donc à dire à MaarchCapture où se trouvent les logs de MaarchCourrier pour que les erreurs de capture puissent être loggées dans le fichier central de logs de l’instance MaarchCourrier (technique.log).
Les éléments de paramétrage suivants sont à définir à chaque paramétrage de capture d’une boite mail supplémentaire pour une instance de MaarchCourrier :
* **ID_INSTANCE\_MAIL_1** correspond à l’identifiant unique d’une nouvelle boite mail à capturer. Si on devait capturer deux boites mails, il suffirait de déclarer un nouveau batch dont l’identifiant serait **ID_INSTANCE_MAIL_2**. Et ainsi de suite si d’autres boites mails seraient à capturer.
Paramétrage type de l’envoi des documents dans MaarchCourrier
=================================================================
Une fois capturés, les fichiers numérisés ou les courriels sont envoyés dans MaarchCourrier via le module MaarchWSClient de MaarchCapture.
Le fichier général de configuration de MaarchWSClient se trouve dans : **./modules/MaarchWSClient/MaarchWSClient_standard_sample.xml**
Nous nous basons en partie sur l’exemple présent dans le répertoire **./modules/MaarchWSClient/samples/MaarchWSClient_standard_sample.xml.default.**
Il est donc commun à toutes les boites mails à capturer ou les fichiers à importer en sortie d'un scanner (ils peuvent différer si nécessaire).
Le paramétrage type pour l’envoi de scans ou de courriels dans une instance MaarchCourrier est le suivant :
<?xml version="1.0" encoding="UTF-8"?>
<MaarchWSClient>
<WS name="MaarchRestWS" type="REST" uri="http://userMaarchWS:passwordMaarchWS@maarchcourrier.ID_INSTANCE.interieur.gouv.fr/rest/" />
<process name="MaarchRestWSProcessFromScan">
<loop xpath="/Batch/Documents/Document">
<call name="/res" method="POST">
<argument type="entity" name="encodedFile" eval="base64_encode(file_get_contents($Element-&gt;path))"/>
<argument type="entity" name="data">
<column>type_id</column>
<value>1</value>
<type>integer</type>
</argument>
<argument type="entity" name="data">
<column>destination</column>
<value>COU</value>
<type>string</type>
</argument>
<argument name="data">
<column>priority</column>
<value>2</value>
<type>integer</type>
</argument>
<argument type="entity" name="data">
<column>scan_batch</column>
<value>SVE</value>
<type>string</type>
</argument>
<argument type="entity" name="collId">letterbox_coll</argument>
<argument type="entity" name="table">res_letterbox</argument>
<argument type="entity" name="fileFormat" attribute="extension"/>
<argument type="entity" name="status">INIT</argument>
<return>
<resId metadata="resId" />
</return>
</call>
</loop>
</process>
<process name="MaarchRestWSProcessFromMail">
<loop xpath="/Batch/Documents/Document">
<call name="/res" method="POST">
<argument type="entity" name="encodedFile" eval="base64_encode(file_get_contents($Element-&gt;path))"/>
<argument type="entity" name="data">
<column>subject</column>
<value metadata="subject" />
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>doc_date</column>
<value metadata="doc_date" />
<type>date</type>
</argument>
<argument type="entity" name="data">
<column>type_id</column>
<value metadata="type_id"/>
<type>integer</type>
</argument>
<argument type="entity" name="data">
<column>destination</column>
<value metadata="destination"/>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>initiator</column>
<value metadata="destination"/>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>priority</column>
<value>2</value>
<type>integer</type>
</argument>
<argument type="entity" name="data">
<column>custom_t10</column>
<value xvalue="./Metadata/fromaddress" />
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>custom_t11</column>
<value xvalue="./Metadata/toaddress" />
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>custom_t12</column>
<value xvalue="./Metadata/ccaddress" />
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>source</column>
<value xvalue="./Metadata/message_id" />
<type>string</type>
</argument>
<argument type="entity" name="collId">letterbox_coll</argument>
<argument type="entity" name="table">res_letterbox</argument>
<argument type="entity" name="fileFormat" attribute="extension"/>
<argument type="entity" name="status">INIT</argument>
<return>
<resId metadata="resId" />
</return>
</call>
<call name="/resExt" method="POST">
<argument type="entity" name="resId" metadata="resId"/>
<argument type="entity" name="data">
<column>nature_id</column>
<value>email</value>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>category_id</column>
<value>incoming</value>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>exp_contact_id</column>
<value xvalue="./Metadata/fromaddress"/>
<type>integer</type>
</argument>
<argument type="entity" name="data">
<column>address_id</column>
<value xvalue="./Metadata/fromaddress"/>
<type>integer</type>
</argument>
<argument type="entity" name="table">mlb_coll_ext</argument>
<argument type="entity" name="resTable">res_letterbox</argument>
<return>
<status metadata="status" />
</return>
</call>
<loop xpath="Attachments/Attachment">
<call name="/res" method="POST">
<argument type="entity" eval="base64_encode(file_get_contents($Element-&gt;path))" name="encodedFile"/>
<argument type="entity" name="data">
<column>title</column>
<value metadata="filename"/>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>res_id_master</column>
<value xvalue="ancestor::Document/Metadata/resId"/>
<type>integer</type>
</argument>
<argument type="entity" name="data">
<column>coll_id</column>
<value>letterbox_coll</value>
<type>string</type>
</argument>
<argument type="entity" name="data">
<column>attachment_type</column>
<value>incoming_mail_attachment</value>
<type>string</type>
</argument>
<argument type="entity" name="collId">letterbox_coll</argument>
<argument type="entity" name="table">res_attachments</argument>
<argument type="entity" name="fileFormat" attribute="extension"/>
<argument type="entity" name="status">TRA</argument>
<return>
<resId metadata="resId" />
</return>
</call>
</loop>
</loop>
</process>
</MaarchWSClient>
Les éléments de paramétrage suivants sont à définir pour une instance MaarchCourrier :
* **uri="http://userMaarchWS:passwordMaarchWS@maarchcourrier.ID\_INSTANCE.interieur.gouv.fr/rest/"** adresse web des webservices de l’instance MaarchCourrier ID_INSTANCE. Attention à bien respecter la structure suivante : **http://loginMaarch:passwordMaarch@nomDeDomaineInstanceMaarchCourrier**.
* **\<argument type="entity" name="status">INIT\</argument>** statut des documents arrivant dans MaarchCourrier.
A paramétrer en fonction de la clause where de la bannette de qualification des courriels.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment