SendMessageToOnlineUsers

Send message to Demisto online users over Email, Slack, Mattermost or all.

javascript · Common Scripts

Source

var commandAvailable = function(command) {
    var ret = false;
    var allModules = getModulesForCommand(command);
    if (allModules) {
        var instanceKeys = Object.keys(allModules);
        instanceKeys.forEach(function (key) {
            if (allModules[key].state === 'active') {
                ret = true;
            }
        });
    }
    return ret;
};
var medium = (args.medium) ? args.medium.toLowerCase() : 'email';
var slackEnabled = commandAvailable('send-notification');
var mattermostEnabled = commandAvailable('mattermost-send');
var emailEnabled = commandAvailable('send-mail');

if (!slackEnabled && !emailEnabled && !mattermostEnabled) {
    throw 'No available medium to send message';
}
if (medium === 'email' && !emailEnabled) {
  throw 'Email integration not available';
}
if (medium === 'slack' && !slackEnabled) {
  throw 'Slack integration not available';
}
if (medium === 'mattermost' && !mattermostEnabled) {
  throw 'Mattermost integration not available';
}

var res = executeCommand("getUsers", {online: true});
if (isError(res[0])) {
    return res[0];
}
var users = dq(res[0].Contents,'email');

var entries = [];
var sent = [];
users.forEach(function(user) {
    if ((medium === 'all' && emailEnabled) || medium === 'email') {
        res = executeCommand("send-mail", {to: user, subject: 'Notification from Demisto server', body: args.message});
        if (isError(res[0])) {
            entries.push(res[0]);
        } else {
            sent.push(user);
        }
    }
    if ((medium === 'all' && slackEnabled) || medium === 'slack') {
        res = executeCommand("send-notification", {to: user, message: args.message});
        if (isError(res[0])) {
            entries.push(res[0]);
        } else {
            sent.push(user);
        }
    }
    if ((medium === 'all' && mattermostEnabled) || medium === 'mattermost') {
        res = executeCommand("mattermost-send", {to: user, message: args.message});
        if (isError(res[0])) {
            entries.push(res[0]);
        } else {
            sent.push(user);
        }
    }
});

if (sent.length > 0) {
    entries.push('Successfully sent ' + medium + ' message to ' + sent.join(','));
}

return entries;

README

Sends messages to XSOAR’s online users over Email, Slack, Mattermost or all.

Script Data


Name Description
Script Type javascript
Tags -

Inputs


Argument Name Description
medium The medium by which to send a message over. Can be, “Slack”, “Mattermost”, or “Email”.
message The message to send.

Outputs


There are no outputs for this script.