Name

global.MegaphoneBroadcast

Description

Broadcasting messages for megaphone

Script

var MegaphoneBroadcast = Class.create();
MegaphoneBroadcast.prototype = {
  initialize: function(messageSysId) {
  	this.message = null;
  	var msg = new GlideRecord('sys_broadcast_message');
  	msg.get(messageSysId);
  	
  	if(msg.isValidRecord()) {
  		this.message = msg;
  		this.sys_id = messageSysId;
  	}
  },
  
  broadcastMessage: function() {
  	if(this.message === null || !this.message.isValidRecord()) {
  		gs.warn("Did not find the message.");
  		return;
  	}
  	
  	if(this._isActive()) {
  		this._alertLoggedInUsers();
  		this._sendEmail();
  	}
  },
  
  _isActive: function() {
  	var now = new GlideDateTime();
  	return(now >= this.message.notify_users_after_date && now <= this.message.notify_users_until_date);
  },
  
  //Alert users that are currently logged in
  _alertLoggedInUsers: function() {
  	if(!this.message.logged_in)
  		return;
  	
  	var roles = this.message.user_filter;
  	if(this.message.any_roled_user)
  		roles = "";
  	try {
  		SNC.MegaphoneBroadcast.addMegaphoneMessageToAllLoggedInSessionsOnAllNodes(this.sys_id);
  	}
  	catch(ex) {
  		gs.warn("Unable to alert logged in users for megaphone message: " + this.message.sys_id);
  	}
  },
  
  _sendEmail: function() {
  	if(!this.message.email)
  		return;
  	
  	if(this.message.email_sent)
  		return;
  	
  	SNC.MegaphoneBroadcast.broadcastEmail(this.sys_id);
  },
  
  type: 'MegaphoneBroadcast'
};

Sys ID

7c000f2147200200151119fbac9a716c

Offical Documentation

Official Docs: