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 Action Script Broke

darronf
Tera Expert

We pushed a change to a Flow that didn't trigger due to the Inbound Email Action having the wrong "from" address. Adjusted that and reprocessed email which triggered the Flows properly. A new email came in and didn't trigger the Flow. Any attempt to reprocess the email also failed to trigger the Flow.

 

(function runAction( /*GlideRecord*/ current, /*GlideRecord*/ event, /*EmailWrapper*/ email, /*ScopedEmailLogger*/ logger, /*EmailClassifier*/ classifier) {
    gs.include('validators');

    //if email is recevied from 'acctadmin@ashn.com'
    try {
        var twoStepEnabled = gs.getProperty('glide.sc.checkout.twostep', false);
        var debugLogger = '**Create Request: Workstation Build Req**';
        var catItemId = WorkstationCatalogItemSysId.WORKSTATION_REQUEST_ID;
        var companyEmailDomainInfo = WorkstationCatalogItemSysId.COMPANY_EMAIL_DOMAIN;
        var emailFrom = email.origemail;
        var emailBodyText = email.body_text;
        var emailName = email.body.name.toString();
        var emailLogin = email.body.login.toString();
        var emailDept = email.body.dept.toString();
        var emailLocation = email.body.location.toString();
		if( gs.nil(emailName) || gs.nil(emailLogin) || gs.nil(emailDept) || gs.nil(emailLocation))
			{
			return; //if any of the fields are empty, terminate the script action
			}

        var reqForUser = WorkstationCatalogItemSysId.WORKSTATION_REQUESTED_FOR_USER_ID; //emailFrom;
        var newHireUserId = getUserInfo(emailLogin, companyEmailDomainInfo, emailName) || reqForUser;
        debugLogger += '\nemailLogin= ' + emailLogin;
        debugLogger += '\nnewHireUserId= ' + newHireUserId;
        debugLogger += '\nemailUserName= ' + emailName;
        debugLogger += '\nemailLocation= ' + emailLocation;

        /*
The Following User is new hire. Please proceed with Workstation Build.
Email to AcctAdmin@ashn.com Body Contains: "The Following User is new hire"

*****
Name:
Login:
Dept:
Location:
*/

        var ciInfoparser = '';
        var cart = '';
        var item = '';
        var cartDetails = '';

        cart = new sn_sc.CartJS();
        item = {
            'sysparm_id': catItemId.toString(),
            'sysparm_quantity': '1',
            'variables': {
                'requested_for': newHireUserId.toString(), //new user or itoadmin
                'userid': emailLogin.toString(),
                'name': emailName.toString(),
                'dept': emailDept.toString(),
                'location': emailLocation.toString(),
                'is_new_hire': 'Yes'
            }
        };
        cartDetails = cart.addToCart(item);
        debugLogger += '\n' + JSON.stringify(cartDetails);

        //cart.setRequestedFor(cartReqFor);
        var cartItems = cart.getCartItems();
        var checkoutInfo = false;
        //var checkoutInfo = cart.checkoutCart();
        debugLogger += '\ntwoStepEnabled= ' + twoStepEnabled;

        //If two-step checkout is not enabled
        if (!twoStepEnabled || twoStepEnabled == 'false') {
            checkoutInfo = cart.checkoutCart();
            request_number = checkoutInfo.request_number.toString();
            debugLogger += '\nCartItems: ' + JSON.stringify(checkoutInfo);
        } else {
            checkoutInfo = cart.checkoutCart();
            debugLogger += '\nCartItems twoStepEnabled: ' + JSON.stringify(checkoutInfo);
            requestDetails = cart.submitOrder(checkoutInfo);
            request_number = requestDetails.request_number.toString();
            debugLogger += '\nRequestDetails : ' + JSON.stringify(requestDetails);
        }
        cart.empty();
        debugLogger += '\nrequest_number: ' + request_number;
        gs.info(debugLogger);

        //set current to match the request that was created
        if (!JSUtil.nil(request_number)) {
            var scReqRec = new GlideRecord('sc_request');
            scReqRec.addQuery('number', request_number);
            scReqRec.query();

            if (scReqRec.next()) {
                //current = scReqRec;
                scReqRec.work_notes = "received from: " + email.origemail + "\n\n" + email.body_text;
				scReqRec.update();
                sys_email.target_table = 'sc_request';
                sys_email.instance = current.sys_id;
                sys_email.update();
            }

            var scReqItemRec = new GlideRecord('sc_req_item');
            scReqItemRec.addQuery('request.number', request_number);
            scReqItemRec.query();

            while (scReqItemRec.next()) {
                scReqItemRec.work_notes = "received from: " + email.origemail + "\n\n" + email.body_text;
                scReqItemRec.update();
				sys_email.target_table = 'sc_req_item';
                sys_email.instance = scReqItemRec.sys_id;
                sys_email.update();
            }
        }
    } catch (err) {
        gs.error('Error in inbound action: Create Request: Workstation Build Req: ' + err);
        gs.info(debugLogger);
    }

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

function getUserInfo(userName, companyEmailDomainInfo, firstLastName) {
    var userId = '';
    //if userName is empty or if undefined, return
    if (JSUtil.nil(userName)) {
        return userId;
    }
    //query user table for existing user and if found, return, else create new user based on userName
    var userRec = new GlideRecord('sys_user');
    userRec.addActiveQuery();
    userRec.addQuery('user_name', 'STARTSWITH', userName);
    userRec.query();

    if (userRec.next()) {
        userId = userRec.getValue('sys_id');

    } else {
        userRec.initialize();
        userRec.user_name = userName + '' + companyEmailDomainInfo;
        userRec.email = userName + '' + companyEmailDomainInfo;

        if (!JSUtil.nil(firstLastName)) {
            var firstName = firstLastName.split(" ")[0];
            var lastName = firstLastName.split(" ")[1];
            if (!JSUtil.nil(firstName)) {
                userRec.first_name = firstName;
            }
			if (!JSUtil.nil(lastName)) {
                userRec.last_name = lastName;
            }
        }

        userId = userRec.insert();

    }
    return userId;
}
0 REPLIES 0