Configuration
To configure multiple instances of Softdial Telephony Gateway™ (STG) as a single cluster:
In the config.xml file of every STG that will be part of a cluster, set the following tags:
- <clusterMode>true</clusterMode>
<telephonyLayerID>STG_Cluster1</telephonyLayerID>
Each STG within a cluster should have the same layer ID. This layer ID is the string value specified in the Softdial Campaign Manager™ Client to assign a campaign to a single STG or a cluster of STGs as shown in Fig. 1.
A default CTI layer with ID of __singlecti is required for tenant provisioning. Make sure there is one CTI layer with this default ID in your configuration. - <telephonyLayerIP>x.x.x.x</telephonyLayerIP>
This tag should be set to the IP address (or the machine name) of the machine to enable successful bridging of the calls within a cluster. This tag is important because it allows various STG nodes in a single cluster to communicate with each other directly, e.g. when the agent is nailed up using one STG node but the respondent is connected via a different SCC.

To configure a campaign to use a cluster of STGs or a single STG:
In the Softdial Campaign Manager™ Client, on the Telephony Settings tab/ page, set the CT Layer Identifier (Fig. 1):
In Softdial Campaign Manager™,
In this example, STG_Cluster1 can either be a single STG or a cluster of STGs.
By default, a single STG instance runs as a standalone cluster.

Advanced routing of calls through a specific cluster can be configured using the Python script (SelectTelephonyNode.py) in the Softdial\SP\Scripts folder. This script is used by the dialer service to select a node within a cluster, based on user settings.
Within the script, the functions SelectNodeForCall and SelectNodeForNailup take a params object with members as listed below. Each function is expected to return the node name selected.

Input for SelectNodeFor... | ||||
---|---|---|---|---|
Member | Data type | Description | ...Call | ...Nailup |
Tenant | string | Tenant ID for the call/ agent | Yes | Yes |
IdentifyCTI | string | Cluster identifier from IC parameter | Yes | Yes |
CampaignName | string | Campaign name from CN parameter | Yes | Yes |
AgentName | string | Agent name from AN parameter | - | Yes |
AgentExtension | string | Agent extention from AE parameter | - | Yes |
TelephoneNumber | string | Customer Telephone number from TN parameter | Yes | - |
SessionIdentifier | string | Session Identifier from SI parameter | Yes | - |
ApplicationSpecific | string | Application-specific data from AS parameter | Yes | - |
Data | string | Session data dictionary, currently framed as XML | Yes | - |
IsAgentAttached | int | 0 - ACD call 1 - agent-directed call with agent already nailed up |
Yes | - |
IsFirstParty | int | 0 - ACD call 1 - agent-directed call |
Yes | - |
AgentNailupNodeName | string | if agent is attached, name of agent's nailup node | Yes | - |
Nodes | array | Array of node objects (see below) that script uses to select the node to be used | Yes | Yes |
Each node object in the array has the following members:
Member | Data type | Description |
---|---|---|
Name | string | Name of the telephony node |
Total_Trunks | int | Total number of network-facing telephony channels supported by this node |
Total_TrunksInUse | int | Total trunk lines in use on the telephony node |
Total_AgentsNailedUp | int | Total agents nailed up through this node |
Campaign_AgentsNailedUp | int | Total agents nailed up on this campaign |
Campaign_PortsInUse | int | Total number of ringing calls for the campaign on this node |
Campaign_WaitingAgents | int | Number of waiting agents for the campaign on this node |
The following are examples of possible modifications using the above variables:
- The script by default has access to the trunk information on all nodes and clusters on Softdial CallGem™. It is therefore possible to route the calls through different nodes/ clusters, e.g. based on current trunk usage.
- The default behaviour of the script is to select a node that is consuming the minimum number of trunks in a cluster at any one time (load balancing). But it is possible to modify the script to wait for a single node to consume x number of trunks first before moving on to a different node within the same cluster. This provides the ability to overflow calls based on pre-defined criteria.
- The script can be configured to tie-up interviewer login to a specific node within the cluster. This could be useful in a scenario where a customer would like to tie-up say German agents to a German STG (where the German STG is part of a large cluster of STGs spread across multiple countries).
- The script provides the ability to log the routing information in the dialer logs for later troubleshooting.
The script cannot be configured dynamically; a change in this script requires a service restart.
Before making a change to this script,