- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-02-2023 11:54 PM
Hello beautiful people,
i'm currently working on a Inbound Action that creates record on the cmdb_ci_outage table.
I struggling with extracting the configuration item value from the email and set it in the configuration item field (reference).
The email is very basic. It shows the CI value just after "configuration item: " (i.e. configuration item: B-TIPS)
Here's the code i'm using. What am i doing wrong?
// Parse email body text to get configuration item name
var emailBody = current.body.text;
var configItemStart = emailBody.indexOf("configuration item: ") + 20; // Add length of "configuration item: " to get start index of configuration item name
var configItemEnd = emailBody.indexOf("\n", configItemStart); // Find end of configuration item name (assumes it ends with a new line character)
var configItemName = emailBody.substring(configItemStart, configItemEnd).trim(); // Extract configuration item name from email body and remove any leading/trailing whitespace
// Get sys_id of configuration item from cmdb_ci table
var ci = new GlideRecord('cmdb_ci');
ci.addQuery('name', configItemName);
ci.query();
if (ci.next()) {
var configItemId = ci.getValue('sys_id');
// Create new record on cmdb_ci_outage table and set configuration item field to retrieved sys_id
var outage = new GlideRecord('cmdb_ci_outage');
outage.setValue('cmdb_ci', configItemId);
outage.insert();
} else {
gs.log('Could not find configuration item with name: ' + configItemName);
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-03-2023 02:35 AM
Main issue were GlideRecord and current.body.text
Code is working now
// Parse email body text to get configuration item name
var emailBody = email.body_text;
var log = "PROVA OUTAGE email body: " + emailBody;
emailBody = emailBody.replace("configuration item: ", "");
var configItemEnd = emailBody.indexOf("\n");
var configItemName = emailBody.substring(0, configItemEnd).trim(); // Get sys_id of configuration item from cmdb_ci table
log += "\n NOME CI :" + configItemName;
var ci = new GlideRecord('cmdb_ci');
ci.addQuery('name', configItemName);
ci.query();
if (ci.next()) {
log += "\n QUERY TROVA CI CON NAME";
var configItemId = ci.getUniqueValue();
// Create new record on cmdb_ci_outage table and set configuration item field to retrieved sys_id
log += "\n ID CI: " + configItemId;
current.cmdb_ci = configItemId;
current.type = outage;
current.insert();
} else {
gs.log('Could not find configuration item with name: ' + configItemName);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-03-2023 02:35 AM
Main issue were GlideRecord and current.body.text
Code is working now
// Parse email body text to get configuration item name
var emailBody = email.body_text;
var log = "PROVA OUTAGE email body: " + emailBody;
emailBody = emailBody.replace("configuration item: ", "");
var configItemEnd = emailBody.indexOf("\n");
var configItemName = emailBody.substring(0, configItemEnd).trim(); // Get sys_id of configuration item from cmdb_ci table
log += "\n NOME CI :" + configItemName;
var ci = new GlideRecord('cmdb_ci');
ci.addQuery('name', configItemName);
ci.query();
if (ci.next()) {
log += "\n QUERY TROVA CI CON NAME";
var configItemId = ci.getUniqueValue();
// Create new record on cmdb_ci_outage table and set configuration item field to retrieved sys_id
log += "\n ID CI: " + configItemId;
current.cmdb_ci = configItemId;
current.type = outage;
current.insert();
} else {
gs.log('Could not find configuration item with name: ' + configItemName);
}