E-mail submission

Discuss problems installing or using TrackStudio.

E-mail submission

Postby fbourget » Tue Jan 11, 2011 5:18 pm

Hello,

We work on 4.0.7.
We use e-mail submission to create task from e-mail.
How can we fill custom field when a task is created by e-mail ?
How can we change assignee when a task is created by e-mail ? Without any customizing, assignee is filled with admin role.

Thanks and regards.
fbourget
 
Posts: 25
Joined: Fri Dec 24, 2010 1:18 pm

Re: E-mail submission

Postby admin » Tue Jan 11, 2011 9:59 pm

You can do this using triggers: you should parse message description, extract field values (as you encode it) and change.

In other words, this is possible, but not too easy task.
Maxim Kramarenko (mailto: maximkr@trackstudio.com)
TrackStudio - Hierarchical Bug & Issue Tracking Software
http://www.trackstudio.com
admin
Site Admin
 
Posts: 7453
Joined: Thu Jan 01, 1970 3:00 am
Location: Smolensk, Russia

Re: E-mail submission

Postby fbourget » Wed Jan 12, 2011 5:16 pm

Hello,

Can you, please, give an example for 1 task custom-field.

Thanks and regards
fbourget
 
Posts: 25
Joined: Fri Dec 24, 2010 1:18 pm

Re: E-mail submission

Postby mvasenkov » Fri Jan 14, 2011 2:22 pm

ChangeHandlerByEmail.java
Code: Select all
package scripts.before_add_message;

import com.trackstudio.exception.GranException;
import com.trackstudio.external.OperationTrigger;
import com.trackstudio.kernel.manager.KernelManager;
import com.trackstudio.secured.SecuredMessageTriggerBean;
import com.trackstudio.secured.SecuredTaskBean;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* This class changes a handler in task by email submission
*/
public class ChangeHandlerByEmail implements OperationTrigger {

    public SecuredMessageTriggerBean execute(SecuredMessageTriggerBean message) throws GranException {
        String text  = message.getDescription();
        SecuredTaskBean task = message.getTask();
if (text != null && text.length() > 0) {
            String emailPattern = "To:\\s*\\\"?(\\S+\\s*\\S+[^\\\"])?\\\"?\\s+(<|&lt;)?(([-a-z0-9!#$%&'*+/=?^_`{|}~]+(\\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*)@([a-z0-9.]+))(&gt;|>)?";
            // From: max.vasenkov@gmail.com
            // From: Maxim Vasenkov <max.vasenkov@gmail.com>
            // From: Maxim Vasenkov &lt;max.vasenkov@gmail.com&gt;
            // From: Winzard <i@winzard.ru>
            // From: Admin <admin@localhost>
            // From: "Максим Васенков" <vasenkov@any.place.com>
            // From: "Максим Васенков" &lt;vasenkov@any.place.com&gt;
            String usernamePattern = "To:\\s*(.+)";
            Pattern emailPat = Pattern.compile(emailPattern);
            Matcher emailMat = emailPat.matcher(text);
            Pattern usernamePat = Pattern.compile(usernamePattern);
            Matcher usernameMat = usernamePat.matcher(text);
            String foundUserId = null;
            if (emailMat.find()) {
                // found someone by email
                String userName = emailMat.group(1);
                String userEmail = emailMat.group(3);
                if (userName == null) userName = emailMat.group(4);
                foundUserId = KernelManager.getUser().findUserIdByEmailNameProject(userEmail, userName, task.getParentId());
            }
            if (foundUserId==null && usernameMat.find()){
                String userName = usernameMat.group(1);
                foundUserId = KernelManager.getUser().findUserIdByQuickGo(userName);
            }
        if (foundUserId!=null) message.setHandlerUserId(foundUserId);
        }

            return message;
        }
}


ChangeUDFByEmail.java

Code: Select all
package scripts.before_add_message;

import com.trackstudio.exception.GranException;
import com.trackstudio.external.OperationTrigger;
import com.trackstudio.secured.SecuredMessageTriggerBean;
import com.trackstudio.secured.SecuredTaskBean;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* This class changes a workflow custom field via email submission
*/
public class ChangeUDFByEmail implements OperationTrigger {

    public SecuredMessageTriggerBean execute(SecuredMessageTriggerBean message) throws GranException {
        String fieldName = "Somefield";
        String text = message.getDescription();
        SecuredTaskBean task = message.getTask();
        if (text != null && text.length() > 0) {
            String udfPattern = fieldName + ":\\s*(.+)";
            Pattern udfPat = Pattern.compile(udfPattern);
            Matcher udfMat = udfPat.matcher(text);
            if (udfMat.find()) {
                String value = udfMat.group(1);
                message.getUdfValues().put(fieldName, value);
            }
        }
        return message;

    }
}
Skype (RU): max.vasenkov
Email/Jabber: max.vasenkov@gmail.com
twitter: @winzard
mvasenkov
TrackStudio Support
 
Posts: 365
Joined: Tue Jan 14, 2003 5:57 pm
Location: Smolensk

Re: E-mail submission

Postby fbourget » Fri Jan 14, 2011 7:06 pm

Hello,

Thanks a lot for these very useful examples.

Another request: I would like to fill "Priority" during mail submission process.
I write script below, but it doesn't work, "Priority" is always empty. I check with a trace, value of "priorityMat.group(1)" is OK.

String fieldName = "Priority";
String text = task.getDescription();
if (text != null && text.length() > 0) {
String priorityPattern = fieldName + ":\\s*(.+)";
Pattern priorityPat = Pattern.compile(priorityPattern);
Matcher priorityMat = priorityPat.matcher(text);

if (priorityMat.find()) {
String value = priorityMat.group(1);
task.setPriority(value);
}
}

Can you, please, help.

Thanks and regards
fbourget
 
Posts: 25
Joined: Fri Dec 24, 2010 1:18 pm

Re: E-mail submission

Postby Petr » Thu Jan 20, 2011 2:03 pm

Hi. Can you show example email message, which you want to parse for filling custom field?
TS Support
email: parsentev@yandex.ru
Petr
 
Posts: 1317
Joined: Wed Aug 12, 2009 4:38 pm


Return to TrackStudio Support

Who is online

Users browsing this forum: No registered users and 0 guests