Installation and administration¶
Requirements¶
Workstation
DesktopClient is a thick desktop application for Windows built on the .NET and WPF technologies. Therefore, it does not pose any special workstation requirements.
Network settings for ProServer
DesktopClient requires the possibility to connect to ProServer. You can set the location of the ProServer and the port (the default for TCP is 18321) with the PbxParameters
configuration parameter.
Network settings for softphone
If you are going to use the embedded softphone, you must enable SIP communication with the server. See Network communication.
Installation¶
The DesktopClient application itself does not require installation. Copy the application build folder to the target computer, then just run iCC.DesktopClient.exe
.
You must install the Microsoft Edge WebView add-on for the chat elements of the application to function properly. It allows the application to natively open a web interface that provides ReactClient functionality.
Navigate through the link to the add-on website
Choose the appropriate installer according to the operating system architecture
Restart your computer after the installation
Note
It is advisable to keep this add-on up to date due to security threats. On the other hand, it is always advisable to test the functionality with a given Desktop client build on one specific computer before deploying a new version on all computers. After a successful test, then deploy to the remaining ones.
System settings for application integration¶
Attention
When integrating the application, it is necessary to modify the DeletePerso'' script on the installation so that it does not delete the data related to the DesktopClient. The ``Perso
table contains saved application bar definitions and reaction definitions (each agent has its own definitions). The database RefName
for these definitions is ProCaller#RibbonDefinition
and ProCaller#EventHandlingDefinition
.
Steps required to integrate the application:
ProServer settings¶
DesktopClient does not communicate with FrontStage directly, but via ProServer. The station must therefore have network access to ProServer and have DesktopClient set appropriately.
The username and password are not required since the application uses Windows authentication and the current user is sent to ProServer. For workstations connected to a domain, these are usernames in the form domain\name
(e.g. acmecorp\johndoe
).
In the ProServer administration in the
section, create an account necessary for the connection as follows:In the Agents section, name the account in the Name field with the name of the agent or the like.
In the Credentials section, add or edit the entry as follows:
Enter the username in the System Name field as it is sent by Windows authentication from stations (e.g.
acmecorp\johndoe
) (see above).In the Application field, select
iCC.DesktopClient
In the Permissions section, add the necessary roles. Usually
UseChannels
aExtensionCTI
.In the Data Items section, add or modify the entry as follows:
Enter
UserData
in the Key fieldIn the Application field, select
iCC.DesktopClient
In the Data field, enter a string in the style of
<?xml version="1.0" encoding="utf-8"?><UserData><IdentityCC>agent login< /IdentityCC></UserData>
, e.g.<?xml version="1.0" encoding="utf-8"?><UserData><IdentityCC>fs-sql_demo\jelinek</IdentityCC></UserData>
See
System Name
.
Tip
In the Stations section, you can track several recent DesktopClient connections.
Definitions for the database¶
In the Perso
database table, it is necessary to upload the bar definition and the reaction definition for the users who are to use the application. The definitions are saved in the json
format.
Database entries and their RefName
:
Ribbon definition -
ProCaller#RibbonDefinition
Response definition -
ProCaller#EventHandlingDefinition
Local configuration file¶
The configuration parameters for the connection are set for each computer separately. The file name is appsettings.json
; it is located in the application folder. A local settings in the config file has lower priority than workplace settings in the database, if both places contain the same parameter, the database one will be used.
WebRTC¶
For locally usable parameters see WebRtc Section. At least ServerUrl
parameter is mandatory.
SIP¶
The following information needs to be filled in:
Login¶
Agent has to be able to login using the application. You can set this via Agent visual editor.
Workplace¶
Workplaces which are supposed to work with the DC app have to log-in to the ProServer as a softphone. In ReactAdmin, Softphone configuration (JSON) field, set the json
softphone object. The order of the parameters in the object does not matter.
WebRTC¶
To be able to log-in from DC to AS7 it is necessary that PhoneType
parameter is in a format PhoneName_DC
(connection won’t work without the “_DC” stated)
An object example:
{"PhoneType": "AS7anCTI_DC", "Password": "password", "UserName":"user@user.com", "ServerUrl": "https://server.atl.com/cti/ancti/ancti.js", "DeviceName": "sip:555@stat.777", "HoldOnDirectCti": false}
For possible parameters and their meaning see WebRtc Section.
SIP¶
An object example:
{"PhoneType": "SWPSIP", "SipServer": "192.168.1.221", "Password": "xyz", "UserName":"420"}
The object will also include other attributes with the SIP server location, verification, etc. (see Configuration).
LiteralLookup set¶
For the correct rendering of all texts in the application, it is a good idea to always upload an up-to-date set of LiteralLookup texts to the database. This will limit the situation where only the system LiteralText
is displayed in the application, without the corresponding text, for the given language.
Network communication¶
WebRTC¶
Communication via internet, see Network communication
SIP¶
Enable network communication between the station and the PBX specified in Softphone configuration (JSON). It is normally handled by the FrontStage network specialist, see Network communication.
Basis for user statistics¶
If you want to fill statistics for individual users, you need to set the following:
BroadcastDataQueries
- in the administration, set the parameter totrue
(if you set it on an already “live” installation, you must then restart the synchronous service - the parameter is loaded at start-up)Create a database query (Administration, section
) that returns the required columns for statisticsThe
Validity interval
item must be set for the queryThe query is always called after the specified interval; it is evaluated as a whole and the data is distributed to individual agents in their applications
It must contain the
AgentId
control column to allow data binding
You must assign the created database query to a specific agent
In the administration in the
section, fill in theDQ in the bar
parameter
Note
After creating a new database query, check that the indexes are set correctly. This will prevent complications due to increased computing power on the server side.
Default sound device (WebRTC only)¶
Configuration file¶
The settings are defined in the appsettings.json
configuration file, which is located in the application folder.
Important
The configuration file is extensive. Do not edit sections outside this description - they are not meant to be configured by users. Make sure to follow the syntax of the JSON file, such as nesting elements, enclosing attributes in quotes, etc.
Configuration file:
{
"$type": "OnPremiseStrategy",
"DiscoveryHost": "https://localhost:5001/",
"Smtp": {
"ServerName": "127.0.0.1",
"ServerPort": 1025,
"UserName": "atlantis@krch.tech",
"Password": "DqyMlwqoNIWikzC9YwVUEw",
"From": "atlantis@krch.tech",
"SslMode": "None"
},
"DesktopClientConfiguration": {
"RunOnboardingRoutine": true,
"ReactClientOnboardingUrl": "https://localhost:5001/api/onboarding/accept/dc/{onboardingKey}",
"ReactClientFileResourceUrl": null,
"ReactClientTextResourceUrl": null,
"Debug": false,
"DebugIndicators": "App,Detail,Handling",
"Logging": {
"LogLevel": {
"Default": "Trace",
"System": "Information",
"Microsoft": "Error",
"iCC.DesktopClient": "Trace"
},
"File": {
"Path": "%LOCALAPPDATA%\\Atlantis\\DC_.log",
"Append": true,
"MinLevel": "Trace",
"FileSizeLimitBytes": 200000000,
"MaxRollingFiles": 10
}
},
"PbxParameters": "frontsrv,-18321,20000",
"InstanceName": "#MACHINENAME#",
"DCWindowMode": "docked",
"ScalingOptions": "0.6|0.75|0.8|1|1.25|1.5",
"StartMinimized": false,
"WebRtc": null,
"Swp": {
"SipLogLevel": 0,
"UseNetworkGuard": true,
"KeepAliveSipPacketInterval": 50,
"KeepAliveRtpPacketInterval": 0,
"PeriodicReconnect": false,
"PeriodicReconnectInterval": 3600,
"ConnectionChecker": false,
"ConnectionCheckerInterval": 55,
"PortConfiguration": {
"MaximumRtcpAudioPort": 10088,
"MinimumRtcpAudioPort": 10000,
"MinimumRtpAudioPort": 12200,
"MaximumRtpAudioPort": 12288
},
"RegistrationExpiration": 3600,
"DisplayName": "",
"AuthName": "",
"SipServerPort": 5060,
"LocalSipPort": null,
"SipPhone_Agent": "Aastra 6867i/5.1.0.2040",
"JoinConference": false,
"NeedRegister": true,
"EnableReliableProvisional": false,
"WindowScale": 1,
"ToneEmulation": {
"BusyHere486": false,
"BusyHere486Timeout": "00:00:08"
},
"Other": {
"AEC": true,
"VAD": false,
"CNG": false,
"AGC": false,
"ANS": false,
"VideoNackStatus": true,
"DoNotDisturb": false
},
"AudioCodecs": {
"AUDIOCODEC_PCMU": true,
"AUDIOCODEC_PCMA": true,
"AUDIOCODEC_G729": true,
"AUDIOCODEC_ILBC": false,
"AUDIOCODEC_GSM": false,
"AUDIOCODEC_AMR": false,
"AUDIOCODEC_G722": false,
"AUDIOCODEC_SPEEX": false,
"AUDIOCODEC_AMRWB": false,
"AUDIOCODEC_SPEEXWB": false,
"AUDIOCODEC_G7221": false,
"AUDIOCODEC_OPUS": false
},
"UseMxoneStrategy": false,
"Workaround": {
"Use571MxoneExternalCallRefresh": false,
"UseA5000Workarounds": false,
"A5000XAastraId": "type\u003d\"23\" model\u003d\"15\" extension\u003d\"000\" version\u003d\"4.2.0.2049\" mac\u003d\"{seededMac}\" GlobalInd\u003d\"15\" SpecificInd\u003d\"\" TxfStatus\u003d\"FFFF\"",
"ManualAastraMacAddress": "",
"SeedAstraMacFromExtension": true,
"UseFakeRegistrationToCheckPassword": false,
"RegistrationSecretEnabled": true,
"RegistrationSecret": "987654321",
"RegistrationSecretWaitTimeMilliseconds": 6000
},
"LogDirectory": "%localappdata%\\Atlantis",
"TransportType": 0,
"Recording": {},
},
"PathCompanyName": "Atlantis"
}
}
DesktopClient Configuration¶
Parameters for configuring application features and connections. In terms of the configuration file, they can be divided into “standalone” and “nested,” where the latter are relevant only when used in a specific section.
Note
The application works either with Swp
(SIP softphone) or WebRTC
(WebRTC softphone). Therefore, depending on the type of technology used, one section will be inactive (set to null
), and the other will be expanded and filled with parameters.
Standalone:
Parameter |
Description |
---|---|
PbxParameters |
ProServer connection string. values divided by commas, blank spaces among the values, the order is:
|
InstanceName |
|
DebugIndicators |
Logging level and it’s settings. Possible values: |
StartMinimized |
Settings, which determines the application rendering mode after start. Possible values:
|
ScalingOptions |
The value list, which will be available as the scaling options for DesktopClient’s ribbon. This can be increased/decreased in proportion to the operating system display settings. Default list: Inserted numbers will be presented percentually to the user, which means 0.6 = 60% |
DCWindowMode |
Application bar anchor.
|
RunOnboardingRoutine |
Controls “onboarding” in the application. If If |
OnboardingSuccess |
Parameter filled automatically after successful completion of “onboarding”. Values |
ReactClientOnboardingUrl |
Address of the server where the request for login credentials is sent. E.g. |
ReactClientFileResourceUrl |
Link where the logo displayed on the splashscreen is downloaded. E.g. |
ReactClientTextResourceUrl |
Link from where the text displayed on the splashscreen is downloaded. E.g. |
ProductVersion |
Backup value, if the build number is not readable. If not needed, whole tag can be deleted. |
StunServerPort |
STUN server port. Can be turned off by omitting the value. |
PlaybackDeviceVolume |
Default volume level for playback device. The higher priority has the user settings tied with the Windows profile. Valid range is 0 - 255. |
RecordingDeviceVolume |
Default volume level for recording device. The higher priority has the user settings tied with the Windows profile. Valid range is 0 - 255. |
UseDirectMakeCallAndAnswer |
The setting solves the situation when two active terminals are connected to one workplace, e.g. WebRTC implemented in DesktopClient (hereinafter referred to as DC) and SIP using a mobile client. In this case, terminal conflicts can occur, and the ringing/call sound can be heard on the wrong terminal.
Important The solution is suitable only where DC is deployed (phone operation via ReactClient or TeamsClient will not work correctly). |
UpgradeRequired_User |
Sign which determines, whether it’s required to perform the configuration upgrade. |
Wnd_Softphone_Topmost |
Sign, whether DesktopClient should be always above Windows apps in the operating system. |
Wnd_Softphone_ShowInTaskbar |
Sign, whether the DesktopCLient app should have the tray icon visible. If False, the icon will be there anyway, but only in the hidden icons area. |
ApplicationScale |
Scale value for the initial run. If the user then changes the scale, the new value will be saved to |
LastUsedCultureCode |
Last used localization. If not set the application will set it automatically based on your language. The parameter can be used to force specific localization, for example - |
Swp Section¶
Section dedicated to Built-in softphone and its settings.
Parameter |
Description |
---|---|
UserName0 |
SIP server login. |
Password0 |
SIP server login password. |
SipServer |
SIP server DNS/IP address. |
SipPhone_Agent |
Recomended value for:
|
RegistrationExpiration |
Registration renewal interval [sec]. Maximum value 3600. Will be inserted into SIP REGISTER message. |
KeepAliveSipPacketInterval |
SIP keepalive packet sending interval in seconds. This parameter will help in troubleshooting problems with closing connections when inactive.
|
KeepAliveRtpPacketInterval |
RTP keepalive packet sending interval [sec]. It can help troubleshooting the RTP stream closing problem occuring during inactivity.
|
PeriodicReconnect |
Whether to register again, after the interval has passed. Ignored, if already registered. Use this parameter only when experiencing network issues and softphone is beign disconnected periodically.
|
PeriodicReconnectInterval |
Interval, after the device should be registered again [sec], if the |
ConnectionChecker |
Whether to reconnect, after the interval has passed. Softphone will check the connection during a network error (internet or LAN connection). This param can cause trouble when using the A5000 PBX.
|
ConnectionCheckerInterval |
Interval [sec], after which reconnect,if the |
EnableReliableProvisional |
Whether to use PRACK.
|
WindowScale |
Softphone window scale option. For example 0.8 pro low resolution screens, 1.3 for high resolution screens (in case UI is too small). Recommended value is 1. Tip If you set the value to 0, softphone will be completely hidden. Notification window, during the incomming call will remain vissible. |
UseMxoneStrategy |
Povinný parameter při použítí MX ONE. Při potížích se zvukem na některých verzích MX ONE, povolte. Jinak ponechte vypnuté, aby se negenerovala zbytečná (nikoli chybná) SIP komunikace. |
SipServerPort |
SIP port for communication with the server.
|
AuthName |
Uživatelské jméno pro autorizaci (obvykle stejné jako uživatelské jméno). Některé ústředny něvyžadují nastavení této hodnoty. |
DisplayName |
User nickname, can be any value. Optional. |
SipLogLevel |
Log level.
If the parameter |
LogDirectory |
Složka pro logovací soubor. Pokud není nastaveno, dojde k vypnutí logování. Cesta by měla existovat a DesktopClient by k ní měl mít přístup. V cestě můžete používat proměnné prostředí, např. |
TransportType |
Transfer type for SIP communication. Valid values:
At the same time, it is needed that port 18321 is enabled, for the server communiction purposes. |
Softphone_PlaybackDeviceIndex |
Playback device index |
Softphone_RecordingDeviceIndex |
Recording device index |
Softphone_RecordingDeviceVolume |
Recording device volume |
RingtoneDeviceId |
Ringtone device ID. Can be also set within the DC app - |
Port Configuration¶
Port range for RTP and RTC protocol communication. The default is 7002 - 7810 (range 10402-10800 reserved for future use).
Parameter |
Description |
---|---|
MaximumRtcpAudioPort |
Upper limit of the port range for RTC. |
MinimumRtcpAudioPort |
Lower limit of the port range for RTC. |
MinimumRtpAudioPort |
Lower limit of the port range for RTP. |
MaximumRtpAudioPort |
Upper limit of the port range for RTP. |
AudioCodecs¶
Settings for supported voice communication codecs. Activate a codec by setting the parameter to true
, and deactivate it by setting it to false
.
Parameter |
Description |
---|---|
AUDIOCODEC_PCMU |
PCMU/G711-law 8KHZ 64kbit/s |
AUDIOCODEC_PCMA |
PCMA/G711 A-law 8KHZ 64kbit/s |
AUDIOCODEC_G729 |
G729 8KHZ 8kbit/s |
AUDIOCODEC_ILBC |
iLBC 8KHZ 30ms-13kbit/s 20 ms-15kbit/s |
AUDIOCODEC_GSM |
GSM 8KHZ 13kbit/s |
AUDIOCODEC_AMR |
Adaptive Multi-Rate (AMR) 8KHZ (4.75,5.15,5.90,6.70,7.40,7.95,10.20,12.20)kbit/s |
AUDIOCODEC_G722 |
G722 16KHZ 64kbit/s |
AUDIOCODEC_SPEEX |
SPEEX 8KHZ (2-24)kbit/s |
AUDIOCODEC_AMRWB |
Adaptive Multi-Rate Wideband (AMR-WB)16KHZ (6.60,8.85,12.65,14.25,15.85,18.25,19.85,23.05,23.85)kbit/s |
AUDIOCODEC_SPEEXWB |
SPEEX 16KHZ (4-42)kbit/s |
AUDIOCODEC_G7221 |
G722.1 16KHZ (16,24,32)kbit/s |
AUDIOCODEC_OPUS |
OPUS 48KHZ 32kbit/s |
ToneEmulation¶
Parameter |
Description |
---|---|
BusyHere486 |
If the customer is trying to reach an occupied phone, he will hear a “busy tone”. Values |
BusyHere486Timeout |
The duration for which the “busy tone” will play. The expected format is HH:MM:SS. |
Workaround¶
Parameter |
Description |
---|---|
UseA5000Workarounds |
Used for troubleshooting when A5000 PBX is used. If you experience “autoanswer/Call.Hold / Call.Unhold” or sound problems, enable this. |
Use571MxoneExternalCallRefresh |
Obsolete, replaced by
|
ManualAastraMacAddress |
If defined, this MAC address will be used for softphone. Otherwise, local network adapter address (NIC) is used. |
A5000AastraId |
“X-Aastra-Id” header within SIP communiction. If any is set, it will be used instead of the generated one. |
UseFakeRegistrationToCheckPassword |
Obsolete. Only for testing purposes, otherwise not recomended to use. |
RegistrationSecretEnabled |
If allowed, A5000 PBX will send the OK status even when the credentials are not valid. As a part of this settings, configuration items are not sent. This functionality controls the hidden string in configuration item (key defined in If not allowed, softphone can generate “false-positive” registration result, even if the action failed. |
RegistrationSecret |
Key for |
SeedAastraMacFromExtension |
|
RegistrationSecretWaitTimeMilliseconds |
When sending the credentials, application waits for here defined interval, if it receives
|
UseVirtualizedAudioDevices |
For testing purpose on the devices, where physical playback device is not possible (softphone expects any playback device, if not found, it will return a warning message). If on, the function will force the usage of a virtual playback device. After finishing the test, turn this functionality off! |
Other¶
Parameter |
Description |
---|---|
AEC |
Zapnout/Vypnout funkci “Acoustic Echo Cancellation” (Potlačení ozvěny) |
VAD |
Enable/Disable “Voice Activity Detection” function. |
CNG |
Enable/Disable “Comfort Noise Generator” function. |
AGC |
Enable/Disable “Automatic Gain Control” function. |
ANS |
Enable/Disable “Audio Noise Suppression” function. |
VideoNackStatus |
Enable/Disable “NACK” function, which hjelps with video quality. Currently not usable. |
DoNotDistrurb |
Enable/Disable “Do not disturb” mode. |
WebRtc Section¶
Configuration for the WebRTC softphone.
Parameter |
Description |
---|---|
PhoneType |
When AS7 used, the values is always “AS7anCTIupd_DC” |
UserName |
AS7 user ID with |
Password |
User password, see above |
ServerUrl |
Direct URL address to the |
DeviceName |
Terminal and workplace identification. Syntax - |
HoldOnDirectCti |
Indication, whether the call HOLD should be performed locally instead of by CSTA operation (temporary solution till release 5.9) |
RecordingDeviceId |
Windows registered device ID for recording the sound. Optional parameter. If empty, the application will set it automatically after the user selects one. |
PlaybackDeviceId |
Windows registered device ID for playing the sound. Optional parameter. If empty, the application will set it automatically after the user selects one. |
PlaybackDeviceVolume |
Volume level of |
RecordingDeviceVolume |
Volume level of |
OnPremiseStrategy Section¶
This setting affects the sending of onboarding emails for the DesktopClient application as part of Onboarding. If the parameter is NULL
(i.e., not filled), a cloud installation of Frontstage is assumed, where Deployment Server is used for distribution. For a local system installation, a filled json
structure defining the connection to the SMTP server and the system service is expected.
Note
You can define the settings either in the application’s configuration file or using the configuration parameter OnboardingStrategyJson
.
Parameter |
Description |
---|---|
DiscoveryHost |
Address of the ReactClient service/website including the port it runs on. For example, |
Smtp¶
SMTP server to be used for email distribution.
Parameter |
Description |
---|---|
ServerName |
Address of the SMTP server that will process recruitment emails in the case of an “on-premise” installation. The “ServiceAsync” system service must have secure access to SMTP. Otherwise, sending will not work. |
ServerPort |
SMTP protocol port used by the specified server. |
UserName |
Login username for the account registered on SMTP. |
Password |
Password for the account. |
From |
Sender of the recruitment email as displayed to the recipient. |
SslMode |
See Rebex documentation. |
Logging section¶
DesktopClient can log its activity, which is useful for troubleshooting.
Note
The built-in softphone has own logging.
Important
Enabled logging generates files not bigger than tens of megabytes a day, which consumes some of the computer storage over time. If the computer has a limited storage capacity, it’s necessary to ensure they are periodically deleted. Enabled logging has minimal performance impact on the computer.
Headset call control¶
You can control calls distributed through DesktopClient using the supported headset, where you can use the default button to interact with calls.
Supported:
Jabra Engage 65
Jabra Engage 75
There is no need to install or configure anything, the headset should work from factory settings.
Supported on Windows 10 and Windows 11.
Function of the button in different situations:
Outbound call
When the call is dialed, the headset switches to the “I’m on a call” state (at that point, the “hang up” operation already works).
After the customer receives the call, the call can be hung up over the headset. The “mute” function can be used.
Inbound call
When a call comes in, the headset starts ringing and switches to the “I’m on a call” state.
You cannot refuse a call; you can only accept it now. After accepting the call, you can press to hang up. “Mute” functionality can be used at this moment.
Troubleshooting¶
The DesktopClient application must be running, and the headset must be connected to your computer for the functionality to work correctly.
If the control still doesn’t work, you can try:
Reset the headset to factory settings. You can find how to do it on each manufacturer’s official website.
For Jabra, you can download the “Jabra Direct” app to check your current settings. The following features must be enabled: