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.

Inbound email action

developersn
Tera Contributor
Hi Folks : Need help to validate the below mentioned inbound email action as this is not working at all.
 
 
var requesterEmail = email.body.requested_for_email.trim();
var requesterName = email.body.requested_for_name.trim();
var sfCandId = email.body.sf_candidate_id.trim();

 

//Check if requested for user exists
var userGr = new GlideRecord('sys_user');
userGr.addActiveQuery('email', requesterEmail);
userGr.query();

 

//Check if all the mandatory field values are filled.

 

if (requesterName =="" || sfCandId =="") {

 

    gs.log("missing mandatory fields : No ticket created");

 

} else if (userGr.next()) {

 

    var cartId = GlideGuid.generate(null);
    var cart = new Cart(cartId);
 
    var item = cart.addItem("cat_item");
    cart.setVariable(item, 'requested_for_name', requesterName);
    cart.setVariable(item, 'sf_req', sf_req_ID);
   
    var rc = cart.placeOrder();
    gs.log("Ticket created successfully");

 

}
1 ACCEPTED SOLUTION

Amit Pandey
Kilo Sage

Hi @developersn 

 

Please check this-

 

var requesterEmail = email.body.requested_for_email.trim();
var requesterName = email.body.requested_for_name.trim();
var sfCandId = email.body.sf_candidate_id.trim();
var userGr = new GlideRecord('sys_user');
userGr.addActiveQuery('email', requesterEmail);
userGr.query();

if (requesterName === "" || sfCandId === "") {
    gs.log("Missing mandatory fields: No ticket created");
} else if (userGr.next()) {
    var cartId = GlideGuid.generate(null);
    var cart = new Cart(cartId);
 
    var item = cart.addItem("cat_item");
    cart.setVariable(item, 'requested_for_name', requesterName);

    var sf_req_ID = ''; 
    cart.setVariable(item, 'sf_req', sf_req_ID);
   
    var rc = cart.placeOrder();
    gs.log("Ticket created successfully");
} else {
    gs.log("Requested for user does not exist: No ticket created");
}

 

Please share error if any. 

 

Mark my answer helpful and correct.

 

Regards,

Amit

View solution in original post

5 REPLIES 5

developersn
Tera Contributor

Hi @RyanQ , @Amit Pandey  @Mark Wood : Thanks for the response. I have updated the code but still no RITM generated, In the logs only related entry is "did not create or update sc_req_item using current."

 

Code:

    (function runAction(current, event, email, logger, classifier){

    // Parse the body of the email to get the variables
    var requested_for_name = email.body.match(/Requested for name:\s*(.*)/)[1];
    var requested_for_email = email.body.match(/Requested for email:\s*(.*)/)[1];
    var business_name = email.body.match(/Business:\s*(.*)/)[1];
    var request_number = email.body.match(/Requisition Number:\s*(.*)/)[1];
    var inter_stage = email.body.match(/Interview Stage:\s*(.*)/)[1];
    var can_name = email.body.match(/Candidate Name:\s*(.*)/)[1];
    var can_id = email.body.match(/Candidate ID:\s*(.*)/)[1];
    var recruit_name = email.body.match(/Recruiter Name:\s*(.*)/)[1];
    var recruit_email = email.body.match(/Recruiter email:\s*(.*)/)[1];
    var addComment = email.body.match(/Additional Comments:\s*(.*)/)[1];

    //Printing
    gs.log("Interview " + requested_for_name + " " + requested_for_email + " " + business_name + " " + request_number + " " + inter_stage + " " + can_name + " " + can_id + " " + recruit_name + " " + recruit_email + " " + addComment, "Interview scheduling");


    // Check if the requested_for and recruiter_name user exist in sys_user table and are active
    var user = new GlideRecord('sys_user');
    user.addQuery('email', requested_for_email);
    user.addQuery('active', true);
    user.query();
    if (!user.next()) {
        gs.log('Requested for user does not exist or is not active: ' + requested_for_email);
        return;
       
   
    }

    var recruiter = new GlideRecord('sys_user');
    recruiter.addQuery('email', recruit_email);
    recruiter.addQuery('active', true);
    recruiter.query();
    if (!recruiter.next()) {
        gs.log('Recruiter does not exist or is not active: ' + recruit_email);
       return;
    }

    // Submit the catalog item request
    var cart = new sn_sc.CartJS();
    var item = cart.addToCart('0c4a530e1b81955066f7bbb21a4bcbb0', {});
    item.requested_for_email = user.sys_id.toString();
    item.recruit_email = recruiter.sys_id.toString();
    cart.setVariable(item, 'requested_for', requested_for_email);
    cart.setVariable(item, 'recruiter_name', recruit_email);
    cart.setVariable(item, 'candidate_id', can_id);
    cart.setVariable(item, 'requisition_number', request_number);
    cart.setVariable(item, 'business', business_name);
    cart.setVariable(item, 'interview_stage', inter_stage);
    cart.setVariable(item, 'additional_comment', addComment);

    cart.placeOrder();

    gs.info("interview placed");

    } )(current, event, email, logger, classifier);
 
Kindly suggest.
 
One more update: I have update the user criteria of catalog item to Any user.