E-Mail-Dialoge zu Threads bündeln


Wenn Sie regelmäßig mehrere E-Mails mit Kunden zu ein und demselben Problem oder Thema austauschen, möchten Sie eventuell diesen Dialog zu einem einzigen Workflow bündeln.

E-Mail-Programme wie Outlook oder Thunderbird besitzen eine ähnliche Funktion, die als "gruppierte Ansicht" bezeichnet wird: Solange beide Dialogpartner immer wieder die "Antworten-Funktion" benutzen, werden alle Nachrichten gruppiert dargestellt.

In todo4teams lässt sich dies einfach einrichten, wenn Sie in der Betreffzeile der durch todo4teams versendeten Nachrichten die Ticket-ID angeben. Das erreichen Sie, indem Sie in den Systemparametern als Wert für den Schlüssel REPLY_SUBJECT_FORMAT z.B.  den Wert Re: %SUBJECT (ID: %TICKETID) speichern.

E-Mail-Antworten aus todo4teams erhalten als Betreff dann immer Re:, gefolgt vom Betreff der gesendeten Nachricht und z.B.  (ID: 423123), als Referenz auf das Ticket zu dieser E-Mail.

Antwortet der Kunde wiederum auf Ihre Rück-E-Mail, so kann todo4teams diese neue E-Mail mit seiner ersten E-Mail verbinden, sofern er die Antworten-Funktion seines E-Mail-Programms vewendet hat, und der Bezug über den Betreff erhalten blieb.

Das folgende Stück Skript-Code stellt diesen Ticketbezug her und gruppiert die Tickets zu einem gemeinsamen Workflow:

function ticketExists (subject)
{
   var idarr = helper.extractByRegExp(subject.toLowerCase(),"\\(id: (\\d.+?)\\)",false);
   var id=-1;
   if (idarr != null && idarr.length>0)
    {
        id = java.lang.Long.parseLong(idarr[0]);
        println ("ID"+id);
       var qm =  new com.proxemo.todo.bom.ToDoArchiveQueryMap(1);
        qm.addNameValue(com.proxemo.todo.bom.ToDoArchiveQueryMap.ID_ATTRIBUTE, id);
       var qresult = new com.proxemo.todo.server.action.ToDoQueryArchiveAction().execute(-1, qm);
        println("number of results"+qresult.getTasks().size());
       if (qresult.getTasks().size()>0)
        {
            task.setMaster(qresult.getTasks().get(0));
           return true;
        }
    }
   return false;   
}

var isFollowUpTicket = ticketExists(message.getSubject());

Das Skript extrahiert die Ticket-ID aus der Betreffzeile der eintreffenden E-Mail und startet eine Archivsuche nach dem ursprünglichen Ticket. Falls dieses gefunden wird, werden beide Ticket über den Aufruf  task.setMaster(parentTask) in einen Workflow gruppiert.

In den Ticket-Details können Sie dann im Tab Workflow einfach den E-Mail-Dialog mit dem Kunden anzeigen lassen.

Die oben gezeigte Skript-Funktion hat eine weiteren Nutzen: Über das in der Variablen isFollowUpTicket gespeicherte Ergebnis können Sie entscheiden, ob Sie dem Kunden erneut eine automatische E-Mail-Antwort senden möchten. In längeren Dialogen ist es kaum sinnvoll, dem Kunden den Eingang jeder seiner E-Mails zu bestätigen. Es genügt, das bei der ersten E-Mail zu tun, wenn also isFollowUpTicket==false ist.