Introduction
The purpose of this document is to guide you through the installation
and the configuration process of Nixxis Contact Suite V2.x Application Server.
1.
Prerequisites
General prerequisites:
The latest
installation files of the V2.x:
Note: you need an account for accessing this web site. If you do not
have one, ask it to support@nixxis.com
Note: you need an account for accessing this web site. If you do not
have one, ask it to support@nixxis.com
Asterisk:
A running SQL Server
with the reporting services:
A running Internet Information
Services (IIS):
- Enable
IIS on application server by adding the “Web Server” role, automatically adding
needed features and manually adding ASP.Net 4.6 feature.
- Download
and install Web Platform Installer (https://www.microsoft.com/web/downloads/platform.aspx)
- Using
IIS Manager select the web site and run platform installer to search and select
“Web deploy 3.6 for Hosting Servers” and install it.
- Restart
the server
- Check
that a new context menu entry “Deploy” is available on web site level in IIS
Manager, if not try to change Web deploy settings in Control Panel/Program and
features to add all options
- Open
context menu on the web site, and choose Deploy/Import application
- Select
custom integration zip file (if applicable) and import it in the “nixxis”
application.
- If
present, read and follow “Installation.txt”.
Microsoft .NET
Framework 4.6 (Full) on the Application Server, including installed Microsoft
.NET Framework 2.0 which is required for the tools Nixxis File Monitor & DeployReports.exe
2.
Best practices
When downloading the installation files, always try to structure the
folders this way:
- Create
a folder “Nixxis”
- Create
a folder “NixxisMaintenance” (prefer
the root of a disk drive for a better visibility).
- Create
the subfolders “Install”, “BackUp” and “Update”
- Each
time you download installation files, create a subfolder inside the “Install”
folder with the international date format “YYYYMMDD”.
- Same remark when you are doing backups or updates.
3.
Installation procedure
3.1. Extract the installation files
Unblock the zip file and extract the files from “InstallV2.x.*.zip” in the Install folder created above.
After that
copy the same file, usually, on DRIVE:\Nixxis\
3.2. Install the service
Execute
CrAppServer.exe to install the
application server, some parameters can be specified with this executable (-install, -console, …), for now, use -install
cd
DRIVE:\Nixxis\CrAppServer
CrAppServer.exe
-install
Note: this action will deploy performance counters
and create the “ContactRoute Application
Server” service. This service required the administration rights.
3.3. Creating User for the service (Optional)
Create a new local user NixxisAdmin with password Nixxis00 and these properties
In the properties of the “ContactRoute Application Server” service, change the logon
information
3.4. Set Permissions for Logs (if a custom user has been created for the service)
Go to the
security tab of the folder DRIVE:\Nixxis\Logs
Add in the
Everyone user role and give it full control.
3.5. Configuration files
Copy the
content of the folder DRIVE:\Nixxis\SampleConfigFiles
in DRIVE:\Nixxis\CrAppServer.
Edit the
necessary configuration files. Essentially, the editing has to replace the
« 192.168.1.1 » example address with the one used by the server on
which you install Nixxis (we will call it « [APPSERVER_IP] » from now
on).
Note: there is some .xsd
files in nixxis\CrAppServer directory. These files describe the different keys
available in the config files.
3.5.1. CrAppServer.exe.config
This file contains the different add-ons used by NCS and some others configuration.
Just the key FileMonitoringPath” can be changed here.
<add key="FileMonitoringPath" value="..\Logs"/>
File path of the appserver Logs (and reporting logs if the Microsoft reporting service is installed on the same server).
3.5.2. Channels.config
This file contains
the IP(s) that will be bind to the HTTP Server and the SIP Server.
Edit the “address” value with a valid IPV4
address (DNS is not supported here).
Note: Nixxis is multi-channels
and the key has to be unique.
<channel key="http" address="192.168.1.1" connection="tcp" port="8088" timeout="120" type="ContactRoute.ApplicationServer.ClientChannel, CRClientChannels">
<protocol key="HTTP/1.1" domainType="http" type="HttpRequest" />
</channel>
<channel key="http2" address="192.168.1.2" connection="tcp" port="8088" timeout="120" type="ContactRoute.ApplicationServer.ClientChannel, CRClientChannels">
<protocol key="HTTP/1.1" domainType="http" type="HttpRequest" />
</channel>
<channel key="sipserver" address="192.168.1.1" port="5060" connection="udp" timeout="4000" type="ContactRoute.ApplicationServer.ClientChannel, CRClientChannels" receivequeued="true" receivebuffer="100000" sendbuffer="10000" > <protocol key="SIP/2.0" domainType="sip" requestType="SipRequest" responseType="SipResponse"/>
</channel>
3.5.3. Http.config
This file is the brain of NCS.
Domain: contains the instance name, the name of some folders
(cf: SSH section) and it’s a
bind with the domain name in the sip.config file (cf: SIP Section) Host: IP
interfaces or DNS entry to be able to access the server with the NCS client or
other application using HTTP protocol. HTTP server will only accept the host(s) inside this key. Example:
<domain id="default" domainType="http" host="192.168.1.1:8088; myDns:8088"
Each host is separated by a semi-colon.
Link between the Application
server and the SQL Server (it can
be the same machine)
connectionString="Integrated Security=SSPI;Persist Security
Info=False;Data Source=localhost;Initial Catalog={1}"
or
connectionString="user ID=sa;password=[PASSWORD];Persist
Security Info=False;Data Source=localhost;Initial Catalog={0}_{1}"
or
connectionString="user ID=SuperAdmin;password=[PASSWORD];Persist
Security Info=False;Data Source=localhost;Initial Catalog={0}_{1}"
and
extendedConnectionString="Integrated
Security=No;User ID= sa;password=[PASSWORD];
securityadmin and serveradmin)
C) Credentials
and admin application This section contains some key to configure the Admin part.
Create an SQL User to be used in used as
NixxisAdminRole in the “admin” credentials below
On the server where the Microsoft SQL Server Reporting Services are installed, create a local Windows account “Reporting” with the password “Rep0rting”, with this Properties:
i)
Reporting
The credentials of the user “Reporting” (must be created on the
Reporting machine
before save and run the service cf: reporting) must be filled.
If the Application
machine isn’t the Reporting machine
the name of this one need to be defined before the “\”.
Below, fill in the key “ReportServerUrl” with the IP
/ Server name of the Reporting machine.
<credentials>
<add
key="admin" credential="DefaultAdmin:password" roles="NixxisAdminRole"/>
<add credential="\Reporting:Rep0rting" roles="NixxisReportingRole"/>
</credentials>
…
ii) SSH
As from V2.3,
SSH is used to synchronized all the sound files between Application server and Media
Server
<add key="soundsSync" value="/home/soundsv2/{1}/"/>
Path on the Media server to the sounds files: {1} = domain
name
<add key="mohSync" value="/srv/www/lighttpd/MohReload"/>
Path for the MoH synchronization, the file MohReload must be executable
Note: Note the credentials are set under resources in the
administration
iii) Maintenance
A built-in maintenance plan can also be
configured in this section. The ContactRoute Application Server is able to
apply basic database maintenance. A stored procedure (MaintainDatabases) is automatically created in Admin database and will be called at regular interval if feature is
activated. When executed, the procedure does the following for all the DB:
- Backing up
all databases (except the statistics).
- Rebuilding
or reorganizing every index needing it.
- Updating
statistics.
- Shrinking
big empty log files.
Here are the details
<add key="maintenanceTime" value="2350" />
<add key="maintenanceDaysOfWeek" value ="0,1,2,3,4,5" />
<add key="maintenanceProcedureName" value="MaintainDatabases" />
<add key="maintenanceBackupPath" value="NixxisSQL{0}.bak" />
<add key="maintenanceBackupsToKeep" value="5"/>
The minimal setting to
activate the feature is the key “maintenanceTime”
specifying the time(s) of maintenance.
Here is the complete
list of keys available:
-
maintenanceTime (default to null, indicating no backup will be
taken): comma separated list of time of day when maintenance is executed. Time
is specified using “HHmm” format.
For example, to start maintenance at 1:00 in the night, use <add key="maintenanceTime" value="0100"
/>.
-
maintenanceDaysOfWeek (default to "0,1,2,3,4,5,6" meaning
all week days: 0 = Sunday): comma separated list of days of week when
maintenance must be execute.
-
maintenanceDaysOfMonth (default
to "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24
,25,26,27,28,29,30,31", meaning every day of the month): comma separated
list of days of month when the maintenance must be executed.
-
maintenanceProcedureName (default to “MaintainDatabases”): specify the
name of the stored procedure to use.
-
maintenanceBackupPath (default to “NixxisSQL{0}.bak”, indicating to
use default sql backup path): path where the database backup will be stored.
This can be a complete path or a simple file name to specify that the default
sql backup path must be used.
-
maintenanceDeleteInactiveData (default to -1,
indicating no deletion is made): if positive, indicate that inactive objects
and related data must be suppressed if inactivation is in the past for the number
of specified days. This is reserved for future use and has no effect yet.
-
maintenanceBackupsToKeep (default to 1): indicates how many files will
be used to make backups. This is used in conjunction with key “maintenanceBackupPath”.
When executed, all SQL
actions related to the maintenance are stored in log files.
Note: the AppServer has to be restarted to take into account the
changes.
This section contains
some key to configure the Agent part.
-
allowTeamSelection: true
or false. When true, give the option
to the agent to select the team he wants to be ready for.
-
autoRedial: true or false. When true, the agent can redial a number with manual call.
-
ManualCallList: specific
manual call number can be “prefilled”
in this key (separated by coma)
-
concurrentVoice: the value is a positive number.
o 0 means that the agent cannot take voice scripts.
o 1 means there will be only 1 voice script at the
same time on the agent screen.
o 2 or more means that the agent may have 2 or more
voice scripts at the same time.
-
concurrentVoiceActive: the value is a positive number.
o 0 means that the button ready voice will be
disabled.
o 1 means there will be only 1 connected voice
script at the same time on the agent screen.
There is one key for each media (concurrentMail, concurrentMailActive, concurrentChat, concurrentChatActive)
-
client_AllowWaitingForVoice:
true
or false. When false, the agent cannot be select the “sub-button” under the
global Ready button (but he can
always click on the global Ready
button.
There is one key for each media (client_AllowWaitingForMail, client_AllowWaitingForChat)
-
popupOnConnection: True
or false. When true, the pop up on
the agent interface will be displayed only when the agent phone is connected.
-
client_AllowAllEditionScript : True
or false. When true, the agent can
right click on the interface and do selections and copy paste actions.
In this section, FTP connection strings for the recordings can be
defined. With this mode (relay) the
AppServer will handle the FTP connection and transfer the data through the HTTP
channel.
You can have one entry per FTP server (separated
by a semi colon):
Note: the
section “Configuration tool for the
recording tool” explain how to configure the recording tools for the relay
mode.
Also note that the “/” at the end of the string
is mandatory.
Platform API must be enabled and configured.
This section contains some keys to configure the API.
-
Deploy API dependencies:
o
Extract the dependencies DLLs
in CrAppserver folder
API Dependencies: Link to download here
o
Extract API Test tool to
Nixxis\Tools folder
API Test: Link to download here
o
In http header
"host" in the domain, both local & public IPs need to be defined
without the ports
o
For example,
(host="202.0.146.246:8088;10.24.41.11:8088;202.0.146.246;10.24.41.11")
o
"data" needs to be
added to the "data" application' "serviceId"
Note : No space after the comma. The value should be like this "reporting,data"
o
API key section needs to
be active and configured as follows:
<application id="api" name="Api"
type="ApiProcessor" debug="2" sessionLess="true"
preload="true">
<add key="directDataKey" value="MyKeyHere" />
<add key="ServerEndpoint" value="http://*:9090/"
/>
<add key="workflowsPath"
value="C:\Nixxis\CrAppServer\Workflows\" />
</application>
-
Modify CrAppServer.exe.config
o Add <addon
name="ApiAddon" type="Nixxis.Api.ApiAddOn, ApiProcessor"
settings="ApiProcessor.dll.config"/> in the addons section.
o
Add the missing dependentAssembly in the runtime
section
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity
name="UscNetTools" publicKeyToken="C44E421C9B9BBA4B" culture="neutral"/>
<bindingRedirect
oldVersion="0.0.0.0-5.1.7033.1"
newVersion="5.1.7033.2"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"
culture="neutral" />
<bindingRedirect
oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"
culture="neutral" />
<bindingRedirect
oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="System.Web.Cors" publicKeyToken="31bf3856ad364e35"
culture="neutral" />
<bindingRedirect
oldVersion="0.0.0.0-5.2.7.0" newVersion="5.2.7.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
-
After modifying http.config and CrAppServer.exe.config
restart CrAppServer service
-
Test if API
is working
o
In the browser go to http://[appserver_ip]:9090/
o
You should see "Nixxis Platform Server"
o
Run API test
o
C:\Nixxis\Tools\apitest.exe
http://[appserver_ip]:9090/directdata
o
You should see a list of campaigns.
3.5.4. Sip.config
<domain key="default": the
domain name needs to be exactly
the same than the domain name in the http.config file
host="192.168.1.1; sip.myDns": contains the IP/DNS interfaces (separated by a
semi-colon). Sip server
only authorized the host(s) inside this key.
agentConnectionTimeout="25000": general
ring time of the agent in milliseconds, after this time the call is
disconnected.
mainConnectionTimeout="25000": general ring time of
the callee, after that the call is disconnected
allowDirectCalls="false": if this
key is true, the agents are able to make manual call from
the Hardphone/softphone, if the key is, they
can only do manual call through the Nixxis agent interface.
Busy="^486$"
Congestion="^503$"
Disturbed="^404$|^484$"
AnsweringMachine="^987$"
NoAnswer="^487$|^502$|^480$|^403$|^603$"
Exhaustive list of the category but if needed others sip error code can be added (separated
by “|”)
recordingFolderName="default": name of the recording folder name
<channel key="sipserver"/>: default caller id of the Nixxis Application Server. By default, the
caller id for any outbound call from the Nixxis AppServer is “sipserver”. It
can be changed here or in the Global settings (General tab) in NCS (better with NCS).
If
the modification is done in the sip.config
file it’s also mandatory to modify the key in the channels.config file.
Note: The Application Service needs to be restarted after this
modification.
4. Configuration tool for the recording tool
The
recording tool needs to be configured for being able to list all the statistical
data and to be able to retrieve all wav/mp3 files.
DRIVE:\Nixxis\CrAppServer\Provisioning\Settings\ and start the software “Crconfigurator.exe”.
In this
tool, CrReporting can be selected.
4.1. Service tab
In this
tab, the Data service and the Relay service need to be changed with
the AppServer URL or with the DNS, followed by 8088
4.2. Transfer tab
The relay
mode handled the transfer of the wav/mp3 file through the Nixxis HTTP Server,
is only supporting the FTP connection type.
If the
default settings are chosen, the information configured in the relay section of the http.config
file will be used.
5. Firewall
Add
an inbound rule in the Windows Firewall that allows the program
“%SystemDrive%\Nixxis\CrAppServer\CRAppServer.exe” for any ports, any protocols
(both TCP and UPD).
A
white list can, of course, be added in the scope of this rule (which is
strongly recommended if you are exposed to the internet).
Do
not forget to add the Nixxis Support IP in this white list. The IP are
available in the documentation “ProvidingRemoteAccess”
The Firewall
must also be opened for IIS (port 80).
6. Nixxis Reports
6.1. Copy the reporting functions
Copy the
content of the folder ToCopyReportingServer
to MicrosoftReportingServer\DRIVE\Program
Files\Microsoft SQL Server\MSRS.?\Reporting
Services\ReportServer\bin and accept to merge the folder.
6.2. Deploy the Nixxis default reports
Go to the folder Deploy and run “DeployReports.exe”
The
username must be the built-in
administrator of the machine which is running the Microsoft Reporting Server.
The
language is not useful anymore because the language of the reports changes
depending of the NCS account language you used.
Use the
same info as used in the connection strings for the config files (if this information is sure) In the next
screen click on the Finish button to start the report’s deployment.
6.3. Configure the DataSource
Start Internet Explorer and connect to the web
interface of the reports.
Use the
administrator account to login
Click on the Data Sources folder and then click on the ReportingDS item :
In the ReportingDS properties, adapt the connection string, the credential information using the administrator account:
Test the connection and then click on Apply.
6.4. Add the Reporting User
In the welcome page, click on the “Folder parameters” button:
Then click on “new role attribution” and add the Reporting user with the “Browser role” and click OK:
Now you can login with the Reporting user and consult the Nixxis default reports.
7. Installing and configuring the Nixxis File Monitor tool
With Nixxis comes the MoveFiles tool. This tool allows you to move of delete files according to their age, size or available space.
This tool has to be configured at least for the CrappServer log files else they can use the entire disk space if you let them growing…
7.1. Installing the MoveFile as a Windows service
Start a command prompt and go the location where the installutil.exe of the .Net Framework is located:
cd DRIVE:\Windows\Microsoft.NET\Framework\v2.0.50727
Then type : installutil.exe DRIVE:\Nixxis\Tools\MoveFiles\MoveFiles.exe
Press ENTER.
The service will be installed.
7.2. Configuring the MoveFile for deleting the log files of Nixxis
Go to the folder where the MoveFiles.exe is located and rename the ExampleMoveFiles.xml to MoveFiles.xml.
Edit the file with the following content (according to the settings of your installation):
< ?
xml version="1.0" encoding="utf-8" ?>
<monitor priority="BelowNormal" timer="5000" blockSize="8192" blockWait="10" fileWait="20">
<folder location="DRIVE:\Nixxis\Logs" pattern="*.log*" condition="age" value="30d" action="delete" target="" />
</monitor>
In this example, the MoveFiles will delete all the .log files inside and CrAppServer folder when the ages of the files are older than 30 days.
Start the service:
Note: A restart of the service is needed for any changes in the MoveFiles.xml.
8. Licensing
There is a dedicated procedure for the technical approach of the licensing in Nixxis Contact Suite.
In this document, we will focus on the first request and the automatic part of the renewal of the licenses.
8.1. First request
Generate the first licensing request to identify the instance to the licensing.nixxis.net server. The process uses HTTP transport.
Start a command prompt and run the following commands:
cd DRIVE:\Nixxis\CrAppServer
CrAppServer.exe –licence NAME_OF_THE_CUSTOMER
This first request will generate an “empty” CrAppServer.exe.lic file with a request ID. This request ID is
strongly linked to the configuration of your server.
This means that if you change a
device on your server (a network card, a processor, ...) your license file
will be invalid and you will have to
regenerate a new request.
The approval of the license request is an accounting matter. Be sure
everything is OK on this side. When the approval is validated, you can simply
run CrappServer.exe -license.
You can check you
licenses in the CrAppServer.exe.lic file or in the SIP diagnostic page (adapt
with your config : http://192.168.1.1:8088/acd/), check the
line x/y agents where x = the connected
agents and y = the maximum licenses
available