Name

global.DeviceTypeChoiceListBuilder

Description

Builds a choice list of device types that are legacy java adapters and new Custom Adapters built on CAF Framework. Previously, these values were always static and any new were added in a full release cycle. With CAF, these are dynamic and can be released on any store app.

Script

var DeviceTypeChoiceListBuilder = Class.create();
DeviceTypeChoiceListBuilder.prototype = {
  initialize: function() {
  },

  getDeviceTypeChoiceList: function() {
  	var choiceList = new GlideChoiceList();

  	var legacyTypes = [
  		{value: "mweb",label:"Web Client"},
  		{value: "android",label:"Android Device"},
  		{value: "ios",label:"iOS"},
  		{value: "slack",label:"Slack (Deprecated)"},
  		{value: "teams",label:"Microsoft Teams (Deprecated)"},
  		{value: "facebook",label:"Facebook (Deprecated)"},
  		{value: "messenger",label:"Facebook Messenger (Deprecated)"}
  	];
  	// record map of legacy item to see if we can collapse if channel created with same name
  	var legacyTracingMap = {};
  	// add the legacy types
  	for (var legacyIndex = 0; legacyIndex < legacyTypes.length; ++legacyIndex) {
  		var legacyItem = legacyTypes[legacyIndex];
  		choiceList.add(legacyItem.value, gs.getMessage(legacyItem.label));
  		legacyTracingMap[legacyItem.value] = true;
  	}
  	// now add new dynamic types
  	var gr = new GlideRecord('sys_cs_channel'); //Indicate the table to query from
  	gr.query(); //Execute the query
  	while (gr.next()) { //While the recordset contains records, iterate through them
  		var name = gr.getValue("name");
  		var label = gr.getDisplayValue();
  		if (!legacyTracingMap[name]) {
  			choiceList.add(name, gs.getMessage(label));
  		}
  	}
  	// return static and dynamic list of old and new
  	return choiceList;
  },

  type: 'DeviceTypeChoiceListBuilder'
};

Sys ID

bae8928773321010e63395d77df6a761

Offical Documentation

Official Docs: