Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Please help me how to set the 'To' person to the 'assignee' of the ticket via email inbound

NagaNandini N
Tera Guru

Can someone help me with the below email inbound action?We need to set the 'To' person as an assignee of the request.

 

(function runAction( /*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) {

gs.log("SJ Email Sys_id "+email.sys_id);
    var desc = email.body_text.toString();
    var place = desc.indexOf("Disclaimer");
    desc = desc.substring(0, place);

    var cartId = GlideGuid.generate(null);
    var cart = new Cart(cartId);
    var item = cart.addItem('9c7395f41ba5c4500da14223cd4bcba6');

    cart.setVariable(item, 'request_type', 'Inquiry');
    cart.setVariable(item, 'description', desc);
    var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;
    cart.setVariable(item, 'comments', cartmsg);
 
    var rc = cart.placeOrder();

    try {
        var toEmail = email.direct.split(',');
        var firstToEmail = toEmails[0].trim();
        var usrSysID ='';

        if (firstToEmail != '') {
            var usr = new GlideRecord('sys_user');
            usr.addQuery('email', firstToEmail);
            usr.query();
            if (usr.next()) {
                usrSysID = usr.sys_id;
                gs.log('usrSysID ' + usrSysID);
            }
        }

        var inputs = {};
        inputs['description'] = desc; // String
        inputs['short_description'] = email.subject.toString(); // String
        inputs['assignee'] = usrSysID;
        inputs['request_number'] = rc.sys_id; // Sys ID (GUID)

        // Start Asynchronously: Uncomment to run in background. Code snippet will not have access to outputs.
        // sn_fd.FlowAPI.getRunner().subflow('global.email_general_request_subflow').inBackground().withInputs(inputs).run();

        // Execute Synchronously: Run in foreground. Code snippet has access to outputs.
        var result = sn_fd.FlowAPI.getRunner().subflow('global.email_general_request_subflow').inForeground().withInputs(inputs).run();
        var outputs = result.getOutputs();

        // Current subflow has no outputs defined.      
    } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    }

})(current, event, email, logger, classifier);
1 ACCEPTED SOLUTION

NagaNandini N
Tera Guru

Fixed it from my end and the exact code is below 

 

(function runAction( /*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) {

 

gs.log("SJ Email Sys_id "+email.sys_id);
    var desc = email.body_text.toString();
    var place = desc.indexOf("Disclaimer");
    desc = desc.substring(0, place);

 

    var cartId = GlideGuid.generate(null);
    var cart = new Cart(cartId);
    var item = cart.addItem('9c7395f41ba5c4500da14223cd4bcba6');

 

    cart.setVariable(item, 'request_type''Inquiry');
    cart.setVariable(item, 'description', desc);
    var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;
    cart.setVariable(item, 'comments', cartmsg);
 
    var rc = cart.placeOrder();

 

    try {
        var toEmail = email.direct.split(',');
        var firstToEmail = toEmail[0].trim();
        var usrSysID ='';

 

        if (firstToEmail != '') {
            var usr = new GlideRecord('sys_user');
            usr.addQuery('email', firstToEmail);
            usr.query();
            if (usr.next()) {
                usrSysID = usr.sys_id;
                gs.log('usrSysID ' + usrSysID);
            }
        }

 

        var inputs = {};
        inputs['description'] = desc; // String
        inputs['short_description'] = email.subject.toString(); // String
        inputs['assignee'] = usrSysID;
        inputs['request_number'] = rc.sys_id; // Sys ID (GUID)

 

        // Start Asynchronously: Uncomment to run in background. Code snippet will not have access to outputs.
        // sn_fd.FlowAPI.getRunner().subflow('global.email_general_request_subflow').inBackground().withInputs(inputs).run();

 

        // Execute Synchronously: Run in foreground. Code snippet has access to outputs.
        var result = sn_fd.FlowAPI.getRunner().subflow('global.email_general_request_subflow').inForeground().withInputs(inputs).run();
        var outputs = result.getOutputs();

 

        // Current subflow has no outputs defined.      
    } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    }

 

})(current, event, email, logger, classifier);

View solution in original post

1 REPLY 1

NagaNandini N
Tera Guru

Fixed it from my end and the exact code is below 

 

(function runAction( /*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) {

 

gs.log("SJ Email Sys_id "+email.sys_id);
    var desc = email.body_text.toString();
    var place = desc.indexOf("Disclaimer");
    desc = desc.substring(0, place);

 

    var cartId = GlideGuid.generate(null);
    var cart = new Cart(cartId);
    var item = cart.addItem('9c7395f41ba5c4500da14223cd4bcba6');

 

    cart.setVariable(item, 'request_type''Inquiry');
    cart.setVariable(item, 'description', desc);
    var cartmsg = "received from: " + email.origemail + "\n\n" + email.body_text;
    cart.setVariable(item, 'comments', cartmsg);
 
    var rc = cart.placeOrder();

 

    try {
        var toEmail = email.direct.split(',');
        var firstToEmail = toEmail[0].trim();
        var usrSysID ='';

 

        if (firstToEmail != '') {
            var usr = new GlideRecord('sys_user');
            usr.addQuery('email', firstToEmail);
            usr.query();
            if (usr.next()) {
                usrSysID = usr.sys_id;
                gs.log('usrSysID ' + usrSysID);
            }
        }

 

        var inputs = {};
        inputs['description'] = desc; // String
        inputs['short_description'] = email.subject.toString(); // String
        inputs['assignee'] = usrSysID;
        inputs['request_number'] = rc.sys_id; // Sys ID (GUID)

 

        // Start Asynchronously: Uncomment to run in background. Code snippet will not have access to outputs.
        // sn_fd.FlowAPI.getRunner().subflow('global.email_general_request_subflow').inBackground().withInputs(inputs).run();

 

        // Execute Synchronously: Run in foreground. Code snippet has access to outputs.
        var result = sn_fd.FlowAPI.getRunner().subflow('global.email_general_request_subflow').inForeground().withInputs(inputs).run();
        var outputs = result.getOutputs();

 

        // Current subflow has no outputs defined.      
    } catch (ex) {
        var message = ex.getMessage();
        gs.error(message);
    }

 

})(current, event, email, logger, classifier);