Softdial Telephony Gateway™ (STG) is configured by modifying the content of the config.xml file, located by default in C:\softdial\STG. It can also be accessed via the Softdial STG folder from the Start Menu.
Below is the contents of a config.xml file, broken into sections to help you find what you require.
Simple descriptions of each element are contained in <!-- comments --> above the elements. Where more detail is required, descriptive paragraphs have been inserted.
<?xml version="1.0" encoding="utf-8"?>
<!-- Sample configuration, also for Lab4 system -->
<configuration version="1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="sytelco.com/TelephonyGatewayDirectConfig">
<!-- ************************************* SYSTEM SETUP ******************************************** -->
<!-- The version that this config file is -->
<fileVersion>10.6.9.0</fileVersion>
<!-- Set the max and min thread count in the .NET thread pool-->
<threadPoolConfig>
<minworker>10</minworker>
<minio>10</minio>
<maxworker>200</maxworker>
<maxio>200</maxio>
</threadPoolConfig>
<!-- ************************************* STG GENERAL SETUP *************************************** -->
<!-- Set the telephony layer ID (default __singlecti)-->
<telephonyLayerID>__singlecti</telephonyLayerID>
<!-- Companding Setting. Either:
ALaw - for Europe
uLaw - for North America-->
<companding>uLaw</companding>
<!-- Do not send the tenant descriptor-->
<doNotSendTD>false</doNotSendTD>
<!-- Which port will the telnet server listen on? This +1 for xml mode connections-->
<telnetBasePort>6511</telnetBasePort>
<!-- Set true to enable attempt to use any installed and supported Pika devices -->
<enablePikaSupport>false</enablePikaSupport>
<!-- Workaround to stop OZ message handling given an RE32 parameter-->
<inhibitOZREmsg>false</inhibitOZREmsg>
<!-- If true, then uses inband tones from the call rather than generating them internally-->
<useExternalInbandSignaling>false</useExternalInbandSignaling>
<!-- The heartbeat need to know which card has cpdtmf(u) running on DSP A/Port 0 and which timeslot
to get the heartbeat sound from -->
<!--cpdtmfDSP>Card/173104</cpdtmfDSP-->
Sets which card a spare DSP32 or DSP65 module can be found on. Only one is needed in the entire system and it must not be one needed for use with CAS (Channel Associated Signaling) on that board. Using the Aculab config tool (ACT) the DSP should have been configured to run either the cpdtmf or cpdtmfu firmware as appropriate for either ALaw or uLaw companding.
<!-- Which DSP32 to use on the specified board (0-3)-->
<!--cpdtmfDSPNumber>0</cpdtmfDSPNumber-->
<!-- For TDM calls should we wait until we recieve the send complete flag before allowing a call to process ?-->
<checkSendComplete>false</checkSendComplete>
<!-- If the connection to the dialer is lost, drop connections to any nailed up agents-->
<dropAgentOnDisconnection>false</dropAgentOnDisconnection>
<!-- If we should answer the call when it hits STG, for TDM only-->
<answerTdmIcOnEntry>false</answerTdmIcOnEntry>
<!-- ************************************* CALL THROTTLING **************************************** -->
<!-- The maximum number of simultaneous outbound calls-->
<maxOutboundCalls>600</maxOutboundCalls>
This sets the value which is passed to Softdial CallGem™ in the Number of Trunks (NT) parameter of the Trunks Open [TO] message, Softdial CallGem™ will not attempt to have more outbound calls than this in progress at any one time. It would typically be set to the total number of channels on all the PSTN facing E1/T1 trunks.
<!-- Calls per second throttle-->
<maxCallsPerSecond>9999999</maxCallsPerSecond>
This is the maximum number of calls per second that the local exchange company can handle, not the gateway limit. Defaults to 9999999. See Throughput Management. - Launch Rate Throttling.
<!-- The number of ip calls allowed to exist into a dsp at one moment
IVR agents are not counted here, this is not a guarantee that DSP resources will be enough -->
<maxIpCallsPerDsp>500</maxIpCallsPerDsp>
<!-- Reserve resources for 1 or more incoming calls, if no incoming calls wanted do not define an
inbound route-->
<!-- APPLIES ONLY TO IP PORTS(TRUNKS)-->
<reservedIncoming>10</reservedIncoming>
<!--The maximum number of proxied calls allowed (-1 means off !) for IP calls only -->
<maximumProxiedCalls>-1</maximumProxiedCalls>
<!-- maximum Inbound Calls -->
<maximumInboundCalls>-1</maximumInboundCalls>
<maximumInboundCalls> is an integer value that determines how many incoming calls STG will allow at any one time as a total in the system before it starts to reject calls because it is busy. -1 means off.
When the specified number is exceeded, a cause code configurable in the proxiedCallFailedCause setting (above) will be returned.
<!-- ************************************* ECHO CANCELLATION ************************************** -->
<!-- This will force echo cancellation to be enabled on the primary connection when outbound call (regardless of other options)-->
<forceEchoCancelOnPrimaryOutbound>false</forceEchoCancelOnPrimaryOutbound>
<!-- This will force echo cancellation to be enabled on the primary connection when inbound call (regardless of other options)-->
<forceEchoCancelOnPrimaryInbound>false</forceEchoCancelOnPrimaryInbound>
<!-- This will force echo cancellation to be enabled on the main agent connection (regardless of other options)-->
<forceEchoCancelOnMainAgent>false</forceEchoCancelOnMainAgent>
<!-- This will force echo cancellation to be enabled on the secondary agent connection (regardless of other options)-->
<forceEchoCancelOnSecondary>false</forceEchoCancelOnSecondary>
<!-- ************************************* STG CLUSTER MODE ************************************** -->
<!-- Set the telephony layer IP address-->
<telephonyLayerIP>10.0.0.0</telephonyLayerIP>
<!-- STG cluster mode, enable when using multiple STG's-->
<clusterMode>false</clusterMode>
<!-- *************************************** TIMESLOT ALLOCATION ********************************** -->
<!-- Which timeslot on the DSP32.65 running cpdtmf[u] to use for logged on agents who are not
connected to anyone -->
<customerRingbackTimeslot>29</customerRingbackTimeslot>
<!-- Which timeslot on the DSP32.65 running cpdtmf[u] to use for logged on agents who are not
connected to anyone-->
<heartbeatTimeslot>20</heartbeatTimeslot>
<!-- Which timeslot on the DSP32.65 running cpdtmf[u] to use for indicating busy to agents-->
<internalBusyTimeslot>30</internalBusyTimeslot>
<!-- Which timeslot on the DSP32.65 running cpdtmf[u] to use for signaling connected call to ACD
agent -->
<connectSignalTimeslot>25</connectSignalTimeslot>
<!-- Which timeslot on the DSP32.65 running cpdtmf[u] to use for customer hang up tone-->
<customerHangupTimeslot>21</customerHangupTimeslot>
<!-- Which timeslot on the DSP32.65 running cpdtmf[u] to use for customer connected tone-->
<customerConnectedTimeslot>21</customerConnectedTimeslot>
<!-- ************************************** ACULAB SETUP **************************************** -->
<!-- Set the pause time between initialising aculab drivers and initialising rest of STG-->
<aculabStartDelayS>20</aculabStartDelayS>
<!-- Used to manage aculab restart; for -1 we will not execute Aculab service restart-->
<aculabTimeOutMinutes>-1</aculabTimeOutMinutes>
<!-- Enable ting tracing for aculab calls-->
<tingTrace>0</tingTrace>
<!-- Please note All sound files should be added in the format selected at installation (ulaw OR alaw) and should have the be 8000 Hz Monotone-->
<!-- ************************************* SOUND FILES ****************************************** -->
<!-- The number of channels each looped back audio is played on (to distribute load) -->
<numberChannelsPerLoopbackSource>2</numberChannelsPerLoopbackSource>
The default setting is 2. Recommended setting is the number of CPU cores
<!-- Alternative to the above, a file to be played in a loop and used as the ringback sound -->
<customerRingbackFile>C:\Softdial\STG\Sounds\ringtone.wav</customerRingbackFile>
<!-- A file to be played in a loop and used as the source of hold tone for agents.
In the absence of an agent hold file, silence is output to the agent on hold. -->
<agentHoldFile>C:\Softdial\STG\Sounds\PleaseHold.wav</agentHoldFile>
<!-- A file to be played in a loop and used as the source of hold tone for customers.
In the absence of an customer hold file, silence is output to the customer on hold. -->
<customerHoldFile>C:\Softdial\STG\Sounds\PleaseHold.wav</customerHoldFile>
<!-- Alternative to the <heartbeat[On/Off]Time> settings, a file to be played in a loop and used as the agent heartbeat sound.
The recording must be 8KHz mono and use the same companding as the system. -->
<heartbeatFile>C:\Softdial\STG\Sounds\heartbeat.wav</heartbeatFile>
<!-- This message will be played if dialer is not connected -->
<messageOutOfService>C:\softdial\stg\numberunobtainable.wav</messageOutOfService>
<!-- To be used for playing busy -->
<busyFile>C:\Softdial\STG\Sounds\busyTone.wav</busyFile>
<!-- To be used to play beep when a call is connected -->
<callConnectedFile>c:\softdial\stg\sounds\Law_beep.wav</callConnectedFile>
<!-- To be used to play beep when a call is terminated from customer end -->
<callHangupFile>c:\softdial\stg\sounds\Law_beep.wav</callHangupFile>
<!-- From V10.6.913 -->
<!-- To be used to play beep when the dialer is starved of numbers -->
<agentMessageNoDataFile>C:\Softdial\STG\Sounds\nonumbers.wav</agentMessageNoDataFile>
<!-- Agent Message Timeout -->
<agentMessageTimeout>5.0</agentMessageTimeout
<!-- *********************************** DTMF ***************************************************** -->
<!-- Time in seconds for which each DTMF digit tone is played (zero for Aculab default)DTMF settings-->
<DTMFDigitLength>0.5</DTMFDigitLength>
<!-- Time in seconds to pause between each played DTMF digit (zero for Aculab default)-->
<DTMFDigitSpacing>0.2</DTMFDigitSpacing>
<!-- *********************************** TIMERS *************************************************** -->
<!-- Period of time in seconds that agents waiting will hear the heartbeat tone -->
<heartbeatOnTime>0.05</heartbeatOnTime>
<!-- Period of time in seconds that agents will hear silence between heartbeats-->
<heartbeatOffTime>7.0</heartbeatOffTime>
<!-- How long in seconds should an agent hear generated busy tones -->
<internalBusyTime>1.5</internalBusyTime>
<!-- Call forward timeout value, value to wait for response of forwarded call before timing it
outTimeout when proxying calls-->
<callForwardTimeout>15.0</callForwardTimeout>
<!-- Time (in seconds) after a channel is release when it becomes available for re-use-->
<channelSettlingTime>2.0</channelSettlingTime>
<!-- Time in seconds that a call may continue after an IDLE event (Q.931 clearing cause) in cases
where call progress can be heard<-->
<failedCallsPostIdleDelayTime>15.0</failedCallsPostIdleDelayTime>
<!-- How long in seconds should an agent hear a tone signaling call connect-->
<connectSignalTime>0.15</connectSignalTime>
<!-- Maximum time in seconds to listen to calls before declaring them unidentified -->
<maxToneDetectionTime>40</maxToneDetectionTime>
<!-- Controls whether unidentified calls are passed to agents -->
<passToneToAgent>false</passToneToAgent>
<!-- Cause (CA) code if maxToneDetectionTime is exceeded and passToneToAgent is false -->
<unidentifiedToneCA>2</unidentifiedToneCA>
<!-- The threshold value in seconds, beyond which a busy needs to be classified as an intercept -->
<lateBusyThreshold>5</lateBusyThreshold>
<!-- For UK tones, the number of times busy cadence must be detected before classifying the call as
a busy.-->
<busyConsecutiveDetects>2</busyConsecutiveDetects>
<!-- Ring time in seconds before declaring an agent logon (nailup) to be a no answer-->
<logonRingTime>22</logonRingTime>
<!-- Estimate (in seconds) of the time between dialing a number and the network starting to really
ring at the far end-->
<estimatedNetworkDelayTime>3.0</estimatedNetworkDelayTime>
<!-- Time before answering an incoming call if not already answered by system -->
<timeBeforeAnswer>30.0</timeBeforeAnswer>
<!-- How long to play the hangup signal to the agent (seconds) -->
<hangupSignalTimeS>0.15</hangupSignalTimeS>
<!-- How long to play the hangup signal to the agent (seconds) -->
<connectCustomerTimeS>0.15</connectCustomerTimeS>
<!-- Time in seconds to wait before retrying a previously failed call transfer to an agent -->
<callRetransferS>10</callRetransferS>
<!-- Time in seconds to allow for RTP data to be recieved after the launch of an outbound IP call-->
<rtpRxCheckTimeS>12.0</rtpRxCheckTimeS>
<!-- Time in seconds to allow for RTP data to be sent after the launch of an outbound IP call-->
<rtpTxCheckTimeS>5.0</rtpTxCheckTimeS>
<!-- Within how many seconds after a call is connected must RTP (audio) start being received? If no RTP (audio) is received within this time the call will be terminated.
A value of zero will disable the feature.
This can be used to terminate calls which are sufferening from a one-way audio issue. -->
<dropCallIfNoAudioInSeconds>0.0</dropCallIfNoAudioInSeconds>
<!-- How many seconds of no RTP (audio) data being received (after at least some RTP data has been received) will trigger the no audio data event.
The call will be terminated if this happens. A value of zero will disable the feature.
This can be used to terminate calls where the remote endpoint has suffered some kind of failure where it wasn't able to properly terminate the call. -->
<lostAudioDetectionLatencyInSeconds>0.0</lostAudioDetectionLatencyInSeconds>
<!-- ********************************* MACHINE DETECTION (ANSWER / FAX)*************************** -->
<!-- If set to true, try and detect announcement messages before the call is connected. -->
<!-- Prior to V10.6.1027 -->
<listenMachineBeforeConnect>false</listenMachineBeforeConnect>
<!-- From V10.6.1027 -->
<detectAnnouncementsBeforeConnect>false</detectAnnouncementsBeforeConnect>
In practice, some calls signal with only a voice message and no detectable SIT. This option gives a way to try and detect those and give them an outcome code rather than leaving them to eventually be failed as No Answers.
The default value false ensures that existing customers doing an update will not see any change in behaviour without explicitly changing their config.xml.
To implement the feature, the AMD detection feature is used before connect (even with DO1 type calls that wouldn't normally have an AMD channel at all) and any CategoryMachine detections are stored for the usual qualification period to ensure that a connect signal is not arriving late. After the qualification period and USSITAMDRawTones, an internal outcome of Announcement is raised and mapped via the usual mappings in the config.xml file:
<outcome>
<!-- Announcement message -->
<usSITAMDRawTone>Announcement</usSITAMDRawTone>
<softdialCA>22</softdialCA>
</outcome>
By default, this is the same mapping as a SIT_IC(Intercept) outcome .
<!-- True if answering machine detection is supported by the telephony board.
To enable it, a call/ campaign must be set to use it as well -->
<enableAnswerMachineDetection>true</enableAnswerMachineDetection>
<!-- True if Fax machine detection is supported by the telephony board<-->
<enableFaxMachineDetection>false</enableFaxMachineDetection>
<!--If AmD is not being used, how long to listen into the call for to see if it is a fax machine.-->
<forceFaxDetectionTime>0.0</forceFaxDetectionTime>
<!--The wave file that an agent should hear if they were connected to a call that was later terminated because it was determined to be a fax machine.-->
<forceFaxDetectionAlertFile>
<!-- The maximum amount of time that the AMD algorithm will run for to determine a call outcome -->
<maxMachineDetectionTime>3.0</maxMachineDetectionTime>
<!-- The time after connect (while doing AMD) after which if no signal has yet been detected that call will be classified as CategoryUnknown -->
<maxSecondsSilenceAfterConnect>1.5</maxSecondsSilenceAfterConnect>
<!-- The time (in seconds) that a signal is required to be active (in total) during the maxSilenceAfterConnect time to count as a detected signal -->
<minSecondsSignalLengthAfterConnect>0.15</minSecondsSignalLengthAfterConnect>
<!-- The default call outcome used when the AMD algorithm times out without giving a definitive result.
A value of zero indicates that the call should be handled as a live call (positive voice detect). Any other value would indicate the cause code with which to fail the call. -->
<timedOutMachineDetectionOutcome>0</timedOutMachineDetectionOutcome>
<!-- The softdial CA value to return in the CF message when a call is dropped remotely whilst machine
detection is in progress-->
<droppedDuringMachineDetectionCA>31</droppedDuringMachineDetectionCA>
<!-- Defines how to treat a call which passes the timeout point without being positively classified. A value of zero indicates that the call should be handled as a live call (positive voice detect). Any other value would indicate the cause code with which to fail the call -->
<timedOutMachineDetectionOutcome>0</timedOutMachineDetectionOutcome>
<!-- The time in seconds that silence needs to last for after a machine is detected to trigger that
start of message playback-->
<postMachineSilenceLatency>2.5</postMachineSilenceLatency>
<!-- Maximum time in seconds after a machine is detected before the message will be played regardless
of silence (end of message) being detected-->
<postMachineMaxSilenceWait>30.0</postMachineMaxSilenceWait>
<!-- Value to pass back as cause for Answer machine where message left-->
<AMLeftMessageCause>33</AMLeftMessageCause>
<!--
<waitForSilenceWithDO4>false</waitForSilenceWithDO4>
<!-- AMD detection adjustment values fed to aculab recognition setup, these are the defaults-->
<catsigParams>
<catsigParam name="F_min_Lmin" value="10108.0"/>
<catsigParam name="F_Lmin_decay" value="1.0008"/>
<catsigParam name="F_speech_thresh" value="0.01"/>
<catsigParam name="I_min_valid_period_count" value="152"/>
<catsigParam name="I_min_valid_count" value="112"/>
<catsigParam name="I_glitch_count" value="48"/>
<catsigParam name="I_qualify_count" value="24"/>
<catsigParam name="I_alter_duration" value="160"/>
<catsigParam name="I_max_valid_tone_cnt" value="48"/>
<catsigParam name="I_min_valid_speech_cnt" value="64"/>
<catsigParam name="I_threshold_samp_cnt" value="360"/>
<catsigParam name="I_delay_time" value="112"/>
<catsigParam name="I_period_time" value="1480"/>
<catsigParam name="I_max_off_count" value="16"/>
<catsigParam name="I_min_period_off" value="600"/>
</catsigParams>
<!-- The AMD algorithm that we should use-->
<AmdAlgorithm>AlgLiveSpeaker</AmdAlgorithm>
<!-- Should we fiddle with the cat sig parameters ?-->
<adjustCatSig>true</adjustCatSig>
<!-- Use Detection Options in preview call ?-->
<useDoInPreview>false</useDoInPreview>
<!-- Frequencies for non-standard carrier voicemail tones (range is value - 20, value + 20)-->
<!-- Forms part of SIT tone detection logic-->
<VMFrequency1>720</VMFrequency1>
<VMFrequency2>1000</VMFrequency2>
<VMFrequency3>2170</VMFrequency3>
<!-- Control of sending connect signal in response to incoming call -->
<forceAnswerOnPlayback>false</forceAnswerOnPlayback>
<forceAnswerOnTX>true</forceAnswerOnTX>
<forceAnswerOnPlayLoop>false</forceAnswerOnPlayLoop>
<forceAnswerOnCallRecord>false</forceAnswerOnCallRecord>
<!-- Capture agent entered DTMF (for transfers and handset coding of calls)-->
<captureAgentDTMF>false</captureAgentDTMF>
<!-- The names of python scripts used for external processing tasks-->
<agentMFScript>agentmf.py</agentMFScript>
<!-- ******************************** CALL RECORDING ******************************************** -->
<!-- Controls if recording should be made using the ACUBLK (oki on prosody X) compression format.
Takes only one quarter of the size (2k/second -->
<useRecordingCompression>false</useRecordingCompression>
<!-- Determines the nature of the call recording mechanism. Recording Monitor needs this to be true,
adds xml data to end of the .wav file data-->
<addInfoInWaveFiles>true</addInfoInWaveFiles>
<!-- Sets the way filenames are generated:
- "session" for the original style with the session id and timestamp
- "guid" for the newer style using a CallGem generated GUID.-->
<recordingFileNameFormat>guid</recordingFileNameFormat>
<!-- The path into which recorded calls should be put (directly or a sub folder depending on how the
recording is started) -->
<callRecordingPath>c:\sytel\rec</callRecordingPath>
<!-- The path into which recording folders should be moved after a specified number of days-->
<callArchivingPath>c:\sytel\arc</callArchivingPath>
<!-- How many days old a folder of recordings needs to be before it is moved to the archive
(1 day = yesterdays date)-->
<daysBeforeArchiving>0</daysBeforeArchiving>
<!-- How many days old a folder of recording needs to be before it is deleted from the archive
(1 day = yesterdays date)-->
<daysToKeepArchive>4</daysToKeepArchive>
<!-- How many days between each run of the archiving process, this will be aligned to 1st January 2000
so that restarts of the service will not affect the scheduling-->
<daysBetweenArchives>1</daysBetweenArchives>
The archival process works like this:
Ensure any recording you wish to keep is moved to some longer term storage before they are deleted.
<!-- From V10.6.919 - Record the agent conference with the 3rd party if the call session has its default recording. This may be a regulatory requirement for some. -->
<recordAgentConference>true</recordAgentConference>
<!-- From V10.6 - If multi-session recording is enabled -->
<useMultiSessionRec>true</useMultiSessionRec>
<!-- Time in minutes to wait before timing out a recording -->
<recordingTimeoutMins>60.0</recordingTimeoutMins>
<!-- How often (in minutes) to check the internal recording table for timed out recordings -->
<recordingCheckMins>15.0</recordingCheckMins>
<!-- The agent outcome to send in the TC when a recording is timed out by STG-->
<aoOnRecTimeout>101</aoOnRecTimeout>
<!-- When this CA is returned from the network we record the connection for a time before dropping, note -1 (default means off) -->
<recordAndDropCA>-1</recordAndDropCA>
<recordAndDropCA> allows the recording of a network announcement (e.g. 'number changed') based on the cause code returned from the network, for later analysis and database update.
<!-- This represents the time period (in seconds) that the recording will be launched on the connection for before dropping -->
<recordAndDropS>5.0</recordAndDropS>
<!-- This is the CA that we return to the dialler when a record and drop has taken place -->
<recordAndDropModifiedCA>22</recordAndDropModifiedCA>
<!-- ****************************** TEXT TO SPEECH SETUP ****************************************** -->
<!-- Set true to use a remote service for TTS conversion. This takes priority over any other TTS settings -->
<ttsUseRemoteService>false</ttsUseRemoteService>
<!-- If we should attempt to split up TTS text to maximise reuse and more efficient caching -->
<!-- NOTE TTS text will be split by capitalised text values -->
<enableTTSInteligentCaching>false</enableTTSInteligentCaching>
<!-- If this is enabled text fragments that are capitalised will also be cached -->
<!-- Default system behaviour is to assume these are not cached (because they are non recurring)-->
<cacheTtsCapitalisedSegments>false</cacheTtsCapitalisedSegments>
<cacheTtsCapitalisedSegments> aims to improving TTS performance for long text strings by splitting the strings into capitalised and non-capitalised fragments.
The non-capitalised fragments can be cached to improve access times for recurring strings. Capitalised strings are assumed to be distinct and are not cached by default.
<!-- The number of bytes of audio data supplied to the tts engine in a second -->
<ttsBytesPerSecond>8000</ttsBytesPerSecond>
<!-- The number of bits of audio data in a sample-->
<ttsBitsPerSample>8</ttsBitsPerSample>
<!-- Mono or stereo TTS (1 / 2)-->
<ttsChannelCount>1</ttsChannelCount>
<!-- The number of average tts buffer bytes to be sampled in a second-->
<ttsSamplesPerSecond>8000</ttsSamplesPerSecond>
<!-- The audio format to use in the memory stream when speaking the TTS voice -->
<ttsSpeechAudioFormat>41</ttsSpeechAudioFormat>
<!-- AT & T Natural Voice-->
<!-- If this is true, an attempt will be made to start the At&t TTS system-->
<attTTSSettings>
<enableAttTTS>false</enableAttTTS>
<numberEngines>1</numberEngines>
<AttTTSHost>localhost</AttTTSHost>
<AttTTSPort>7000</AttTTSPort>
<AttTTSVoice>Mike</AttTTSVoice>
</attTTSSettings>
<!--Microsoft Speech API (SAPI)-->
<!-- Set "enable" true to enable SAPI TTS, if ATT is enabled will always take precedence-->
<sapiTTSSettings>
<numberEngines>1</numberEngines>
<enabled>true</enabled>
<voice>Microsoft Sam</voice>
<!-- Sets the absolute speed for the speech in a range between -10 and 10 with 0 being normal speech. -->
<ttSspeechRate>0</ttSspeechRate>
<!-- ttSspeechVolume min = 0, max = 100 -->
<ttSspeechVolume>100</ttSspeechVolume>
</sapiTTSSettings>
<!-- ********************************* TRANSLATIONS ********************************************* -->
<!-- If we should use the internally configured CLI when transferring a call to an external number, if false we use the oringator's CLI -->
<useInternalCliInExtTransfer>false</useInternalCliInExtTransfer>
<!-- If we should translate incoming call source and destination before sending IC to the dialer-->
<translateBeforeIC>true</translateBeforeIC>
<!-- Do the CLI translation before the address translation - defaults to false-->
<cliTransBeforeAddress>false</cliTransBeforeAddress>
<!-- CLI Translations DDI number to new CLI number-->
<cliTranslations>
<!--translate address="sip:1111@10.21.21.11" translated="1111" useSourceAsComparer="false"/-->
</cliTranslations>
<!-- Translations from one address to another, handled internally -->
<addressTranslations>
<translate address="sip:*@10.5.0.2" translated="*" />
</addressTranslations>
<!-- ****************** PROSODY S SETTINGS ******************************************************* -->
<!-- Please note the settings available in this section will only take effect when the system is running under a ProsodyS configurarion -->
<settingsProsodyS>
<!-- useProsodyS - If we are running a ProsodyS system -->
<useProsodyS>true</useProsodyS>
<!-- receiveDTMF - Indicator of whether RFC2833 tones that are present in the data stream should be regenerated as audio data. (either "rfc2833" events or "Audio")-->
<receiveDTMF>Audio</receiveDTMF>
<!-- sendDTMF - Indicator of whether tones that could be sent using the RFC 2833 standard that are detected in the audio should be encoded as RFC 2833 RTP packets. (either "rfc2833" events or "Audio")-->
<sendDTMF>RFC2833</sendDTMF>
<!-- enforceMinimumDtmfRxSpacing - A non-zero value instructs the VMP[rx] to enforce a minimum silence between regenerated tones. -->
<enforceMinimumDtmfRxSpacing>1</enforceMinimumDtmfRxSpacing>
<!-- overrideRFC2833receivePayloadType - The payload type ID that DTMF data will be presented on-->
</settingsProsodyS>
<!-- ****************** PROSODY X SETTINGS, CARDS ************************************************ --><!-- Cards to ignore -->
<ignoreCards>
<!--serialNumber>179560</serialNumber>
<serialNumber>183794</serialNumber-->
<!-- Prosody X -->
</ignoreCards>
<!-- Cards that must be found before initialisation can proceed -->
<requiredCards>
<!--serialNumber>179560</serialNumber>
<serialNumber>183948</serialNumber>
<serialNumber>HS_PROSODYS</serialNumber -->
</requiredCards>
<!-- ***************************** SIP CREDENTIALS, GATEWAY SETUP ******************************** -->
<!-- Gateway Settings for SIP registration-->
<!-- Do not define unless a ip board is active, we assume that proxy is also registar (ONDO)-->
<!--sipProxy>
<enabled>false</enabled>
<address>10.0.0.1</address>
<port>5060</port>
<protocol>Udp</protocol>
<realm>realm</realm>
<username>user</username>
<password>password</password>
<registrarName>name</registrarName>
<registrarTarget>name@10.0.0.0</registrarTarget>
<reRegisterAfterMins>300</reRegisterAfterMins>
</sipProxy-->
<!-- It is possible to call directly to multiple proxy server, so this section can define
authentication credentials for multiple realms. -->
<sipCredentials>
<!--credential realm= "realm">
<username>Admin</username>
<password>Password</password>
</credential-->
</sipCredentials>
<sipListeners>
<!-- Adds additional listening sockets to STG, each at a specified address and port number -->
<sipListener>
<ipAddress>10.0.0.1</ipAddress>
<!-- By default, listens on port 5060 UDP on all addresses the system has (and all adapters) -->
<port>5060</port>
<!-- Can be UDP (default)or TCP -->
<protocol>Udp</protocol>
</sipListener-->
</sipListeners>
<!-- ******************************* CALL PROGRESS TONE DETECTION ********************************* -->
<!-- Time in seconds during which all three tones of a UK SIT must be detected in the correct
sequence-->
<ukSITMaxPeriod>2.0</ukSITMaxPeriod>
<!-- US First Ring Timer. A callback is scheduled to check that we have recieved ringback in the configured time-->
<usSITFirstRingTimer>11.0</usSITFirstRingTimer>
<!-- US ConsecutiveRing Timeout. Total time allowed between rings before we classify as a SIT_IC-->
<usSITConsecutiveRingTimeout>7.0</usSITConsecutiveRingTimeout>
<!-- US Spoof Ring Timer. A callback is scheduled to check for consecutive ringback following the first event from (usSITFirstRingTimer)-->
<usSITSpoofRingTimer>8.0</usSITSpoofRingTimer>
<!-- UK if we should detect dead tone using the time between ringback events -->
<ukSITDetectDeadTone>true</ukSITDetectDeadTone>
<!-- True if we want to keep listening for SIT tones after a connect -->
<enableSITDetectionPostConnect>false</enableSITDetectionPostConnect>
<!-- What type of tones should be detected? Options are UK, USA or Global-->
<toneType>UK</toneType>
<!-- Call progress tone overall control settings.
Even if this is set to true, individual calls or campaigns must have it enabled, too -->
<enableToneDetection>true</enableToneDetection>
<defaultCadenceRule name="USA">
<!-- A timer applied to all rings after the first ring. If the period of time between consecutive rings exceeds this value, a result of SIT_RingStopped is applied. -->
<ringStoppedTimeout>4.0</ringStoppedTimeout>
<!-- An event is fired after this period of time (seconds) to check the first ring has occurred.
If not SIT_NoRing is applied (similar to above but on first ring only).-->
<firstRingTimeout>11.0</firstRingTimeout>
<!-- What type of tones should be detected? Options are UK, USA or Global -->
<toneType>USA</toneType>
</defaultCadenceRule>
<!-- User configurable list of cadence rules, you can add as many as you like and link them to call routes -->
<!-- Cadence settings are now available for UK, Russia, Norway, Netherlands and USA. -->
<cadenceRules>
<cadenceRule name="Russia">
<ringStoppedTimeout>6.0</ringStoppedTimeout>
<firstRingTimeout>11.0</firstRingTimeout>
<congestionBusyThreshold>0.55</congestionBusyThreshold>
<congestionMinDetects>2</congestionMinDetects>
<busyRingThreshold>1.3</busyRingThreshold>
<busyMinDetects>2</busyMinDetects>
<toneType>Global</toneType>
<!-- The <toneType> Global can be further refined by the following settings -->
<!-- Cadence thresholds are limits that MUST be reached before we count a beep -->
<cadenceThresholds>
<!-- A <cadenceThreshold> contains data that is used (by the SIT algorithm) to classify a SIT tone. All cadence thresholds are driven through the config and as many can be added as required to achieve the users end goal. -->
<!-- In these bounds for a SHORT beep-->
<cadenceThreshold>
<!-- A unique name to refer to the cadence threshold (so it can be associated with a rule). Can be anything-->
<name>shortBeep</name>
<lowerthresholdS>0.0</lowerthresholdS>
<upperthresholdS>0.55</upperthresholdS>
<thresholdCheckMode>0</thresholdCheckMode>
</cadenceThreshold>
Thresholds can be checked in the following ways:
Threshold triggers when value is
This mode is used to check a value for compatibility with a cadence object.
<!-- In these bounds for a LONG beep-->
<cadenceThreshold>
<name>longBeep</name>
<lowerthresholdS>0.0</lowerthresholdS>
<upperthresholdS>1.3</upperthresholdS>
<thresholdCheckMode>0</thresholdCheckMode>
</cadenceThreshold>
</cadenceThresholds>
<!-- Cadence Triggers represent counts of "beeps" that MUST occur to fire a specific trigger-->
<cadenceTriggers>
<!-- BUSY = 3 long beeps -->
<cadenceTrigger>
<!-- Contains a set of rules that a collection of SIT tones events must match before a "trigger" can be raised in the code resulting in a tone classification. Any number of <cadenceTrigger> objects can be specified. -->
<!-- The unique name for the cadenceTrigger. ->>
<name>busyTrigger</name>
<!-- The classification to assign to a sequence of SIT tones when the rules for this trigger have been satisfied. -->
<toneClassification>Busy</toneClassification>
<triggerRules>
<!-- Any number of <triggerRule> objects can be specified; each must reference a <cadenceThreshold> object.-->
<triggerRule>
<thresholdName>longBeep</thresholdName>
<!-- The number of detections required to satisfy the conditions of the rule and allow it to pass. -->
<numDetects>3</numDetects>
</triggerRule>
</triggerRules>
</cadenceTrigger>
<!-- DEAD = 4 short beeps -->
<cadenceTrigger>
<name>networkFailTrigger</name>
<toneClassification>SIT_deadTone</toneClassification>
<triggerRules>
<triggerRule>
<thresholdName>shortBeep</thresholdName>
<numDetects>4</numDetects>
</triggerRule>
</triggerRules>
</cadenceTrigger>
<!-- OUT OF ORDER = 1 long beep, 2 short beeps -->
<cadenceTrigger>
<name>outOfOrderTrigger</name>
<toneClassification>SIT_RO</toneClassification>
<triggerRules>
<triggerRule>
<thresholdName>longBeep</thresholdName>
<numDetects>1</numDetects>
</triggerRule>
<triggerRule>
<thresholdName>shortBeep</thresholdName>
<numDetects>2</numDetects>
</triggerRule>
</triggerRules>
</cadenceTrigger>
</cadenceTriggers>
</cadenceRule>
</cadenceRules>
Cadence rules can also be set per <route>, e.g.
<!-- cadence rule for this route-->
<cadenceRule>UK</cadenceRule>
See the Routes section below.
<!-- ****************************** CALL PROFILES ************************************************ -->
<!-- rtpTOS and is a byte field that specifies the type of service field to be used in the IP headers of the RTP packets sent by aculab on a per call basis for outgoing and incoming calls.
To set this value to zero 256 should be used (hex 0x100). These values should be set depending on the prioritisation settings of the router to prioritise RTP traffic over other traffic -->
<!--rtcpTOS and is a byte field that specifies the type of service field to be used in the IP headers of the RTCP packets sent by aculab on a per call basis for outgoing and incoming calls.
To set this value to zero 256 should be used (hex 0x100). These values should be set depending on the prioritisation settings of the router to prioritise RTCP traffic over other traffic -->
<!-- Specify codec type: G.711 - "G711_ALAW" or "G711_ULAW"; G.729 - "G729".
fpp = frames per packet- min value=1 max value=3 default=2,
vad = voice activity detector - false/0 = Off, true/1 = On. Suppresses silence, stops empty packets being sent. -->
<!-- The IP Telephony card can detect DTMF in the audio stream switched to it and treat it differently to normal audio by blocking DTMF in the outgoing audio stream and
sending RFC 2833 frames instead. -->
<!-- If dtmf_detector is set to true then this processing will be performed. -->
<!-- If dtmf_detector is set to false then DTMF will not be detected, and will be treated as normal audio -->
<ipCallProfiles>
<profile name="Bridged">
<rtpTos>184</rtpTos>
<rtcpTos>184</rtcpTos>
<dtmfDetector>false</dtmfDetector>
<codecs>
<codec type="G711_ALAW" vad="false" fpp="2"/>
<codec type="G729" vad="false" fpp="3"/>
</codecs>
</profile>
<profile name="Agents">
<rtpTos>184</rtpTos>
<rtcpTos>184</rtcpTos>
<dtmfDetector>false</dtmfDetector>
<codecs>
<codec type="G711_ALAW" vad="false" fpp="2"/>
<codec type="G729" vad="false" fpp="3"/>
</codecs>
</profile>
<profile name="Customers">
<rtpTos>184</rtpTos>
<rtcpTos>184</rtcpTos>
<dtmfDetector>false</dtmfDetector>
<codecs>
<codec type="G711_ALAW" vad="false" fpp="2"/>
<codec type="G729" vad="false" fpp="3" />
</codecs>
</profile>
</ipCallProfiles>
For more details, see STG Configuration - Routes.
<!-- ******************* CALL ROUTING ************************************************************ -->
<!-- Whether or not to try and re-route the call when a congestion outcome is received from the network-->
<rerouteWhenCongested>false</rerouteWhenCongested>
<!-- Allow outbound calls to be looped back into the system as an inbound call -->
<enableLoopback>false</enableLoopback>
<!-- ******************* PORTS ******************************************************************* --><!-- Low level information about each port -->
<!-- Defines which Aculab ports to use and give them symbolic names -->
<portInfos>
<portInfo name="SIP">
<resource>Card/HS_PROSODYS/Port/SIP</resource>
<allowCallProgressEmulation>false</allowCallProgressEmulation>
<!-- maxConcurrentInbound = 0 means there is no limit -->
<maxConcurrentInbound>0</maxConcurrentInbound>
<maxConcurrentInbound> is an integer value that determines how many incoming calls can exist on a port at any one time before it starts to reject calls because it is busy. When this is exceeded, STG controls the rejection and will return a nochannelsavailable cause code.
<!--<presentation>
<orig_numbering_type>1</orig_numbering_type>
<orig_numbering_plan>2</orig_numbering_plan>
<orig_numbering_presentation>3</orig_numbering_presentation>
<orig_numbering_screening>4</orig_numbering_screening>
<originating_addr>test</originating_addr>
</presentation>-->
</portInfo>
</portInfos>
<!-- Defines each group of ports that are connected to the same destination -->
<portGroups>
<portGroup name="TRUNKS">
<ports>
<resource>SIP</resource>
</ports>
<inboundRoute>FromSIP</inboundRoute>
</portGroup>
</portGroups>
<!-- ******************* INBOUND ROUTES ******************************************************************* -->
<!-- Inbound call routing definitions, each port references one of these to determine how calls
arriving at that port should be handled -->
<inboundRoutes>
<inboundRoute name="FromSIP">
<!-- Either a call arriving here uses the "Internal" handler which forwards it on, or the "Dialer"
handler which just notifies the dialer that there is a call for it to handle -->
<handler>Dialer</handler>
<!-- call profile this route uses -->
<ipCallProfile>Customers</ipCallProfile>
<!-- strip sip address parts from the address numbers (sip:1111@10.0.0.1 would become 1111).
Acceptable values:
0 - don't strip
1 - strip Source Address (SRC)
2 - strip Destination Address (DST)
3 - strip both -->
<stripSipAddress>0</stripSipAddress>
</inboundRoute>
</inboundRoutes>
<!-- ******************* INGRESS ROUTES ******************************************************************* -->
<!-- When acting as a proxy we can redirect ranges of numbers to be handled by "Internal" or by the "Dialer" -->
<!-- inbound calls -->
<ingressRoutes>
<route name="IngressRoute1">
<inboundRoute>FromSIP</inboundRoute>
<!-- The acceptList is interpreted as "If the number doesn't begin with at least one of these, reject it from this route". If acceptList is not provided, then all numbers are accepted. -->
<acceptList>
<item>sip:0</item>
</acceptList>
<!-- The rejectList checking is done after the acceptList, so that you can, for example, accept all numbers beginning with 0, except numbers beginning with 00. -->
<rejectList>
<item>0</item>
</rejectList>
<!-- Then the stripPrefixes list is scanned, to remove any listed prefix from the number. Only the first matching prefix will be removed. -->
<stripPrefixes>
<item>1</item>
</stripPrefixes>
<!-- prefix to be added -->
<prefix>sip:</prefix>
<!-- postfix to be added -->
<postfix>@myproxy.address</postfix>
<!-- When acting as a proxy we can redirect ranges of numbers to be handled by "Internal" or by the "Dialer" -->
<handler>Internal</handler>
</route>
</ingressRoutes>
The config.xml file must contain at least one route element.
When a call is made, the routes are processed in the same order as they appear in the file. Typically, the routes should be ordered so as to filter out short numbers first, sending them to a PBX and then remaining numbers to the PSTN, local calls first in the USA with a final group sending anything that is left to the long distance provider.
If a valid route is not found, the call will fail.
<!-- ******************* OUTBOUND ROUTES ******************************************************************* -->
<!-- Route control for ALL dialed numbers, extensions or external calls, for IP create separate
routes -->
<routes>
<!-- PSTN ROUTE-->
<route name="PSTN">
<targetPortGroups>
<portGroup>TRUNKS</portGroup>
</targetPortGroups>
<acceptList>
<item>01</item>
<item>02</item>
<item>03</item>
<item>04</item>
<item>05</item>
<item>06</item>
<item>07</item>
<item>08</item>
<item>09</item>
</acceptList>
The acceptList is interpreted as "If the number doesn't begin with at least one of these, reject it from this route". If acceptList is not provided, then all numbers are accepted.
<!--rejectList>
<item>0</item>
</rejectList-->
The rejectList checking is done after the acceptList, so that you can, for example, accept all numbers beginning with 0, except numbers beginning with 00.
<!--stripPrefixes>
<item>1</item>
</stripPrefixes -->
Then the stripPrefixes list is scanned, to remove any listed prefix from the number. Only the first matching prefix will be removed.
<!--tenantList>
<item>default</item>
</tenantList-->
If the <tenantList> is empty or has no elements, then the route is valid for all tenants.
If the list has tenants, then the route is valid for these tenants only. It is commented out by default.
<!--prefix>sip:</prefix>
<postfix>@myproxy.address</postfix>
<!-- Contains a list of timeRange elements that describe when a route may be used (e.g. for least cost routing)
<validTimes>
<timeRange>days="mon;tue;wed" start ="18:30" end ="24:00"</timeRange>
<timeRange>days="sat;sun" start="00:00" end="24:00"</timeRange>
</validTimes-->
If the number is too long/ short, it is rejected by this route and the next one will be tried.-->
<maxDigits>80</maxDigits>
<minDigits>10</minDigits>
<allowCallProgressEmulation>true</allowCallProgressEmulation>
<ipCallProfile>Agents</ipCallProfile>
<presentation>
<!--<orig_numbering_type></orig_numbering_type>
<orig_numbering_plan></orig_numbering_plan>
<orig_numbering_presentation></orig_numbering_presentation>
<orig_numbering_screening></orig_numbering_screening>-->
Extracted from Aculab Call Control Driver API Guide
Can contain a valid numbering type for the call and must be appropriate for the signalling system.
Allowable values are:
0 | NT_UNKNOWN |
1 | NT_INTERNATIONAL |
2 | NT_NATIONAL |
3 | NT_NETWORK_SPECIFIC |
4 | NT_SUBSCRIBER_NUMBER |
6 | NT_ABBREVIATED_NUMBER |
Some signalling systems may not have support for all these values.
The default value is NT_UNKNOWN.
Can contain a valid numbering plan for the call and must be appropriate for the signalling system.
Allowable values are:
0 | NP_UNKNOWN |
1 | NP_ISDN |
3 | NP_DATA |
4 | NP_TELEX |
8 | NP_NATIONAL_STANDARD |
9 | NP_PRIVATE |
Some signalling systems may not have support for all these values.
The default value is NP_UNKNOWN.
Indicates the intention of the calling party for the presentation of the calling number (originating_address) to the called party.
Allowable values are:
0 | PR_ALLOWED | Presentation Allowed |
1 | PR_RESTRICTED | Presentation Restricted |
2 | PR_NOTAVAILABLE | Number not available due to interworking |
3 | PR_RESERVED |
Allowable values are:
0 | SC_NOTSCREENED | User provided, not screened |
1 | SC_VERIFYPASS | User provided, verified and passed |
2 | SC_VERIFYFAIL | User provided, verified and failed |
3 | SC_NETWORKPROVIDED | Network provided |
<originating_addr>sip:PSTN@sipserver.sytel.no-ip.com</originating_addr>
<!--<sip_contact>contact@machine.com</sip_contact>-->
</presentation>
<!-- Priority that this route has over other routes -->
<priority>1</priority>
<!-- How many failed calls need to be dialled on this route before it is considered congested by the system-->
<congestionThreshold>5</congestionThreshold>
<!-- cadence rule for this route-->
<cadenceRule>USA</cadenceRule>
</route>
<!-- INTERNATIONAL ROUTE-->
<route name="INTERNATIONAL">
<targetPortGroups>
<portGroup>TRUNKS</portGroup>
</targetPortGroups>
<acceptList>
<item>00</item>
</acceptList>
<maxCalls>360</maxCalls>
<maxCalls> takes an integer value to define how many calls are allowed through the route.
A typical use case would be where there are two gateways being used, each connected to a differing number of E1/T1 lines.
Two routes can be specified that match the same calls but each route directs calls to a different gateway. By giving both routes the same priority, calls will be distributed randomly between them.
As they have differing maximum capacities, using this setting you can specify the capacity (i.e. number of channels) of each gateway.
Resources (channels) are marked as in use when a call is dialled via a route and released when the call goes idle.
If all of the resources available in a route are in use when a new call is launched, then the route is removed from the list of routes available for the call.
<!--stripPrefixes>
<item>1</item>
</stripPrefixes -->
<!--rejectList>
<item>0</item>
</rejectList-->
<!--tenantList>
<item>default</item>
</tenantList-->
<!--prefix>sip:</prefix>
<postfix>@myproxy.address</postfix-->
<maxDigits>80</maxDigits>
<minDigits>10</minDigits>
<allowCallProgressEmulation>true</allowCallProgressEmulation>
<ipCallProfile>Agents</ipCallProfile>
<presentation>
<!--<orig_numbering_type></orig_numbering_type>
<orig_numbering_plan></orig_numbering_plan>
<orig_numbering_presentation></orig_numbering_presentation>
<orig_numbering_screening></orig_numbering_screening>-->
<originating_addr>sip:INTERNATIONAL@sipserver.sytel.no-ip.com</originating_addr>
<!--<sip_contact>contact@machine.com</sip_contact>-->
</presentation>
<!-- Priority that this route has over other routes -->
<priority>1</priority>
<!-- How many failed calls need to be dialled on this route before it is considered congested by the system-->
<congestionThreshold>5</congestionThreshold>
<!-- cadence rule for this route-->
<cadenceRule>UK</cadenceRule>
</route>
<!-- EMERGENCY ROUTE-->
<route name="EMERGENCY">
<targetPortGroups>
<portGroup>TRUNKS</portGroup>
</targetPortGroups>
<acceptList>
<item>999</item>
<item>111</item>
<item>112</item>
<item>117</item>
<item>119</item>
</acceptList>
<!--stripPrefixes>
<item>1</item>
</stripPrefixes -->
<!--rejectList>
<item>0</item>
</rejectList-->
<!--tenantList>
<item>default</item>
</tenantList-->
<!--prefix>sip:</prefix>
<postfix>@myproxy.address</postfix-->
<maxDigits>3</maxDigits>
<minDigits>3</minDigits>
<allowCallProgressEmulation>true</allowCallProgressEmulation>
<ipCallProfile>Agents</ipCallProfile>
<presentation>
<!--<orig_numbering_type></orig_numbering_type>
<orig_numbering_plan></orig_numbering_plan>
<orig_numbering_presentation></orig_numbering_presentation>
<orig_numbering_screening></orig_numbering_screening>-->
<originating_addr>sip:EMERGENCY@sipserver.sytel.no-ip.com</originating_addr>
<!--<sip_contact>contact@machine.com</sip_contact>-->
</presentation>
<!-- Priority that this route has over other routes -->
<priority>1</priority>
<!-- How many failed calls need to be dialled on this route before it is considered congested by the system-->
<congestionThreshold>5</congestionThreshold>
<!-- cadence rule for this route-->
<cadenceRule>UK</cadenceRule>
</route>
<!-- EXTENSIONS ROUTE-->
<route name="EXTENSIONS">
<targetPortGroups>
<portGroup>TRUNKS</portGroup>
</targetPortGroups>
<acceptList>
<item>2</item>
</acceptList>
<!--stripPrefixes>
<item>1</item>
</stripPrefixes -->
<!--rejectList>
<item>0</item>
</rejectList-->
<!--tenantList>
<item>default</item>
</tenantList-->
<prefix>sip:</prefix>
<postfix>@10.7.0.6</postfix>
<maxDigits>4</maxDigits>
<minDigits>4</minDigits>
<allowCallProgressEmulation>true</allowCallProgressEmulation>
<ipCallProfile>Agents</ipCallProfile>
<presentation>
<!--<orig_numbering_type></orig_numbering_type>
<orig_numbering_plan></orig_numbering_plan>
<orig_numbering_presentation></orig_numbering_presentation>
<orig_numbering_screening></orig_numbering_screening>-->
<originating_addr>sip:EXTENSIONS@sipserver.sytel.no-ip.com</originating_addr>
<!--<sip_contact>contact@machine.com</sip_contact>-->
</presentation>
<!-- Priority that this route has over other routes -->
<priority>1</priority>
<!-- How many failed calls need to be dialled on this route before it is considered congested by the system-->
<congestionThreshold>5</congestionThreshold>
<!-- cadence rule for this route-->
<cadenceRule>UK</cadenceRule>
</route>
<!-- Default Bridged Calls route. This exists to allow bridged SIP calls to address STG peers directly -->
<route name="BridgedCalls">
<targetPortGroups>
<portGroup>TRUNKS</portGroup>
</targetPortGroups>
<acceptList>
<item>sip:BRIDGED</item>
</acceptList>
<allowCallProgressEmulation>false</allowCallProgressEmulation>
<ipCallProfile>Bridged</ipCallProfile>
<presentation>
</presentation>
<!-- Priority 0 indicates that this is the ONLY route acceptable for bridged calls -->
<priority>0</priority>
<!-- How many failed calls need to be dialled on this route before it is considered congested by the system-->
<congestionThreshold>1</congestionThreshold>
</route>
</routes>
<!-- Outcomes that are considered congested and used to re-route traffic via alternate routes-->
<congestionMappings>
<congestion>
<causeCode>NoChannelAvailable</causeCode>
</congestion>
<congestion>
<causeCode>TemporaryFailure</causeCode>
</congestion>
<congestion>
<causeCode>SwitchingEquipmentCongested</causeCode>
</congestion>
<congestion>
<causeCode>RequestedChannelNotAvailable</causeCode>
</congestion>
<congestion>
<causeCode>SIP_ServiceUnavailable</causeCode>
</congestion>
</congestionMappings>
<!-- Outcomes that are used to classify a call as busy -->
<busyMappings>
<busy>
<congestion>UserBusy</congestion>
</busy>
<busy>
<congestion>SIP_BusyHere</congestion>
</busy>
</busyMappings>
<!-- ******************************* PROGRESS INDICATORS ***************************************** -->
<!-- SIP, treat "183" call progress messages as "180" ringing messages-->
<progressIndicatorAsRinging>true</progressIndicatorAsRinging>
<!-- ProgressIndicatorAsConnect to be used on TDM connections: if a progress indicator listed here is
received if will handled as connect this is valid only and only when we are dealing with calls
with DO0 over Tdm value zero is ignored there is no limit on how many values are added -->
<!--<progressIndicatorAsConnect>
<progressIndicator>1</progressIndicator>
</progressIndicatorAsConnect>--><!-- ******************************** OUTCOME MAPPINGS ******************************************* -->
<!-- If we want to set a custom cause code for a no answer timeout-->
<noAnswerTimeoutCustomCause>true</noAnswerTimeoutCustomCause>
<!-- The custom cause code for the ring no answer timeout-->
<noAnswerCustomCause>Internal_RingNoAnswerTimeout</noAnswerCustomCause>
<noAnswerCustomCause> allows the user to set a cause code that is returned from STG when an internal no answer timeout is triggered. Previously this was classified as an internal code that then resulted in '16' being sent back as a cause code. It is now possible, in a proxied STG scenario, to distinguish between calls that were hung up after an answer and those which were not.
noAnswerCustomCause is of type Q931Causes, which can take the values listed in the section ISDN q931 cause mappings - To Softdial CA parameter.
<!--The cause code to use when failing a call because we have reached the maximum calls allowed (IP calls only) - <maximumProxiedCalls> or <maximumInboundCalls> -->
<proxiedCallFailedCause>SIP_ServiceUnavailable</proxiedCallFailedCause>
<!-- Internal call timeout cause code -->
<internalCallTimeoutCode>30</internalCallTimeoutCode>
<!-- RNA timeout cause code -->
<rnaCallTimeoutCode>2</rnaCallTimeoutCode>
<!-- The default CA code to pass to the dialer for calls that fail with unknown reason-->
<defaultOutcomeCA>30</defaultOutcomeCA>
<!-- The CA code to pass to the dialer for calls timed out as no answer, for which no ringback had been
detected (ISDN or inband)-->
<noAnswerNoRingbackCA>0</noAnswerNoRingbackCA>
<!-- Map with files to be played to main agent on various raw causes in order to provide to agent an
expected "audio experience". On each raw cause the corresponding file will be played for
"duration" seconds. We can have the same file for multiple causes.
The emulation takes place only if the outbound call needs to emulate call progress. To activate
call progress for a call, you need to set <emulateCallProgress>true</emulateCallProgress> in
portInfo, portGroup or route that was used for call origination. If route/emulateCallProgress is
set to true, it will propagate to portgroups/portinfo used by it. If PortGroup/emulateCallProgress
is set to true, it will propagate to Portinfo used.
- Duration represents seconds and has default value of 1.5- MAP
- rawcause represents either Q931 cause as a number or a SIP cause as a number
- file represents full path to the file, no default values there are no default associationsNot configurable on the fly.undefined raw causes will not be handled, no emulation will take placeUse in absence of a call progress analysis, applies only and only to agent
connection, and only on outbound "Follow-upCalls", during dialing we always play ring back
to the agent, ring back is coming from DSP65 or customerRingbackFile-->
<callProgressEmulation duration ="2.5">
<maps>
<!--busytone.wav, equipmentengagedtone.wav, numberunobtainable.wav-->
<map rawcause="400" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--400 Bad Request -->
<map rawcause="401" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--401 Unauthorised -->
<map rawcause="402" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--402 Payment Req’d -->
<map rawcause="403" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--403 Forbidden -->
<map rawcause="404" file="c:\softdial\stg\sounds\numberunobtainable.wav"/>
<!--404 Not found -->
<map rawcause="405" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--405 Method not allowed -->
<map rawcause="406" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--406 Not Acceptable-->
<map rawcause="407" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--407 Proxy Auth required -->
<map rawcause="408" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--408 Timeout -->
<map rawcause="410" file="c:\softdial\stg\sounds\numberunobtainable.wav"/>
<!--410 Gone -->
<map rawcause="413" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--413 Request entity too long -->
<map rawcause="414" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--414 URI too long -->
<map rawcause="415" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--415 Unsupported media type-->
<map rawcause="416" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--416 Unsupported URI Scheme-->
<map rawcause="420" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--420 Bad extension -->
<map rawcause="421" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--421 Extn Required -->
<map rawcause="423" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--423 Interval Too Brief -->
<map rawcause="480" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--480 Temporarily Unavailable -->
<map rawcause="481" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--481 Call not exist-->
<map rawcause="482" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--482 Loop Detected -->
<map rawcause="483" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--483 Too Many Hops -->
<map rawcause="484" file="c:\softdial\stg\sounds\numberunobtainable.wav"/>
<!--484 Address Incomplete -->
<map rawcause="485" file="c:\softdial\stg\sounds\numberunobtainable.wav"/>
<!--485 Ambiguous -->
<map rawcause="486" file="c:\softdial\stg\sounds\busytone.wav"/> <!--486 Busy Here -->
<map rawcause="487" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--487 Request Terminated -->
<map rawcause="488" file="c:\softdial\stg\sounds\numberunobtainable.wav"/>
<!--488 Not Acceptable here -->
<map rawcause="500" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--500 Server internal error -->
<map rawcause="501" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--501 Not implemented -->
<map rawcause="502" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--502 Bad Gateway -->
<map rawcause="503" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--503 Service Unavailable -->
<map rawcause="504" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--504 Server Timeout-->
<map rawcause="505" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--505 Version not supported -->
<map rawcause="513" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--513 Message Too Large -->
<map rawcause="600" file="c:\softdial\stg\sounds\busytone.wav"/> <!--600 Busy Everywhere -->
<map rawcause="603" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--603 Decline -->
<map rawcause="604" file="c:\softdial\stg\sounds\numberunobtainable.wav"/>
<!--604 Does not exist anywhere -->
<map rawcause="606" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--606 Not Acceptable-->
<map rawcause="1" file="c:\softdial\stg\sounds\numberunobtainable.wav"/> <!--1 Unallocated -->
<map rawcause="2" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/>
<!--2 No route to transit network -->
<map rawcause="3" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/>
<!--3 No Route to destination -->
<map rawcause="4" file="c:\softdial\stg\sounds\numberunobtainable.wav"/> <!--4 Send SIT-->
<map rawcause="5" file="c:\softdial\stg\sounds\numberunobtainable.wav"/> <!--5 Bad trunk prefix-->
<map rawcause="6" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/>
<!--6 Channel Unacceptable -->
<map rawcause="17" file="c:\softdial\stg\sounds\busytone.wav"/> <!--17 User Busy -->
<map rawcause="18" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--18 No User Responding -->
<map rawcause="19" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--19 No User resp signalled --> <map rawcause="20" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--20 Subscriber absent -->
<map rawcause="21" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--21 Rejected -->
<map rawcause="22" file="c:\softdial\stg\sounds\numberunobtainable.wav"/> <!--22 Number Changed -->
<map rawcause="27" file="c:\softdial\stg\sounds\numberunobtainable.wav"/> <!--27 Destination out of order -->
<map rawcause="28" file="c:\softdial\stg\sounds\numberunobtainable.wav"/> <!--28 Invalid number format -->
<map rawcause="29" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--29 Facility rejected --> <map rawcause="34" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--34 No Channel Available -->
<map rawcause="38" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--38 Network OOO --> <map rawcause="41" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--41 Temporary failure -->
<map rawcause="42" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--42 Congestion -->
<map rawcause="44" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--44 Requested channel not available -->
<map rawcause="47" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--47 Resource unavail unspecified -->
<map rawcause="49" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--49 QOS fail--> <map rawcause="50" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--50 Requested facility not subscribed -->
<map rawcause="52" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--52 Outgoing barred -->
<map rawcause="53" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--53 Outgoing barred CUG -->
<map rawcause="57" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--57 Capability not authorised -->
<map rawcause="58" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--58 Capability not presently available --> <map rawcause="62" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--62 Bad information element -->
<map rawcause="63" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--63 option not available unspecified-->
<map rawcause="65" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--65 capability not implemented -->
<map rawcause="66" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--66 channel type not implemented -->
<map rawcause="69" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--69 facility not implemented--> <map rawcause="70" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--70 limited bearer capability -->
<map rawcause="79" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--79 option not implemented --> <map rawcause="81" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--81 invalid call reference -->
<map rawcause="82" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--82 channel not exist -->
<map rawcause="87" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--87 user not member of CUG -->
<map rawcause="88" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--88 incompatible destination--> <map rawcause="90" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--90 nonexistent CUG -->
<map rawcause="91" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--91 invalid transit network -->
<map rawcause="95" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--95 invalid message -->
<map rawcause="96" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--96 mandatory IE missing -->
<map rawcause="97" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--97, 98, 99, 100, 101 format errors -->
<map rawcause="98" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--97, 98, 99, 100, 101 format errors -->
<map rawcause="99" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--97, 98, 99, 100, 101 format errors --> <map rawcause="100" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--97, 98, 99, 100, 101 format errors -->
<map rawcause="101" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--97, 98, 99, 100, 101 format errors -->
<map rawcause="102" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--102 recovery on timer expiry -->
<map rawcause="103" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--103, 110, 111 more format errors --> <map rawcause="110" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--103, 110, 111 more format errors -->
<map rawcause="111" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--103, 110, 111 more format errors -->
<map rawcause="127" file="c:\softdial\stg\sounds\equipmentengagedtone.wav"/> <!--127 interworking -->
</maps>
</callProgressEmulation>
<!-- ******************************** ISDN (q931Cause) TO SIP MAPPINGS (sipCause) ******************************************* -->
<!-- ISDN Q.931 cause to SIP cause mappings http://www.cisco.com/en/US/docs/ios/12_2t/12_2t11/feature/guide/ftmap.html -->
<!-- Configurable per tenant -->
<translateIsdnCauseToSip>true</translateIsdnCauseToSip>
<isdnToSipMappings>
<isdnToSip>
<q931Cause>Q931_0</q931Cause>
<sipCause>SIP_BadRequest</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 1 -->
<q931Cause>UnassignedUnallocatedNumber</q931Cause>
<sipCause>SIP_NotFound</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Internal_RingNoAnswerTimeout</q931Cause>
<sipCause>SIP_NotFound</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_2</q931Cause>
<sipCause>SIP_NotFound</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_3</q931Cause>
<sipCause>SIP_NotFound</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_4</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_5</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_6</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_7</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_8</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_9</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 16 -->
<q931Cause>NormalCallClearing</q931Cause>
<sipCause>SIP_RequestTerminated</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 17 -->
<q931Cause>UserBusy</q931Cause>
<sipCause>SIP_BusyHere</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 18 -->
<q931Cause>NoUserResponding</q931Cause>
<sipCause>SIP_TemporarilyUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_19</q931Cause>
<sipCause>SIP_TemporarilyUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_20</q931Cause>
<sipCause>SIP_TemporarilyUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 21 -->
<q931Cause>CallRejected</q931Cause>
<sipCause>SIP_Forbidden</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 22 -->
<q931Cause>NumberChanged</q931Cause>
<sipCause>SIP_Gone</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_23</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_24</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_25</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_26</q931Cause>
<sipCause>SIP_NotFound</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_27</q931Cause>
<sipCause>SIP_NotFound</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_28</q931Cause>
<sipCause>SIP_AddressIncomplete</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_29</q931Cause>
<sipCause>SIP_NotImplemented</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_30</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 31 -->
<q931Cause>NormalUnspecified</q931Cause>
<sipCause>SIP_NotFound</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_33</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 34 -->
<q931Cause>NoChannelAvailable</q931Cause>
<sipCause>SIP_ServiceUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_35</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_37</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 38 -->
<q931Cause>NetworkOutOfOrder</q931Cause>
<sipCause>SIP_ServiceUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_39</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_40</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 41 -->
<q931Cause>TemporaryFailure</q931Cause>
<sipCause>SIP_ServiceUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 42 -->
<q931Cause>SwitchingEquipmentCongested</q931Cause>
<sipCause>SIP_ServiceUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_43</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<!-- Q.931 cause code 44 -->
<q931Cause>RequestedChannelNotAvailable</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_46</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_47</q931Cause>
<sipCause>SIP_ServiceUnavailable</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_49</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_50</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_52</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_53</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_54</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_55</q931Cause>
<sipCause>SIP_Forbidden</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_57</q931Cause>
<sipCause>SIP_Forbidden</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_58</q931Cause>
<sipCause>SIP_NotImplemented</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_62</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_63</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_65</q931Cause>
<sipCause>SIP_NotImplemented</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_66</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_69</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_70</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_79</q931Cause>
<sipCause>SIP_NotImplemented</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_81</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_82</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_83</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_84</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_85</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_86</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_87</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_88</q931Cause>
<sipCause>SIP_BadRequest</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_90</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_91</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_95</q931Cause>
<sipCause>SIP_BadRequest</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_96</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_97</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_98</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_99</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_100</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_101</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_102</q931Cause>
<sipCause>SIP_Timeout</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_103</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_110</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_111</q931Cause>
<sipCause>SIP_BadRequest</sipCause>
</isdnToSip>
<isdnToSip>
<q931Cause>Q931_127</q931Cause>
<sipCause>SIP_ServerError</sipCause>
</isdnToSip>
</isdnToSipMappings>
Cause (CA) parameter codes are passed in the Call Failed [CF] message.
<!-- ******************************** ISDN (q931Cause) TO SOFTDIAL CAUSE (CA) MAPPINGS ******************************************* -->
<!-- -->
<!-- ISDN Q.931 idle cause type outcome mappings -->
<outcomeMappings>
<outcome>
<q931Cause>UnassignedUnallocatedNumber</q931Cause>
<softdialCA>20</softdialCA>
</outcome>
<outcome>
<q931Cause>NormalCallClearing</q931Cause>
<softdialCA>2</softdialCA>
</outcome>
<outcome>
<q931Cause>UserBusy</q931Cause>
<softdialCA>1</softdialCA>
</outcome>
<outcome>
<q931Cause>NoUserResponding</q931Cause>
<softdialCA>21</softdialCA>
</outcome>
<outcome>
<q931Cause>CallRejected</q931Cause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<q931Cause>NumberChanged</q931Cause>
<softdialCA>22</softdialCA>
</outcome>
<outcome>
<q931Cause>NormalUnspecified</q931Cause>
<softdialCA>30</softdialCA>
</outcome>
<outcome>
<q931Cause>NoChannelAvailable</q931Cause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<q931Cause>NetworkOutOfOrder</q931Cause>
<softdialCA>21</softdialCA>
</outcome>
<outcome>
<q931Cause>TemporaryFailure</q931Cause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<q931Cause>SwitchingEquipmentCongested</q931Cause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<q931Cause>RequestedChannelNotAvailable</q931Cause>
<softdialCA>20</softdialCA>
</outcome>
An alternate form of outcome element - <usSITAMDRawTone> - is shown below for DSP detected call failures.
In this case, a call detected as an fax machine would result in a Softdial CallGem™Cause (CA) code of 3. If the Softdial CallGem™ cause code had been 0, the call would not have been failed but would have been treated as a live connect or live speaker detected call.
<!-- Call progress tones detection type outcomes -->
<outcome>
<!-- Fax Machine -->
<usSITAMDRawTone>FaxCNG</usSITAMDRawTone>
<softdialCA>3</softdialCA>
</outcome>
<outcome>
<!-- Fax Machine-->
<usSITAMDRawTone>FaxCED</usSITAMDRawTone>
<softdialCA>3</softdialCA>
</outcome>
<outcome>
<!-- No Circuit available, try again later -->
<usSITAMDRawTone>SIT_NC</usSITAMDRawTone>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<!-- Intercept - number changed/disconnected -->
<usSITAMDRawTone>SIT_IC</usSITAMDRawTone>
<softdialCA>22</softdialCA>
</outcome>
<outcome>
<!-- Vacant Code - invalid number? -->
<usSITAMDRawTone>SIT_VC</usSITAMDRawTone>
<softdialCA>25</softdialCA>
</outcome>
<outcome>
<!-- ReOrder - all kinds of internal network failures, can try again later -->
<usSITAMDRawTone>SIT_RO</usSITAMDRawTone>
<softdialCA>6</softdialCA>
</outcome>
<outcome>
<!-- Dead Tone, out of service (out of order) -->
<usSITAMDRawTone>SIT_deadTone</usSITAMDRawTone>
<softdialCA>21</softdialCA>
</outcome>
<outcome>
<!-- Ring Stopped, usually a machine or carrier announcement -->
<usSITAMDRawTone>SIT_RingStopped</usSITAMDRawTone>
<softdialCA>5</softdialCA>
</outcome>
<outcome>
<!-- No Ring -->
<usSITAMDRawTone>SIT_NoRing</usSITAMDRawTone>
<softdialCA>20</softdialCA>
</outcome>
<outcome>
<!-- VM1 -->
<usSITAMDRawTone>VM1</usSITAMDRawTone>
<softdialCA>5</softdialCA>
</outcome>
<outcome>
<!-- VM2 -->
<usSITAMDRawTone>VM2</usSITAMDRawTone>
<softdialCA>5</softdialCA>
</outcome>
<outcome>
<!-- VM3 -->
<usSITAMDRawTone>VM3</usSITAMDRawTone>
<softdialCA>5</softdialCA>
</outcome>
<outcome>
<usSITAMDRawTone>Busy</usSITAMDRawTone>
<softdialCA>1</softdialCA>
</outcome>
<outcome>
<usSITAMDRawTone>CategoryMachine</usSITAMDRawTone>
<softdialCA>5</softdialCA>
</outcome>
<outcome>
<usSITAMDRawTone>CategoryLiveSpeaker</usSITAMDRawTone>
<softdialCA>0</softdialCA>
</outcome>
<outcome>
<usSITAMDRawTone>CategoryUnknown</usSITAMDRawTone>
<softdialCA>0</softdialCA>
</outcome>
<outcome>
<rawCause>400</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>401</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>403</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>404</rawCause>
<softdialCA>20</softdialCA>
</outcome>
<outcome>
<rawCause>405</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>406</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>407</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>408</rawCause>
<softdialCA>20</softdialCA>
</outcome>
<outcome>
<rawCause>410</rawCause>
<softdialCA>22</softdialCA>
</outcome>
<outcome>
<rawCause>413</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>414</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>415</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>416</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>420</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>421</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>423</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>480</rawCause>
<softdialCA>2</softdialCA>
</outcome>
<outcome>
<rawCause>481</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>482</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>483</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>484</rawCause>
<softdialCA>20</softdialCA>
</outcome>
<outcome>
<rawCause>485</rawCause>
<softdialCA>20</softdialCA>
</outcome>
<outcome>
<rawCause>486</rawCause>
<softdialCA>1</softdialCA>
</outcome>
<outcome>
<rawCause>487</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>488</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>500</rawCause>
<softdialCA>21</softdialCA>
</outcome>
<outcome>
<rawCause>501</rawCause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<rawCause>502</rawCause>
<softdialCA>24</softdialCA>
</outcome>
<outcome>
<rawCause>503</rawCause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<rawCause>504</rawCause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<rawCause>600</rawCause>
<softdialCA>1</softdialCA>
</outcome>
<outcome>
<rawCause>603</rawCause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<rawCause>604</rawCause>
<softdialCA>26</softdialCA>
</outcome>
<outcome>
<rawCause>606</rawCause>
<softdialCA>26</softdialCA>
</outcome>
</outcomeMappings>
</configuration>
Changes to the configuration file will not take effect until the STG service has been restarted.
As with all Softdial services, STG connects to Softdial CallGem™ on startup. The IP address of the Softdial CallGem™ server must be specified in the <appSettings> element of the <Host>/Softdial/STG/TelephonyGatewayDirect.exe.config file on installation, or if the location of the Softdial CallGem™ server changes.