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