Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

eric_szonyi
ServiceNow Employee

I was trying to configure a few custom chat actions but outside but had some challenges finding documentation on the methods available to the g_chat object. I decided to use standard Javascript to enumerate the methods in the g_form object to see what was available to use. I placed the following in my Chat Action - Onclick Action Script:


var x;
for (var str in g_chat) {
//x += str + ': ' + g_chat.getProperty(str);
if(str.startsWith('get')) { x+= str + '\n' + g_chat[str] + '\n\n'; }
}
alert(x);


So from here it gave me all of the 'get' methods and the functions behind them so I would also know what methods had arguments. This is a useful approach for enumerating JavaScript objects when they are not full documented. Here is the output for reference:


getOffset
function () {
return this.box.getOffset();
}

getWidth
function () {
return this.box.getWidth();
}

getHeight
function () {
return this.box.getHeight();
}

getMessageType
function () {
return this.getType() == LiveGUI.WINDOW_CONVERSATION ? LiveGUI.MESSAGE_TYPE_CHAT : LiveGUI.MESSAGE_TYPE_MUC;
}

getThreadID
function () {
return this.getProperty(LiveGUI.WIN_PROP_THREAD_ID) || '';
}

getUser
function (userJID) {
var i = this._users.length;
var user;
while (i--) {
user = this._users<i>;
if (user.jid.toBareJID() == userJID.toBareJID())
return user;
}
return null;
}

getActiveUsers
function () {
return this._getSortedUsersByStatus(this.STATUS_ACTIVE);
}

getInvitedUsers
function () {
return this._getSortedUsersByStatus(this.STATUS_INVITED);
}

getConversationUserJID
function () {
return this._users[1] ? this._users[1].jid : null;
}

getChatType
function () {
if (this.getType() == LiveGUI.WINDOW_CONVERSATION) {
return LiveGUI.MESSAGE_TYPE_CHAT;
}
else if (this.getProperty(LiveGUI.WIN_PROP_QUEUE_JID)) {
var jid = new JID(this.getProperty(LiveGUI.WIN_PROP_CHAT_QUEUE_USER));
if (LiveMux.get().getUserJID().equals(jid))
return LiveGUI.TYPE_QUEUE_USER;
jid = new JID(this.getProperty(LiveGUI.WIN_PROP_CHAT_QUEUE_AGENT));
if (LiveMux.get().getUserJID().equals(jid))
return LiveGUI.TYPE_QUEUE_AGENT;
}
return LiveGUI.MESSAGE_TYPE_MUC;
}

getChatQueueUser
function () {
var bareJID = this.getProperty(LiveGUI.WIN_PROP_CHAT_QUEUE_USER);
return bareJID ? new JID(bareJID).getID() : '';
}

getChatQueueAgent
function () {
var bareJID = this.getProperty(LiveGUI.WIN_PROP_CHAT_QUEUE_AGENT);
return bareJID ? new JID(bareJID).getID() : '';
}

getView
function () {
return this.options.view;
}

getCreationDate
function () {
return this.options.creationDate;
}

getInternalId
function () {
return this.options.internalId;
}

getWindowJID
function () {
return this.options.windowJID;
}

getChannelJID
function () {
return this.options.channelJID;
}

getType
function () {
return this.options.type;
}

getProperty
function (k) {
return this.options.dataProps[k];
}

getProperties
function () {
return this.options.dataProps;
}

getDisplayProperty
function (k) {
return this.options.displayProps[k];
}

getDisplayProperties
function () {
return this.options.displayProps;
}

getWindowTitle
function () {
return this.getProperty(LiveGUI.WIN_PROP_TITLE);
}

getWindowIconClass
function () {
return this._windowIconClass;
}
6 Comments