The HMPE Server handles the SIP Stack, RTP and all of the underlying call control functions. This article contains detailed information on each setting contained in the HmpElementsServer.exe.config file.
Table of Contents
HMP Elements Server Config File
Mandatory Settings
Optional General Settings
Log Settings and Diagnostics
Remote Registration
Call Progress
Monitoring Call Progress
Speech Recognition
Echo Cancel Settings
DTMF and RFC2833
Fax Settings
Options Settings
Defer Certain Messages to Client Application Settings
Automatic Gain Control
Noise Reduction Control
Native Hairpin Settings
Hmp Elements Server Config File
To open the config file, click the Configure gear on the Voice Elements Dashboard.
Alternatively, the HmpElementsServer.exe.config file can be found in the following default folder location:
Mandatory Settings
These setting must be configured for HMPElements to start correctly.
HmpIp
- This setting defines the IP address that you wish to use for HMPElements. It must be an IP Address that is defined on one of your NIC cards. Depending on your setup, this could be a private IP that is NATTED to a public IP, a public IP address, or for internal operations just a private IP.
<setting name="HmpIp" serializeAs="String"> <value>12.13.14.15</value> </setting>
HmpPort
- This is the port that you want to use for HMPElements. Generally it is port 5060, but you can also use other ports. We often recommend a different port because of the ubiquity of SIP sniffers that search for SIP servers on port 5060.
<setting name="HmpPort" serializeAs="String"> <value>5060</value> </setting>
ExternalIp
- To correct the SIP and SDP messaging for NATTING behind a firewall, please enter your external or public IP for this setting. If you are using a public IP for the HmpIP setting, use the same value here. If you are not planning on egressing your local intranet, put in the same value as your private IP.
<setting name="ExternalIp" serializeAs="String"> <value>6.7.8.9</value> </setting>
RtpMediaIp
- This is the IP address that will transport the RTP streams. This is generally the same IP address as the HmpIp setting.
<setting name="RtpMediaIp" serializeAs="String"> <value>172.18.13.145</value> </setting>
RtpMediaPortBase
- This setting defines the beginning of the range of ports that HMPElements will use for RTP media. For each telephony port that you use, the SIP specification requires two udp service ports on your IP address. Thus for a 10 telephony port system you actually need 20 udp service ports. When determining the port range for adjusting your firewall, add 250 to the final count of udp service ports. For example, the correct calculation for a 50 telephony port system would be: (50*2) + 250. So starting at port 49152, you would need a port range of 49152-49501.
<setting name="RtpMediaPortBase" serializeAs="String"> <value>49152</value> </setting>
AdditionalTranslations
<setting name="AdditionalTranslations" serializeAs="String"> <value /> </setting>
AdditionalLocalTraffic
<setting name="AdditionalLocalTraffic" serializeAs="String"> <value>172.18.13.</value> </setting>
Optional General Settings
PacketCaptureMode
<setting name="PacketCaptureMode" serializeAs="String"> <value>Winsock</value> </setting>
PcapAllocationSize
<setting name="PcapAllocationSize" serializeAs="String"> <value>1048576</value> </setting>
RtpMediaPortCount
- Use this setting to override your licensed port count. This is helpful during testing if you only need, for example, 4 ports for testing but your license has 1000 ports for production. This speeds up the startup time for HMPElements. When set to 0, the system will prepare all the ports that are licensed.
<setting name="RtpMediaPortCount" serializeAs="String"> <value>0</value> </setting>
WebRtcMediaPortCount
<setting name="WebRtcMediaPortCount" serializeAs="String"> <value>0</value> </setting>
CodecOrder
<setting name="CodecOrder" serializeAs="String"> <value>0</value> </setting>
Mapped Drives
- This setting allows you to map network drives for the service account. The format is: DriveLetter|uncpath and for additional drives, separate by a ~
<setting name="MappedDrives" serializeAs="String"> <value /> </setting>
ContentLengthAdjustment
<setting name="ContentLengthAdjustment" serializeAs="String"> <value>0</value> </setting>
TOSBit
<setting name="TOSBit" serializeAs="String"> <value>0</value> </setting>
RejectInbound
<setting name="RejectInbound" serializeAs="String"> <value>False</value> </setting>
ServerBusyResponse
<setting name="ServerBusyResponse" serializeAs="String"> <value>0</value> </setting>
BeepDetectorRecordingPath
<setting name="BeepDetectorRecordingPath" serializeAs="String"> <value /> </setting>
AcceptRefer
<setting name="AcceptRefer" serializeAs="String"> <value>True</value> </setting>
RejectInboundResponseCode
<setting name="RejectInboundResponseCode" serializeAs="String"> <value>0</value> </setting>
RaiseStreamingStateEvents
<setting name="RaiseStreamingStateEvents" serializeAs="String"> <value>False</value> </setting>
Log Settings and Diagnostics
LoggingFileHistoryCount
- This determines the number of log files to create before rolling over.
<setting name="LoggingFileHistoryCount" serializeAs="String"> <value>2</value> </setting>
LoggingFileSizeMB
- This specifies how big each log file should reach before rolling over.
<setting name="LoggingFileSizeMB" serializeAs="String"> <value>10</value> </setting>
DumpRoutesMilliSeconds
<setting name="DumpRoutesMilliSeconds" serializeAs="String"> <value>0</value> </setting>
DumpMixersMilliSeconds
<setting name="DumpMixersMilliSeconds" serializeAs="String"> <value>0</value> </setting>
LogCryptoDebugMessages
<setting name="LogCryptoDebugMessages" serializeAs="String"> <value>False</value> </setting>
LogWebRtcDebugMessages
<setting name="LogWebRtcDebugMessages" serializeAs="String"> <value>False</value> </setting>
LogRtpPacketMessages
<setting name="LogRtpPacketMessages" serializeAs="String"> <value>False</value> </setting>
DoNotLogDigitBuffer
<setting name="DoNotLogDigitBuffer" serializeAs="String"> <value>False</value> </setting>
Remote Registration
Although it is preferred to use IP authentication, if you need to register with a remote endpoint, these settings will allow you to define those registrations. For new installations the Registrations setting is preferred.
Registrations
- When using this setting, the <ToPassword> and <FromPassword> tags should always be left blank. These used to be used for plain text passwords that would not be acceptable for SIP usage as they would be added to the URL directly. IE the old: http://username:password@ipaddress.com. Not cool. So don’t put your password there!
- Your authentication username should be placed in the <AuthUsername> tag and the password should be in the <AuthPassword> tag.
- In most cases the <FromUser> and <ToUser> are the same.
<setting name="Registrations" serializeAs="Xml"> <value> <ArrayOfRegistration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Registration> <ToDisplayName></ToDisplayName> <ToUser>sipuser</ToUser> <ToPassword></ToPassword> <ToHost>2.3.4.5</ToHost> <ToPort>5060</ToPort> <FromDisplayName></FromDisplayName> <FromUser>sipuser</FromUser> <FromPassword></FromPassword> <FromHost>2.3.4.5</FromHost> <FromPort>5060</FromPort> <AuthUsername>myrealusername</AuthUsername> <AuthPassword>mypassword</AuthPassword> <AuthUri>sip:sipuser@2.3.4.5</AuthUri> </Registration> </ArrayOfRegistration> </value> </setting>
RegistrationExpiresRequest
- Use this setting to request a certain expiration interval with the server. The server is under no obligation to honor this request, but generally will.
<setting name="RegistrationExpiresRequest" serializeAs="String"> <value>0</value> </setting>
RegistrationIncludeExpiresRequestOnRenewal
- Use this setting to explicitly include the Expires interval again on each subsequent registration renewal.
<setting name="RegistrationIncludeExpiresRequestOnRenewal" serializeAs="String"> <value>False</value> </setting>
RegistrationResetToTagOnRenewal
- Use this setting to always clear the to-tag on a registration renewal.
<setting name="RegistrationResetToTagOnRenewal" serializeAs="String"> <value>False</value> </setting>
Legacy Registration Settings (Deprecated)
AuthUsername
<setting name="AuthUsername" serializeAs="String"> <value>username</value> </setting>
AuthPassword
<setting name="AuthPassword" serializeAs="String"> <value>password</value> </setting>
AuthUri
<setting name="AuthUri" serializeAs="String"> <value>sip:username@1.2.3.4</value> </setting>
Call Progress
Call Progress Template
AnalyzeCallDefaultTemplate
<setting name="AnalyzeCallDefaultTemplate" serializeAs="String"> <value>US-Default</value> </setting>
Monitoring Call Progress
AnalyzeCallLogLevel
<setting name="AnalyzeCallLogLevel" serializeAs="String"> <value>0</value> </setting>
AnalyzeCallRecordingPath
<setting name="AnalyzeCallRecordingPath" serializeAs="String"> <value /> </setting>
AnalyzeCallMaxSeconds
<setting name="AnalyzeCallMaxSeconds" serializeAs="String"> <value>120</value> </setting>
AnalyzeCallFailAfterConnectSeconds
<setting name="AnalyzeCallFailAfterConnectSeconds" serializeAs="String"> <value>15</value> </setting>
AnalyzeCallNoRingbackTimeout
<setting name="AnalyzeCallNoRingbackTimeout" serializeAs="String"> <value>20000</value> </setting>
AnalyzeCallVoiceActivityThresholdDb
<setting name="AnalyzeCallVoiceActivityThresholdDb" serializeAs="String"> <value>-30</value> </setting>
Speech Recognition
SpeechRecognitionDll
<setting name="SpeechRecognitionDll" serializeAs="String"> <value /> </setting>
SpeechRecognitionType
<setting name="SpeechRecognitionType" serializeAs="String"> <value /> </setting>
SpeechRecognitionNumberOfPorts
<setting name="SpeechRecognitionNumberOfPorts" serializeAs="String"> <value>1</value> </setting>
SpeechRecognitionLicenseType
<setting name="SpeechRecognitionLicenseType" serializeAs="String"> <value>Voxlite</value> </setting>
SpeechEngineIpAddress
<setting name="SpeechEngineIpAddress" serializeAs="String"> <value>127.0.0.1</value> </setting>
Echo Cancel Settings
EchoCancelAlgType
<setting name="EchoCancelAlgType" serializeAs="String"> <value>0</value> </setting>
EchoCancelEchoTail
<setting name="EchoCancelEchoTail" serializeAs="String"> <value>100</value> </setting>
EchoCancelAdapt
<setting name="EchoCancelAdapt" serializeAs="String"> <value>1</value> </setting>
EchoCancelZeroCoeff
<setting name="EchoCancelZeroCoeff" serializeAs="String"> <value>0</value> </setting>
EchoCancelCng
<setting name="EchoCancelCng" serializeAs="String"> <value>0</value> </setting>
EchoCancelNlp
<setting name="EchoCancelNlp" serializeAs="String"> <value>3</value> </setting>
EchoCancelTd
<setting name="EchoCancelTd" serializeAs="String"> <value>0</value> </setting>
EchoCancelAh
<setting name="EchoCancelAh" serializeAs="String"> <value>0</value> </setting>
EchoCancelAp
<setting name="EchoCancelAp" serializeAs="String"> <value>0</value> </setting>
EchoCancelNr
<setting name="EchoCancelNr" serializeAs="String"> <value>0</value> </setting>
EchoCancelNrSmooth
<setting name="EchoCancelNrSmooth" serializeAs="String"> <value>0</value> </setting>
EchoCancelDcFlag
<setting name="EchoCancelDcFlag" serializeAs="String"> <value>0</value> </setting>
EchoCancelEnabled
<setting name="EchoCancelEnabled" serializeAs="String"> <value>True</value> </setting>
DTMF and RFC2833
InbandDtmf
<setting name="InbandDtmf" serializeAs="String"> <value>False</value> </setting>
DtmfDigitLength
<setting name="DtmfDigitLength" serializeAs="String"> <value>50</value> </setting>
DtmfInterDigitTime
<setting name="DtmfInterDigitTime" serializeAs="String"> <value>100</value> </setting>
RFC2833StartBitRequired
<setting name="RFC2833StartBitRequired" serializeAs="String"> <value>True</value> </setting>
OfferRFC2833
<setting name="OfferRFC2833" serializeAs="String"> <value>True</value> </setting>
RFC2833DefaultType
<setting name="RFC2833DefaultType" serializeAs="String"> <value>101</value> </setting>
RFC2833Coercion
<setting name="RFC2833Coercion" serializeAs="String"> <value>False</value> </setting>
SilenceEgressingDTMF
<setting name="SilenceEgressingDTMF" serializeAs="String"> <value>False</value> </setting>
DoNotHairpinRFC2833Digits
<setting name="DoNotHairpinRFC2833Digits" serializeAs="String"> <value>False</value> </setting>
Fax Settings
FaxLogLevel
<setting name="FaxLogLevel" serializeAs="String"> <value>0</value> </setting>
T38TransmitCngToneWhileAwaitingReinvite
<setting name="T38TransmitCngToneWhileAwaitingReinvite" serializeAs="String"> <value>False</value> </setting>
T38FaxMaxDatagram
<setting name="T38FaxMaxDatagram" serializeAs="String"> <value>1400</value> </setting>
T38ReinviteTimerMilliSeconds
<setting name="T38ReinviteTimerMilliSeconds" serializeAs="String"> <value>10000</value> </setting>
T38ReinviteFailTimerMilliSeconds
<setting name="T38ReinviteFailTimerMilliSeconds" serializeAs="String"> <value>15000</value> </setting>
Options Settings
OptionsMaintResponse
<setting name="OptionsMaintResponse" serializeAs="String"> <value>0</value> </setting>
OptionsBusyThreshold
<setting name="OptionsBusyThreshold" serializeAs="String"> <value>0</value> </setting>
OptionsBusyResponse
<setting name="OptionsBusyResponse" serializeAs="String"> <value>0</value> </setting>
Defer Certain Messages to Client Application Settings
SessionProgressControlledByApp
- Use this setting to keep HmpElements from returning an immediate SessionProgress message during call setup until told to do so by the application layer.
<setting name="SessionProgressControlledByApp" serializeAs="String"> <value>False</value> </setting>
RegistrationControlledByApp
- By default, HMPElements will return an OK to all registration requests. If, however, you wish to have your application handle these requests, set this value to true.
<setting name="RegistrationControlledByApp" serializeAs="String"> <value>False</value> </setting>
ReferControlledByApp
- By default HMPElements will will decline a REFER request. If, however, you wish to have your application handle these requests, set this value to true.
<setting name="ReferControlledByApp" serializeAs="String"> <value>False</value> </setting>
NotifyControlledByApp
- By default HMPElements will answer 200 OK to a NOTIFY request. If, however, you wish to have your application handle these requests, set this value to true.
<setting name="NotifyControlledByApp" serializeAs="String"> <value>False</value> </setting>
Automatic Gain Control
AutomaticGainControlTarget
<setting name="AutomaticGainControlTarget" serializeAs="String"> <value>21</value> </setting>
AutomaticGainControlClipLevel
<setting name="AutomaticGainControlClipLevel" serializeAs="String"> <value>0</value> </setting>
AutomaticGainControlMaxGain
<setting name="AutomaticGainControlMaxGain" serializeAs="String"> <value>11.6</value> </setting>
Noise Reduction Control
NoiseReductionLevel
<setting name="NoiseReductionLevel" serializeAs="String"> <value>1</value> </setting>
NoiseReductionSmoothMode
<setting name="NoiseReductionSmoothMode" serializeAs="String"> <value>0</value> </setting>
NoiseReductionEnabled
<setting name="NoiseReductionEnabled" serializeAs="String"> <value>False</value> </setting>
Native Hairpin Settings
NativeHairpinDisabled
<setting name="NativeHairpinDisabled" serializeAs="String"> <value>False</value> </setting>
NativeHairpinSSRCModifier
<setting name="NativeHairpinSSRCModifier" serializeAs="String"> <value>False</value> </setting>
More Questions? Contact Us!
If you would like to schedule a free consultation with a Voice Elements engineer, please send a request to Support.
The Engineer can help you as follows:
- Explain the various deployment options of Voice Elements
- Answer your questions
- Explain how it works
- Help you get started with the skeleton project
- Help you with any problems that you might have encountered during the install
- Give you ideas about how to accomplish your objectives
This consultation can be done using remote meeting software such as GoToMeeting or Join.Me. Let us help you get started with Voice Elements.