Gestion du mailCapture Mail Capture Arborescence

Transcription

Gestion du mailCapture Mail Capture Arborescence
Gestion du mailCapture
Sommaire
• 1 Maarch Capture
♦ 1.1 Arborescence du module
• 2 Capture des courriels
♦ 2.1 Pré-requis
♦ 2.2 Configuration du module
♦ 2.3 Configuration de la capture du mail
◊ 2.3.1 Note
♦ 2.4 Configuration de la capture
♦ 2.5 Configuration du WebService d'injection
♦ 2.6 Lancement de l'exécution
♦ 2.7 Assigner les mails en fonction du service
• 3 Numérisation de masse
♦ 3.1 Pré-requis
◊ 3.1.1 Impression des séparateurs dans Maarch Courrier
♦ 3.2 Envoi vers le serveur par WebService
♦ 3.3 Configuration de Maarch Capture
♦ 3.4 Configuration de l'injection par WS
♦ 3.5 Lancement de l'exécution
♦ 3.6 Résultat dans Maarch Courrier
Maarch Capture
Maarch Capture est un outil générique de traitement et d'importation.
Mail capture est un module de Maarch Capture permettant de récupérer les mails d'un dossier de votre boite email et de les importer dans l'application
Maarch.
Il existe d'autres modules, en particulier un processus d'import de documents séparés par des QRCodes.
Pour récupérer le module, télécharger le lien ci-dessous dans le module de votre custom:
./maarch_courrier/custom/maarch/modules/
svn checkout http://svn.maarch.org/custom/trunk/MaarchCapture/
Arborescence du module
/MaarchCapture
/class
/Batch.php
/Capture.php
/Workflow.php
/config
/Capture.xml
/Capture.xml.example
/files
/in
/logs
/out
/modules
/MaarchWSClient
/MaarchWSClient.xml
/MaarchWSClient.xml.default
/MaarchWSClient.php
/MailCapture
/scripts
/MailCapture.php
/MailCapture.xml
...
...
/tools
MaarchCapture.php
MAIL.bat
MAIL.sh
Capture des courriels
Pré-requis
• Adresse email sécurisée (Identifiant et mot de passe)
• Protocole IMAP actif sur le serveur de mail (Le protocole n'est pas activé sur les serveurs exchange pas défaut)
Configuration du module
Il y a quatre fichiers à configurer pour le fonctionnement de l'aspirateur de mail :
• MailCapture.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MailCapture/MailCapture.xml
• Capture.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/config/Capture.xml
• MaarchWSClient.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MaarchWSClient/MaarchWSClient.xml
• MaarchWSClient.xml situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MaarchWSClient/MaarchWSClient.xml
• MAIL.bat situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/MAIL.bat pour une application sous Windows
• MAIL.sh situé dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/MAIL.sh pour une application sous GNU/Linux
Configuration de la capture du mail
Éditez le fichier MailCapture.xml se trouvant dans ./maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MailCapture/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
53
54
55
56
57
58
59
60
61
62
63
65
66
<?xml version="1.0" encoding="UTF-8"?>
<MailCapture>
<formatters>
<formatter name="date" script="scripts/formatters.php" func="format_mail_date"/>
</formatters>
<accounts>
<account name="mail_capture" >
<mailbox>{imap.gmail.com:993/imap/ssl/novalidate-cert}</mailbox>
<username>adresse email à aspirer</username>
<password>mot de passe de l'adresse mail à aspirer</password>
</account>
</accounts>
<messagerules>
<messagerule name="SPM_RULE_2" info="fromaddress" action="move">true</messagerule>
</messagerules>
<messageoutputs >
<messageoutput name="doc_date" info="date" formatter="date"/>
<messageoutput name="type_id">1</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="images" info="format" op="in">gif jpg jpeg png</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>
Note
Information à renseigner dans le mailbox Pour gmail: Adresse du serveur : imap.gmail.com:993/imap/ssl/novalidate-cert Port : 993 Connexion
chiffrée : SSL Pour hotmail: Adresse du serveur : imap-mail.outlook.com Port : 993 Connexion chiffrée : SSL
Configuration de la capture
La capture doit être configurée.
Aller à /var/www/html/maarch_courrier/custom/maarch/modules/MaarchCapture/config/ et éditez le fichier capture.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="UTF-8"?>
<capture>
<modules>
<module name="FileImport" src="modules/FileImport/FileImport.php" type="class" />
<module name="PDFExtractor" src="modules/PDFExtractor/PDFExtractor.php" type="class"/>
<module name="PDFSpliter" src="modules/PDFSpliter/PDFSpliter.php" type="class"/>
<module name="Reader" src="modules/Reader/Reader.php" type="class"/>
<module name="Export" src="modules/Export/Export.php" type="class"/>
<module name="PDFAnalyzer" src="modules/PDFAnalyzer/PDFAnalyzer.php" type="class"/>
<module name="HTMLAnalyzer" src="modules/HTMLAnalyzer/HTMLAnalyzer.php" type="class"/>
<module name="MaarchWSClient" src="modules/MaarchWSClient/MaarchWSClient.php" type="class"/>
<module name="MailCapture" src="modules/MailCapture/MailCapture.php" type="class"/>
<module name="TesseractOCR" src="modules/TesseractOCR/TesseractOCR.php" type="class"/>
</modules>
<batches>
<batch name='MAIL' directory='C:\xampp\htdocs\MaarchCapture\files'>
<workflow name="MAIL" debug="true" logMode="Maarch"
maarchLogParam="/var/www/html/maarch/apps/maarch_entreprise/xml/log4php.xml"
maarchLoggerName="loggerTechnique">
<step name="CaptureMails" module='MailCapture' function="CaptureMails">
<input name="account">mail_capture</input>
<input name="Action">none</input>
<input name="configFile">MailCapture.xml</input>
<input name="folder">imported</input>
</step>
<step name="SendToMaarch" module='MaarchWSClient' function="processBatch">
<input name="WSDL">maarch_entreprise</input>
<input name="Process">MAIL</input>
</step>
</workflow>
</batch>
</batches>
</capture>
Configuration du WebService d'injection
Il faut paramétrer le web-service pour lui indiquer dans quelle application les courriels doivent être importés et également quelles tables doivent être
remplies.
Ce fichier se nomme MaarchWSClient.xml et se trouve dans
/var/www/html/maarch_courrier/custom/maarch/modules/MaarchCapture/modules/MaarchWSClient/
Vous devez obtenir :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?xml version="1.0" encoding="UTF-8"?>
<MaarchWSClient>
<WSDL name="maarch_entreprise" uri="http://127.0.0.1/mep14/ws_server.php?WSDL" cacheUse="0" SSL="false" >
<proxy>
<user>superadmin</user>
<pass>superadmin</pass>
<timeout>600</timeout>
</proxy>
</WSDL>
<process name="MAIL" >
<loop xpath="/Batch/Documents/Document">
<call name="storeResource">
<argument name="encodedContent" eval="base64_encode(file_get_contents($Element->path))" />
<argument name="data">
<column>subject</column>
<value metadata="subject" />
<type>string</type>
</argument>
<argument name="data">
<column>doc_date</column>
<value metadata="doc_date" />
<type>date</type>
</argument>
<argument name="data">
<column>type_id</column>
<value>10</value>
<type>integer</type>
</argument>
<argument name="collId">letterbox_coll</argument>
<argument name="table">res_letterbox</argument>
<argument name="format" attribute="extension"/>
<argument name="status">MAIL</argument>
<return>
<returnCode />
<resId metadata="resId"/>
<error />
</return>
</call>
<loop xpath="Attachments/Attachment">
<call name="storeResource">
<argument name="encodedContent" eval="base64_encode(file_get_contents($Element->path))" />
<argument name="data">
<column>title</column>
<value metadata="filename" />
<type>string</type>
</argument>
<argument name="data">
<column>res_id_master</column>
<value xvalue="ancestor::Document/Metadata/resId" />
<type>integer</type>
</argument>
<argument name="data">
<column>coll_id</column>
<value>letterbox_coll</value>
<type>string</type>
</argument>
<argument name="collId">letterbox_coll</argument>
<argument name="table">res_attachments</argument>
<argument name="format" attribute="extension"/>
<argument name="status">MAIL</argument>
<return>
<returnCode />
<resId metadata="resId"/>
<error />
</return>
</call>
</loop>
</loop>
</process>
</MaarchWSClient>
Lancement de l'exécution
Un shell permet de lancer l'aspirateur de mail et d'envoyer les mails dans l'application Maarch.
Sous GNU/Linux, éditez le fichier MAIL.sh :
#!/bin/sh
cd /produit/maarch/maarch_scripts/maarch_capture/
php MaarchCapture.php init -BatchName CAPTURE_MAIL_1
Assigner les mails en fonction du service
L'aspirateur de mail peut être utilisé pour aspirer les mails et les déplacer directement dans la corbeille des mails à qualifier en fonction du service.
C'est à dire qu'en fonction de l'adresse mail de l'utilisateur, on peut retrouver son service primaire et permettre aux mêmes utilisateurs du service de
visualiser les mails aspirés dans l'application maarch.
Pour ce faire, il faut activer la balise formatter name="address" de MaarchCapture/modules/MailCapture/MailCapture.xml
<?xml version="1.0" encoding="UTF-8"?>
<MailCapture>
<formatters>
<formatter name="date" script="scripts/formatters.php" func="format_mail_date"/>
<formatter name="address" script="scripts/formatters.php" func="format_mail_address"/>
</formatters>
<accounts>
L'activation de cette balise va permettre d'utiliser la fonction format_mail_address du fichier formatters.php et ainsi supprimer les éléments inutiles se
trouvant avant et après l'adresse mail. Ensuite, dans le même fichier, il faut activer
<messageoutputs >
<messageoutput
<messageoutput
<messageoutput
<messageoutput
name="doc_date" info="date" formatter="date"/>
name="type_id">1</messageoutput>
name="subject" info="subject" />
name="fromaddress" info="fromaddress" formatter="address"/>
<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>
Dans le fichier MaarchWSClient.xml, il faut bien vérifier si il existe bien les balises <argument> pour stocker l'adresse mail (dans
MaarchCapture/modules/MaarchWSClient/MaarchWSClient.xml)
<argument name="data">
<column>custom_t10</column>
<value xvalue="./Metadata/fromaddress" />
<type>string</type>
</argument>
Cet argument permet de stocker la valeur dans le champ custom_t10.
Pour l'adresse mail, il faut bien mettre custom_t10 pour la colonne car lors du lancement du webservice, on fait appel à une fonction nommé
preparestorage qui va regarder la colonne custom_t10 de res_letterbox pour récupérer le service.
Quand le service est récupéré, la colonne destination est renseignée pour le courrier aspiré.
Vous devez paramétrer votre corbeille de mail à qualifier. Dans l'application, allez dans l'administration des corbeilles et paramétrez la clause de la
corbeille avec :
status='MAQUAL' and (dest_user = @user or lower(doc_custom_t10) = lower(@email) or destination in (@my_entities))
Numérisation de masse
Ce chapitre traite de l'importation de plusieurs documents séparés par des QRCodes au sein d'un unique fichier PDF.
Cela permet de faire du scan de masse, y compris avec des scanners à priori non prévus à cet effet (Ex: Fujitsu ScanSnap), ou avec des photocopieurs
multifonction (MFP).
Maarch propose alors tous les outils pour effectuer la séparation des documents coté serveur, sans droits d'utilisation.
Il s'agit ici d'une solution rapide et très économique pour effectuer de la numérisation de masse.
Les limites de la solution sont les suivantes :
• Pas de prise en charge de l'OCR : L'OCR devra être réalisé en amont par le scanner ou le MFP. L'OCR en lui-même n'est pas indispensable,
mais autorise la recherche plein texte.
• Pas de multi-process sur le traitement des images. Cependant la solution est suffisamment rapide.
• Obligation de recyclage des séparateurs, au risque d'un coût de production non négligeable.
• Pas de trace de traitement sur les originaux papier.
Pour les projets d'envergure, nous utilisons des rouleaux d'étiquettes CAB pré-imprimés, associées au produit d'OCR et traitement d'image de DIS
(http://docimsol.eu/).
C'est une solution adaptée aux volumes de 0 à 200 courriers/jour traités avec des MFP ou des scanners moyen-volume. Au delà merci de nous
consulter.
Pré-requis
• Le processus traite un fichier unique de type PDF issu d'un dispositif de numérisation
• Les documents sont séparés par des QRCodes issus de Maarch. Le premier document doit aussi disposer de son QRCode.
• Pour que la recherche plein texte fonctionne, ainsi que la sélection de texte à la qualification, il est préférable que les documents soient
OCRisés (reconnaissance de texte et format de sortie PDF image + texte). Cette fonction est disponible sur la plupart des scanners, et en
option dans les MFP.
La librairie libre permettant de lire les QRCode est intégrée dans le module : il n'y a pas de dépendance supplémentaire à installer sur le serveur.
Impression des séparateurs dans Maarch Courrier
Pour imprimer les séparateurs, connectez-vous avec un utilisateur disposant du service (ex: superadmin).
Il y a une option dans le menu : « Impression des séparateurs ».
Sélectionnez un ou plusieurs services, le type QRcode, puis cliquez
sur "Imprimer les séparateurs".
Maarch génère un PDF contenant une page de séparateur par
service, qu'il faut imprimer :
A la numérisation, placez un séparateur devant chaque document (premier compris). Le traitement se fait sur serveur : il n'y a pas de dépendance au
dispositif de numérisation.
Envoi vers le serveur par WebService
Le traitement de masse s'effectue coté serveur. Il convient de déposer les documents sur le serveur depuis le poste de numérisation, soit via un partage
réseau, soit via l'outil Maarch Capture Connector (MCC).
Voyons comment configurer le MCC pour un envoi dans Maarch via WebService.
Un fichier d'exemple de configuration du scan de masse est livré avec le MCC :
<ROOT>
<CONFIG>
<CONFIG_NAME>mass</CONFIG_NAME>
<MCC_PATH>C:\maarch\mcc\client\</MCC_PATH>
<SCAN_IMPORT_PATH>C:\maarch\mcc\client\incoming\</SCAN_IMPORT_PATH>
<MAARCH_URL>http://192.168.21.11/cs_maarchcourrier/apps/maarch_entreprise/index.php?
page=view_baskets
&module=basket&baskets=IndexingBasket</MAARCH_URL>
<UPLOAD_URL>http://192.168.21.11/mcc/mcc_server.php</UPLOAD_URL>
<GET_DATAS_URL>http://192.168.21.11/mcc/get_datas.php</GET_DATAS_URL>
<WEB_PORT></WEB_PORT>
<SSL_CERT>C:\maarch\mcc\client\certif\cert-server.crt</SSL_CERT>
<URL_PROXY></URL_PROXY>
<USER_PROXY></USER_PROXY>
<AUTH_TYPE_PROXY></AUTH_TYPE_PROXY>
<TYPE_PROXY></TYPE_PROXY>
<BROWSER_PATH>C:\Program Files\Mozilla Firefox\firefox.exe</BROWSER_PATH>
<FORCE_HTTP_10>false</FORCE_HTTP_10>
</CONFIG>
<FORM>
<FORM_MODE>true</FORM_MODE>
<MASS_SCAN>true</MASS_SCAN>
<IMAGE_FORMAT>PDF</IMAGE_FORMAT>
<IS_FOR_MLB>false</IS_FOR_MLB>
</FORM>
</ROOT>
Les balises FORM_MODE et MASSE_SCAN sont positionnées à true pour enclencher l'envoi.
L'url d'indexation n'est pas appelée, mais le serveur renvoie un formulaire pour positionner des index manuellement.
PS : Ce formulaire est déprécié, mais pour le moment nécessaire au processus... Il va disparaître bientôt dans la forme actuelle.
Le CONFIG_NAME "mass" reporte à un fichier de configuration au niveau du serveur MCC.
Les fichiers de configuration s'appellent tous "./config/config_" & la valeur de CONFIG_NAME & ".xml"
Ainsi, c'est le fichier ./config/config_mass.xml qui est utilisé :
<ROOT>
<CONFIG>
<CONFIG_NAME>mass</CONFIG_NAME>
<MCC_PATH>/produit/maarch/maarch_scripts/mcc/</MCC_PATH>
<MAARCH_TMP_PATH>/produit/maarch/maarch_web/apps/maarch_entreprise/tmp/</MAARCH_TMP_PATH>
<TARGET_PATH>/exploit/maarch/depot/mcc/maarchcourrier/</TARGET_PATH>
<FORM>/produit/maarch/maarch_scripts/mcc/config/form.xml</FORM>
<CREATE_INDEX>false</CREATE_INDEX>
<STRUCTURE_FILE>/produit/maarch/maarch_scripts/mcc/config/structure.xml</STRUCTURE_FILE>
</CONFIG>
<DATABASE>
<LOCATION>127.0.0.1</LOCATION>
<DATABASE_PORT>5432</DATABASE_PORT>
<DATABASE>maarchcourrier</DATABASE>
<DATABASETYPE>POSTGRESQL</DATABASETYPE>
<DATABASEWORKSPACE></DATABASEWORKSPACE>
<USER_NAME>maarch</USER_NAME>
<PASSWORD>maarch</PASSWORD>
</DATABASE>
</ROOT>
TARGET_PATH désigne le répertoire où est déposé le fichier PDF, ici /maarch/depot/mcc/maarchcourrier/
Configuration de Maarch Capture
Dans le fichier ./config/Capture.xml, créer une entrée de batch :
<batch directory="/exploit/maarch/maarch_capture/files/maarchcourrier" id="{batchname}-{timestamp}-{rand}" lock="0" name="SCAN_MASS">
<workflow debug="true" logMode="Maarch"
maarchLogParam="/produit/maarch/maarch_web/custom/cs_maarchcourrier/apps/maarch_entreprise/xml/log4php.xml"
maarchLoggerName="loggerTechnique" name="SCAN_MASS">
<step function="separatePDF" module="QRSeparator" name="separatePDF">
<input name="ScanSource">/exploit/maarch/depot/mcc/maarchcourrier/</input>
<input name="ResultDirectory">/exploit/maarch/depot/autoimport/maarchcourrier/</input>
</step>
<step function="processBatch" module="MaarchWSClient" name="SendToMaarch">
<input name="WSDL">maarchcourrier</input>
<input name="Process">IMPORT_SCAN_BY_QRCODE</input>
</step>
</workflow>
</batch>
Remarquons que "ScanSource" désigne l'emplacement où le MCC a déposé le fichier.
Le batch va utiliser le module QRSeparator pour générer un PDF par document, dès qu'une page de séparation est détectée. La page de QRCode est
quant à elle éliminée. Les PDF résultant sont déposés dans "ResultDirectory".
Dans un second temps, le module MaarchWSClient exécute le process "IMPORT_SCAN_BY_QRCODE" pour réaliser l'injection dans Maarch.
Configuration de l'injection par WS
Le fichier de configuration se trouve dans /maarch_capture/modules/MaarchWSClient/MaarchWSClient.xml.
Voyons comment y est décrit le processus IMPORT_SCAN_BY_QRCODE :
<process name="IMPORT_SCAN_BY_QRCODE">
<loop xpath="/Batch/Documents/Document">
<call name="storeResource">
<argument eval="base64_encode(file_get_contents($Element->path))" name="encodedContent"/>
<argument name="data">
<column>subject</column>
<value metadata="subject"/>
<type>string</type>
</argument>
<argument name="data">
<column>doc_date</column>
<value metadata="doc_date"/>
<type>date</type>
</argument>
<argument name="data">
<column>type_id</column>
<value>101</value>
<type>integer</type>
</argument>
<argument name="data">
<column>destination</column>
<value metadata="destination"/>
<type>string</type>
</argument>
<argument name="collId">letterbox_coll</argument>
<argument name="table">res_letterbox</argument>
<argument attribute="extension" name="format"/>
<argument name="status">INIT</argument>
<return>
<returnCode/>
<resId metadata="resId"/>
<error/>
</return>
</call>
<call name="storeExtResource">
<argument metadata="resId" name="res_id"/>
<argument name="data">
<column>nature_id</column>
<value>email</value>
<type>string</type>
</argument>
<argument name="data">
<column>category_id</column>
<value>incoming</value>
<type>string</type>
</argument>
<argument name="table">mlb_coll_ext</argument>
<return>
<returnCode/>
<resId metadata="resId"/>
<error/>
</return>
</call>
</loop>
</process>
Il s'agit d'un enchaînement de deux WS, l'un pour pousser un nouveau document dans res_letterbox (la table socle), et l'autre pour y ajouter le
complément dans mlb_coll_ext (l'extension courrier).
Il est possible de définir des valeurs par défaut à l'injection, soit par des metadata, soit par des valeurs en dur.
La metadonnée "destination" est instanciée dans le module QRSeparator, lorsque celui-ci lit le QRCode représentant le service destinataire.
Lancement de l'exécution
Un shell permet de lancer le traitement du fichier d'entrée PDF et l'injection dans l'application Maarch.
Sous GNU/Linux, éditez le fichier SCAN_MASS.sh situé dans maarch_scripts/maarch_capture/ :
#!/bin/sh
cd /produit/maarch/maarch_scripts/maarch_capture/
php MaarchCapture.php init -BatchName SCAN_MASS
Pour automatiser le lancement, il suffit de placer le shell dans la crontab :
######################SCAN MASS BY BARCODE######################################################
* 8-19 * * 1-5 /produit/maarch/maarch_scripts/maarch_capture/SCAN_MASS.sh
Résultat dans Maarch Courrier
Avec le cron actif, les documents arrivent directement dans la bannette des courriers à qualifier du service courrier.
C'est du paramétrage : les courriers pourraient se retrouver directement au secrétariat du service concerné.
Cliquer sur la bannette puis sur un document pour compléter l'indexation. Notez comme le service est positionné selon le séparateur.