You are not logged in.
Pages: 1
bonjour,
j'utilise la gestion des tickets par mail (chez nous peu ou pas de personne utilise l'interface de glpi)
il y a un comportement des notifications qui me pose pb lors d'un ticket avec document joint :
j'utilise le modèle de notification "Ticket (Simple)" et lors des notifications en html
il se trouve que la liste des documents est liée au mail :
"
généré automatiquement par GLPI 0.85.4
=_=_=_= Pour répondre par courriel, écrivez au dessous de cette ligne =_=_=_=
Éléments rattachés : Document ticket 821, Document ticket 821, Document ticket 821
"
alors que dans le modèle de notification, il n'y a pas la liste des documents justement...
et comme cette liste est ajoutée après la ligne "=_=_=_= Pour répondre par courriel, écrivez au dessous de cette ligne =_=_=_="
lorsque je réponds à ce mail, pour créer un suivi, la liste des documents est ajoutée dans le suivi.
j'espère que c'est compréhensible et reproduisible
a priori dans la notification non html, il n'y a pas la liste des documents.
----
pour moi, ce serait peut-être mieux de pouvoir associer des documents aux suivis et non pas au niveau ticket, et pouvoir aussi transmettre lors des notifications par mail les documents en piece jointe
merci d'avance
Last edited by kiricou (2015-08-27 17:03:03)
Offline
Vous avez quelle valeur pour le champ "Ajouter des documents dans les notifications de ticket " de la configuration du collecteur ?
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
Bonjour,
Premièrement désolé, je n'avais vraiment pas vu le suivi pour ma demande,
ensuite pour répondre, je n'ai pas ce paramètre dans la conf. des collecteurs :
j'ai ça :'Taille maximale des fichiers importés par le collecteur' qui s'en rapproche...
je suis en 0.85.4
merci d'avance
Offline
Je fatigue...
cette option est dans Configuration > Notification > Configuration des suivis par courriels
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
bonjour,
quel balise doit être utilisé pour avoir le lien vers les documents attaché
je suis en 0.90 est je n'ai plus les liens vers les documents dans les notifs (suivi ou resolu)
l'option dans Configuration > Notification > Configuration des suivis par courriels est à oui
merci
Offline
L'option de configuration "Ajouter des documents dans les notifications de ticket " était à Non, passée à Oui,
cela fonctionne pas mieux : un document envoyé par mail pour un suivi est bien ajouté à la liste des documents mais pas retransmis par mail .
un nouveau ticket par mail avec un document joint n'envoie pas non plus le doc joint.
Merci d'avance
ps: la balise que j'ai essayé d'utiliser est : ##ticket.urldocument##
Offline
J'en profite pour connaître les méthodes pour logger dans le code, j'aimerai bien faire un peu de débug/dev mais je cherche la "doc développeur" ou en tout cas des astuces : quelle méthode utiliser et dans quel fichier cela écrit...
j'ai essayé Toolbox::loginfile mais je ne vois pas de fichier...
merci d'avance
Offline
Le plus simple est d'utiliser Toolbox::logDebug(texte, texte...) et vous vous mettez en tail -f sur le fichier php-errors.log de GLpi.
Au fur et à mesure des actions les logs apparaitront en live
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
Bonjour,
J'ai donc essayé de débugguer, mais ce n'est pas très concluant ; je suis donc en 0.85.5
la conf correspondant à l'option citée : Configuration > Notification > Configuration des suivis par courriels
soit $CFG_GLPI['attach_ticket_documents_to_mail'] si je ne me trompe n'est utilisée qu'une fois dans inc/ticket.class.php - ligne 5850 dans convertContentForNotification
ici la suite de if semble dire qu'un doc joint est une image si elle a un id ET un tag mais pas les autres docs (dans mon cas, les pdf ont un id et un tag donc ils sont vu comme des images...) l'option n'est donc jamais prise en compte
ensuite, une fois ce contenu converti , il y a notificationmailclass.php qui prepare le mail et le met dans la QueudMail pour qu'il soit envoyé par phpmailer le moment venu via sendMailById
là on voit déjà que les docs ne sont joints que si le format des mails est HTML (or mes notifications sont toutes en texte simple - pour le moment ;-) ) ce qui explique que je n'ai pas de pj.
je pense donc mais ne suis pas sûr que c'est ici - dans QueudMail - qu'il faut checker l'option $CFG_GLPI['attach_ticket_documents_to_mail'] et utiliser peut-être addAttachment de phpmailer en cas de format txt de message ?
(ceci cela ne résout pas mon pb de base, qui était lors d'un suivi avec pj reçu par mail, les notifiés reçoivent ce nouveau suivi avec la pj en attaché : car dans ce que j'ai déchiffré du fonctionnement de Queudmail, toutes les pj sont jointes)
et peut-être une petite doc sur cette option et ce qu'elle implique peut-être intéressante ...
Merci d'avance pour vos retours,
si il y a un moyen plus direct, genre IRC, de discuter sur ce thème, je suis preneur...
bonne soirée,
Last edited by kiricou (2015-11-23 19:39:29)
Offline
Pour continuer ce que je souhaite faire et qui me semble être une bonne manière d'utiliser le suivi de ticket par mail, je vais sans doute me baser sur l'historique du ticket pour connaître le dernier document joint : ex ;
29005 23-11-2015 17:04 Mon User (325) Document Ajout d'un lien avec un élément : Document ticket 701 (51)
et le passer dans le mail via AddAttchment de PHPMailer
Offline
Re,
par ailleurs dans la liste des balises il y a cela, ça ne fonctionne pas :
##document.downloadurl## Document : URL de téléchargement Tous Valeur unique
##document.filename## Document : Fichier Tous Valeur unique
##document.heading## Document : Rubrique Tous Valeur unique
##document.id## Document : ID Tous Valeur unique
##document.name## Document : Nom Tous Valeur unique
##document.url## Document : URL Tous Valeur unique
##document.weblink## Document : Lien Web Tous Valeur unique
en dehors d'une boucle, les balises (le texte) est affiché tel quel
et dans une boucle FOLLOWUP rien ne se passe non plus
comment les utiliser ?
merci d'avance
Offline
Là c'est plutot ##FOREACHdocuments## ##ENDFOREACHdocuments## qu'il faut utiliser
CentOS 6.5 - CentOS 7.x
PHP 5.6 - PHP 7.x - MySQL 5.6 - MariaDB 10.2 + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)
Offline
bonjour,
tout à fait, ça fonctionne !
(mais cette balise n'est pas dans la liste des balises disponibles affichée en aide lors de la traduction d'une notification)
merci
voici ce que je fais pour que GLPI corresponde à mon mode de fonctionnement : pour la gestion des tickets, un maximum d'échanges se passent par mail et je souhaitais que les docs soient joints aux mails :
voici mon bout de code si ça peut intéresser, c'est un peu du bricolage:
0.85.5
*** queuedmail.class.php 2015-09-15 18:10:47.000000000 +0200
--- queuedmail.class.phpV2 2015-11-30 17:52:40.722139496 +0100
*************** class QueuedMail extends CommonDBTM {
*** 333,339 ****
* @return true if send false if not
**/
function sendMailById($ID) {
! global $CFG_GLPI;
if ($this->getFromDB($ID)) {
--- 333,339 ----
* @return true if send false if not
**/
function sendMailById($ID) {
! global $CFG_GLPI, $DB;
if ($this->getFromDB($ID)) {
*************** class QueuedMail extends CommonDBTM {
*** 357,362 ****
--- 357,425 ----
}
$mmail->Subject = $this->fields['name'];
+ $lastFollowupDocument = False;
+ if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 )
+ {
+ #on est dans le cas d'un ticket
+ $lastFollowupDocument = False;
+ $ticket = new Ticket();
+ // Check if ticket exists
+ if ($ticket->getFromDB($this->fields["items_id"]))
+ {
+ # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation
+ // Get all attached documents of ticket
+ $query = "SELECT `glpi_documents_items`.`id` AS id,
+ `glpi_documents_items`.`documents_id` AS docId,
+ `glpi_documents_items`.`date_mod` AS date_mod
+ FROM `glpi_documents_items`
+ WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."'
+ AND `glpi_documents_items`.`itemtype` = 'Ticket' ";
+
+ $result = $DB->query($query);
+ $my_docs = array();
+ $dateMessage = '';
+ if ($DB->numrows($result)) {
+ while ($data = $DB->fetch_assoc($result)) {
+ if (!empty($data['id'])) {
+ $my_docs[]=$data;
+ }
+ }
+ #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments
+ if (!empty($this->fields['messageid'])) {
+ preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches);
+ $messageid_timestamp = $matches[1];
+ $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp));
+ $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S"));
+ }
+
+ $link_doc = array();
+ if (is_array($my_docs) && count($my_docs)>0) {
+ foreach ($my_docs as $the_doc) {
+ $dateDoc = new DateTime($the_doc['date_mod']);
+ if ($dateDoc > $dateMessage) {
+ $TheDoc = new Document();
+ $TheDoc->getFromDB($the_doc['docId']);
+ $lastFollowupDocument[] = $TheDoc;
+ }
+ }
+ }
+ }
+ }
+
+
+ if ($lastFollowupDocument != False )
+ {
+ foreach ($lastFollowupDocument as $doc2Send) {
+
+ $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'],
+ $doc2Send->fields['filename'],
+ 'base64',
+ $doc2Send->fields['mime']);
+ }
+
+ }
+ }
+
if (empty($this->fields['body_html'])) {
$mmail->isHTML(false);
$mmail->Body = $this->fields['body_text'];
Offline
Bonjour,
Je viens faire un petit up sur ce sujet car c'est une fonctionnalité que je cherche.
J'ai repris le bout de ton code comme indiqué mais ca ne fonctionne pas de mon côté, aurais tu apporté d'autres modificatios ??
Merci d avance pour ta réponse.
Offline
Bonjour,
J'ai aussi besoin de la même fonctionnalité sur notre version 0.9.
J'ai repris le code kiricou qui fonctionne !
Pour Razdon, si ça peut vous aider, à mon premier essai j'avais oublié d'ajouter
$DB;
au début de la méthode :
function sendMailById($ID) {
pour que cela donne
function sendMailById($ID) {
global $CFG_GLPI, $DB;
Si cette fonctionnalité peut devenir par défaut, je suis bien évidemment preneur ^^.
En tout merci pour ce "patch".
Offline
Bonjour,
Je cherche à savoir si, à partir de l'interface GLPI, lorsque je rajoute un document à un ticket, s'il est possible de joindre dans le document dans la notification.
En effet, la seule balise qui semble correspondre à ma demande est : ##document.filename## qui est de type fichier
Code utilisé dans mon modèle
<p><span><span>##FOREACHdocuments##</span></span></p>
<tbody>
##document.filename##
</tbody>
<p><span>##ENDFOREACHdocuments##</span></p>
Cependant, lorsque je fais des tests, la notification ne comprend que le nom du fichier et non pas le fichier en lui même.
Au niveau de configuration > Notifications > Configuration des suivis par courriels > Ajouter des documents dans les notifications de ticket j'ai bien OUI
D'avance merci pour votre aide
Offline
Salut
est-ce que je peux abuser et demander que seuls les derniers documents soient ajouter ? ou, si la taille totale des documents dépasse les 5Mo que les documents ne soient pas joints au message ?
En effet, cette solution ci dessous, qui m'a sauvée la mise et un immense merci, a trop de succés. Les utilisateurs envoient tout comme ça, et dnas le cumul du tickets l'ensemble des PJ dépassent les 5Mo d'envoi et ma queue mail se bloque.
Merci à tous
bonjour,
tout à fait, ça fonctionne !
(mais cette balise n'est pas dans la liste des balises disponibles affichée en aide lors de la traduction d'une notification)merci
voici ce que je fais pour que GLPI corresponde à mon mode de fonctionnement : pour la gestion des tickets, un maximum d'échanges se passent par mail et je souhaitais que les docs soient joints aux mails :
voici mon bout de code si ça peut intéresser, c'est un peu du bricolage:
0.85.5*** queuedmail.class.php 2015-09-15 18:10:47.000000000 +0200 --- queuedmail.class.phpV2 2015-11-30 17:52:40.722139496 +0100 *************** class QueuedMail extends CommonDBTM { *** 333,339 **** * @return true if send false if not **/ function sendMailById($ID) { ! global $CFG_GLPI; if ($this->getFromDB($ID)) { --- 333,339 ---- * @return true if send false if not **/ function sendMailById($ID) { ! global $CFG_GLPI, $DB; if ($this->getFromDB($ID)) { *************** class QueuedMail extends CommonDBTM { *** 357,362 **** --- 357,425 ---- } $mmail->Subject = $this->fields['name']; + $lastFollowupDocument = False; + if ($this->fields["itemtype"] == "Ticket" && $this->fields["items_id"] > 1 && $CFG_GLPI['attach_ticket_documents_to_mail'] == 1 ) + { + #on est dans le cas d'un ticket + $lastFollowupDocument = False; + $ticket = new Ticket(); + // Check if ticket exists + if ($ticket->getFromDB($this->fields["items_id"])) + { + # en fait on doit passer par Document Item pour avoir les vrais dates d'ajout des docs et surtout passer par du SQL pour avoir cette relation + // Get all attached documents of ticket + $query = "SELECT `glpi_documents_items`.`id` AS id, + `glpi_documents_items`.`documents_id` AS docId, + `glpi_documents_items`.`date_mod` AS date_mod + FROM `glpi_documents_items` + WHERE `glpi_documents_items`.`items_id` = '".$this->fields["items_id"]."' + AND `glpi_documents_items`.`itemtype` = 'Ticket' "; + + $result = $DB->query($query); + $my_docs = array(); + $dateMessage = ''; + if ($DB->numrows($result)) { + while ($data = $DB->fetch_assoc($result)) { + if (!empty($data['id'])) { + $my_docs[]=$data; + } + } + #on se base sur le timestamp de creation de la notification pour ensuite déterminer les documents ajoutés récemments + if (!empty($this->fields['messageid'])) { + preg_match('/^GLPI-'.$this->fields["items_id"]."\.([0-9]{10}\.[0-9]{6}).*@/", $this->fields['messageid'], $matches); + $messageid_timestamp = $matches[1]; + $dateMessage = new DateTime(date("y-m-d H:i:s",$messageid_timestamp)); + $dateMessage = $dateMessage->sub(new DateInterval("P0Y0M0DT0H1M0S")); + } + + $link_doc = array(); + if (is_array($my_docs) && count($my_docs)>0) { + foreach ($my_docs as $the_doc) { + $dateDoc = new DateTime($the_doc['date_mod']); + if ($dateDoc > $dateMessage) { + $TheDoc = new Document(); + $TheDoc->getFromDB($the_doc['docId']); + $lastFollowupDocument[] = $TheDoc; + } + } + } + } + } + + + if ($lastFollowupDocument != False ) + { + foreach ($lastFollowupDocument as $doc2Send) { + + $mmail->AddAttachment(GLPI_DOC_DIR."/".$doc2Send->fields['filepath'], + $doc2Send->fields['filename'], + 'base64', + $doc2Send->fields['mime']); + } + + } + } + if (empty($this->fields['body_html'])) { $mmail->isHTML(false); $mmail->Body = $this->fields['body_text'];
Offline
bonjour, un petit up svp
Offline
non, toujours personne pour m'aider svp ?
Offline
non, toujours personne pour m'aider svp ?
Offline
Bonjour
je désespére ... quelqu'un aurait il une solution pour que seuls les derniers documents soient joints d'une part ou, que la taille soit évaluée et qu'au delà de 5Mo seule parte la notification sans les docs ?
Merci à tout le monde
Offline
Pages: 1