Schlüsselwortbasierte Verteilung von E-Mails
Einige Erläuterungen vorab
Das Skript zur Eintreffen-Aktion enthält wesentliche Objekte, die zum Ablaufen des Skripts essentiell sind und per Lese-/Schreibzugriff vom Skript ausgelesen werden.
- task: Das Ticket-Objekt, dass Sie bei Bedarf updaten können, abhängig von Ihren Anforderungen an eingehende E-Mails.
- message: Die E-Mail, aus der das Ticket erzeugt wurde. Wenn das Skript ausgeführt wird, ist das Ticket (task) bereits ausgelesen und entsprechend mit Hilfe der in "Basisdaten" definierten Konfiguration der Mailbox erzeugt worden.
- coretext: Diese Zeichenfolge ist eine Zusammenfassung aller Textteile der Nachricht. Eine eintreffende E-Mail kann diverse Teile an Text enthalten, Klartext oder HTML-formatierte Textanteile. coretext enthält alle diese Teile und kann daher ideal genutzt werden, um nach Schlüsselworten zu suchen. Es besteht somit keine Notwendigkeit, alle verschiedenen MIME-Teile der E-Mail zu überprüfen.
- helper: Dies ist ein Hilfsobjekt, das eine Vielzahl von nützlichen Funktionen wie z.B. die Umadressierung eines Tickets bereitstellt; diese Funktionalität werden wir im Folgenden nutzen.
Die Aufgabenstellung
Abhängig von Ihren Geschäftsprozessen kann es prinzipiell notwendig sein, die interne Verteilung der zentral einlaufenden E-Mails anhand von Schlüsselworten genauer zu definieren. Diese Schlüsselworte können aus dem Betreff, den Adresszeilen und dem Nachrichtentext ausgelesen werden.
Hierfür starten Sie bitte todo4teams und loggen Sie sich, abhängig von Ihren Nutzerrechten, als "Admin" oder als "Superadmin" ein. Nur als Nutzer mit Administratorrechten können sie die E-Mail Postfächer bearbeiten und verwalten.
Wechseln sie zum Navigationspunkt Mailboxen und klicken Sie in einer Zeile auf die E-Mail Adresse, die Sie konfigurieren möchten. Der Konfigurations-Dialog zur Bearbeitung von Mailboxen öffnet automatisch.
Wählen Sie im Reiter Skripte die "Eintreffen-Aktion" aus, um das entsprechende Skript anzulegen.
Das Skript
Mit dem oben genannten Satz von Variablen ist es ganz einfach, eine eingehende E-Mail nach Schlüsselwörtern zu durchsuchen. Wir möchten nun verstehen, wie eine Nachricht, die das Wort „Salesforce“ enthält, auf besondere Weise verarbeitet wird. E-Mails, die dieses Schlüsselwort enthalten, sollten durch ein anderes Team bearbeitet werden als das in „Basisdaten“ konfigurierten Team.
Der folgende Teil des Skriptcodes fügt dem Ticket den Titel „Salesforce“ hinzu und verteilt die Nachricht an eine Gruppe namens „Salesforce-Experten“:
if(coretext.toLowerCase().indexOf("salesforce")>-1) {
task.title="Salesforce: "+task.title;
helper.routeToGroupByName("Salesforce Experts");
}
Das Skript wandelt den Inhalt des coretext um, sodass anschließend mit der Funktion indexOf nach dem Wort "Salesforce" gesucht werden kann. Die Funktion indexOf gibt die Position von "Salesforce" aus oder den Wert -1, wenn das Stichwort nicht in der Nachricht vorkommt. Der Code in den geschweiften Klammern wird nur ausgeführt, wenn "Salesforce" im Text gefunden wurde.
Die Hilfsmethode routeToGroupByName ändert die Verteilung des Tickets und gibt es an das Team mit dem Namen "Salesforce Experts" weiter. Damit das Skript funktioniert, muss ein Team mit diesem Namen existieren und in den Grundeinstellungen als aktiv markiert sein. Alternativ kann die Methode routeToGroup verwendet werden, die den Vorteil hat, dass sie die ID des Teams anspricht und somit weniger empfindlich auf Umbenennungen von Teams o.ä. reagiert. Wenn das Team "Salesforce Experts" die ID 17 hat, ist folgender Befehl äquivalent zum Befehl routeToGroupByName:
Sie können das obige Skript als Vorlage verwenden, um eigene Regeln zu definieren. Kopieren Sie dazu den vierzeiligen Code in die „Eintreffen-Aktion“ und ändern Sie die Schlüsselwörter und Teamnamen nach Ihren Wünschen. Nach dem Speichern können Sie die Regeln testen, indem Sie E-Mails mit den entsprechenden Kriterien versenden.
Wenn Sie nur den Betreff der E-Mail nach Schlüsselwörtern durchsuchen möchten, würde das folgende Skript ausreichen:
message.getSubject().indexOf("Emergency:")>-1 ||
message.getSubject().indexOf("Important:")>-1 ){
task.title="Alarm: "+task.title;
// ... do something special with this type of message
}
In diesem Fall wird im Betreff nach "Alarm", "Emergency" und "Important" gesucht und die Ergebnisse über eine ODER-Verknüpfung gefiltert. In der Javascript-Syntax geschieht dies über den Ausdruck "||".