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.