Installation Steps
Internet should be available on the machine where the application is being installed and connections on port 9242 should be allowed in the network firewall to carry out the installation steps.
All the commands start with a # indicating that root user privileges are required to execute these commands. Trailing # is not a part of the command.
There are two types of installation 1. EFCX and 2. Cisco (UCCX & UCCE). As for EFCX most of the steps are not required as Keycloak, JtapiConnector, Active Mq, Mixer are not required for EFCX.
Allow ports in the firewall
If there is an active firewall, allow the following ports.
443/tcp 444/tcp 8088/tcp 5060/tcp (only for Cisco) 16386-32768/udp (only for Cisco)
Installation Steps
Please make sure that Solution Prerequisites are met for the desired deployment type.
Download the deployment script and place it in the user’s home or any desired directory. This script will:
delete the recording-solution directory if it exists.
clone the required files for deployment
To execute the script, give it the execute permissions and execute it. This command will clone the skeleton project for the recording solution. the recording-solution directory contains all the required files for deployment.
$ chmod 755 deployment.sh $ ./deployment.sh
Follow step 5 to 8 for deployment with Cisco UCCX or UCCE
Follow this guide to install and configure Freeswitch. The recording path should be
/usr/share/freeswitch/cucmRecording
Follow this guide to create an application user on CUCM for jtapi-connector.
Open recording-solution/docker/config.env and update the environment variables given below.
Name | Description | |
---|---|---|
1 | VRS_URL | URL of a local machine. example, https: //192.168.1.101 * |
2 | LOCAL_MACHINE_IP | Local machine IP since it is a non-HA deployment. example 192.168.1.101 * |
3 | KC_HOSTNAME | Keycloak hostname where keycloak is hosted. e.g 192.168.1.101 |
4 | TZ | Time Zone. e.g Asia/Karachi |
5 | FINESSE_URL | https: //uccx12-5p.ucce.ipcc:8445 |
6 | DIRECTORY_PATH_TO_MONITOR | The path for archival process to monitor, it should be the same path where sessions are kept. e.g /usr/share/freeswitch/cucmRecording/sessions/ |
7 | ARCHIVED_MEDIA_FILES_EXTENSION | mp4 [keep it same] |
8 | FILE_EXTENSION | wav [keep it same] |
9 | NO_OF_DAYS | No of days before which all the files will be archived. If set 2, then except for last 2 days from the date and time of service started or triggered all the files will be archived. |
10 | SFTP_HOST | SFTP host IP for archival e.g 192.168.1.106 |
11 | SFTP_PORT | 22 |
12 | SFTP_USERNAME | Username of the SFTP server e.g expertflow |
13 | SFTP_PASSWORD | SFTP password e.g Expertflow464 |
14 | ARCHIVAL_JOB_INTERVAL | It is a duration that tells the service to trigger again. This value is in hours. For example, if set 24 the service would be triggered after 24 hrs to get the desired job done. |
15 | STEAM_DELETION_JOB_INTERVAL_HRS | Time in hours before which all the stream is to be deleted. e.g 24 |
16 | RETRY_LIMIT | limit to retry in case the connection fails. e.g 2 |
17 | ARCHIVAL_PROCESS_NODE | active |
18 | NO_OF_DEL_DAYS | No of days before which all the streams will be deleted. If set 2, then except for last 2 days from the date and time of service started or triggered all the files will be deleted. |
19 | CISCO_TYPE | Either UCCE or UCCX |
20 | ACTIVEMQ_BROKER_URL | Connection URL to Consumer as a Broker e.g |
21 | ACTIVEMQ_URL | Connection URL for ActiveMQ |
22 | ACTIVEMQ_USER | UserName for the ActiveMQ service i.e admin |
23 | ACTIVEMQ_PASSWORD | Password for the ActiveMQ service i.e admin |
24 | CUCM_APPLICATION_USER_NAME | CUCM User's username that has been created in step 3. |
25 | CUCM_APPLICATION_USER_PASSWORD | Password for the CUCM Application User. |
26 | CUCM_IP | IP address where CUCM has been Deployed |
27 | DEPLOYMENT_PROFILE | Profile that we want to use for backend “CISCO” or “EFCX“ |
Below Env variables are only for UCCX
Name | Description | |
---|---|---|
1 | CCX_PRIMARY_IP | Primary UCCX IP address. e.g 192.168.1.33 |
2 | CCX_SECONDARY_IP | Secondary UCCX IP e.g 192.168.1.33 |
3 | CCX_ADMIN_USERNAME | CCX Admin username |
4 | CCX_ADMIN_PASSWORD | CCX Admin password |
Below Env variables are only for UCCE
Name | Description | |
---|---|---|
1 | UCCE_IP | UCCE IP |
2 | UCCE_DATABASE | UCCE awdb database name |
3 | UCCE_USERNAME | UCCE awdb database user’s username |
4 | UCCE_PASSWORD | UCCE awdb database user’s password |
Navigate to the recording solution directory and execute the following commands:
chmod 755 install-cisco.sh chmod 755 install-efcx.sh #for UCCX and UCCE run ./install-cisco.sh
Verify all the containers are up and healthy
Verify if the keycloak container is healthy (docker ps), if it is on restarting, kill (docker kill keycloak) and remove (docker rm keycloak) the keycloak container then run ./install.sh. Wait for keycloak container to become healthy.
Once keycloak is set up for Cisco and for EFCX it is already setup, add the below environment variables accordingly in the
recording-solution/docker/config.env
file.
Names | For EFCX | For Cisco | |
---|---|---|---|
1 | KEYCLOAK_REALM_NAME | Realm name from EFCX keycloak | Realm name created in step 4 of keycloak setup |
2 | KEYCLOAK_CLIENT_ID | KeyCloak client id from EFCX keycloak | Keycloak client id from step 6 of keycloak setup |
3 | KEYCLOAK_CLIENT_SECRET | Add the client secret from EFCX keycloak | keycloak client secret from step 8 of keycloak setup |
4 | KEYCLOAK_PERMISSION_GROUP | AGENT_GROUP | AGENT_GROUP |
5 | KEYCLOAK_URL | FQDN of CX | - |
6 | EFCX_FQDN (Only for EFCX) | FQDN of CX | - |
7 | DEPLOYMENT_PROFILE | “EFCX“ | “CISCO” |
8 | VRS_URL | Url of VRS machine with port 444. IP/Url:444 | Url of VRS machine with port 443 |
9 | LOCAL_MACHINE_IP | IP of the local machine with port 444 | IP of the local machine with port 444 |
Update the Database environment variables in config.env (Only for EFCX) .These variables are builtin in case of UCCE or UCCX
Name | Description | |
---|---|---|
1 | DB_DRIVER | Driver on which database is running i.e postgres or mysql drive |
2 | DB_ENGINE | Engine on which database is running i.e postgres or mysql |
3 | DB_HOST | Name or ip of the host on which database is active |
4 | DB_NAME | Name of the database (fetch from config.conf on this path /etc/fusionpbx/) |
5 | DB_USER | Username for database (fetch from config.conf on this path /etc/fusionpbx/) |
6 | DB_PASSWORD | Password for the database (fetch from config.conf on this path /etc/fusionpbx/) |
To update the self-signed certificates for VRS, get the public authority or domain signed certificate .crt and .key files, name them server.crt and server.key, and replace the files in /recording-solution/config/certificates with these two new files. Names should be the same.
Run ./install-efcx.sh for EFCX Or run ./install-cisco.sh for Cisco UCCX and UCCE.
Run the following command to ensure all the components are running.
# docker ps
In case of Cisco go to https : //VRS-IP/#/login to access the application, whereas for EFCX go to https://VRS-IP:444/#/login.
Configure the SIP trunk to enable CUCM to send SIP events to VRS for call recordings. Two sip trunks should be configured in case of HA. (Not for EFCX)
*Nginx service is running on port 443 in case of UCCX or UCCE, and for EFCX it is running on port 444.