Prerequisites
Software Requirements
|
Item |
Recommended |
Installation guide |
|
Operating System |
Debian 12 |
- |
|
Docker |
v24 or higher |
- |
|
MongoDB |
Latest version |
|
|
EF CX |
Latest version |
|
|
Media Server/Eleveo |
Latest version |
Media Server Installation Media Server Configuration |
Port Utilization Requirements
The following ports must be open on the server for the program to function.
|
Type |
Application |
Description |
Port |
|
TCP |
MongoDB |
Database access port |
27017 |
|
TCP |
Postgres |
Database access port |
5432 |
The ports can be opened as follows:
-
SSH into the Media Server.
-
Use command:
ssh username@server-ip -
Enter the ssh password and press Enter.
-
-
Use command:
su -
Enter the root user's password
-
Run the following command and replace PORT with each of the required ports listed above:
sudo iptables -A INPUT -p tcp -m tcp --dport PORT-j ACCEPT -
Example with port 8021:
sudo iptables -A INPUT -p tcp -m tcp --dport 8021 -j ACCEPT -
Save this port configuration with command:
sudo iptables-save
Media Server PostgreSQL Configuration
-
SSH into the Media Server.
-
Use command:
ssh username@server-ip -
Enter the ssh password and press Enter.
-
-
Use command:
su -
Enter the root user's password
-
Navigate to the Postgresql folder.
-
cd /etc/postgresql/<version>/main/ -
Where <version> is the version of Postgresql being used.
-
-
Open the file postgresql.conf.
-
vi postgresql.conf -
Scroll down to find the line #listen_addresses='*' and remove the # symbol.
-
-
Save and exit by :
-
Press the Esc key.
-
Enter the phrase :wq to save and exit.
-
-
Open the file pg_hba.conf.
-
vi pg_hba.conf -
Scroll down to the bottom and add the line:
-
host all all 0.0.0.0/0 md5
-
-
-
Save and exit by :
-
Press the Esc key.
-
Enter the phrase :wq to save and exit.
-
-
Restart the Postgresql service:
-
systemctl restart postgresql
-
Create MongoDB database
-
SSH into the Media Server.
-
Use command:
ssh username@server-ip -
Enter the ssh password and press Enter.
-
-
Use command:
su -
Enter the root user's password.
-
Run command:
systemctl enable mongod -
Open the MongoDB config file:
vi /etc/mongod.conf -
Locate the field bindIp and set its value to the IP address of the current server.
-
Note the value of the port field as well.
-
Run command:
systemctl restart mongod -
Run command:
mongosh --host HOST --port PORT-
Where HOST is the value of the bindIp field in Step 3.
-
PORT is the value of the port field in Step 4.
-
-
In the following text replace USER and PASS with your choice of username and password respectively, then copy and paste it in the Mongo CLI opened in the previous step, and press enter:
use recording-link-activities db.createUser( { user: "USER", pwd: "PASS", roles: [] } ) -
Exit with the command:
exit
Container Deployment
The voice connector is deployed as a docker image.
-
SSH into the Media Server.
-
Use command:
ssh username@server-ip -
Enter the ssh password and press Enter.
-
-
Use command:
su -
Enter the root user's password.
-
Create a folder recording-link-uploader with the command:
mkdir recording-link-uploader -
Enter the folder with the command:
cd recording-link-uploader -
Create a file docker-compose.yml.
vi docker-compose.yml -
Enter editing mode with the 'I' or 'Insert' keys.
-
Copy the contents below and paste them into the file docker-compose.yml :
version: "3.8" services: recording-link-uploader: image: gitimages.expertflow.com/voice-recording-solution/recording-link-activities:TAG deploy: resources: limits: memory: 1024m reservations: memory: 256m container_name: recording-link-uploader ports: - 6115:8080 env_file: - ./env.txt volumes: - /var/lib/freeswitch/recordings/:/var/lib/freeswitch/recordings/ command: ["java", "-Xms256m", "-Xmx1024m", "-XX:+UseG1GC", "-XX:MinHeapFreeRatio=10", "-XX:MaxHeapFreeRatio=30", "-jar", "/app/recording-link-activities.jar"] restart: always -
Save and exit by :
-
Press the Esc key.
-
Enter the phrase :wq to save and exit.
-
-
Create a file env.txt
vi env.txt -
Enter editing mode with the 'I' or 'Insert' keys.
-
Copy the contents below and paste them into the file env.txt :
CX_FQDN=https://ef-cx.expertflow.com CX_CONVERSATION_MANAGER=https://ef-cx.expertflow.com/conversation-manager LOG_LEVEL=DEBUG MIDDLEWARE_API=https://my-efcx.expertflow.com/recording-middleware RECORDING_BACKEND=EFSWITCH RETRIEVAL_INTERVAL=15 MONGODB_HOST=192.168.1.161:27017 MONGODB_PASSWORD=1234 MONGODB_USERNAME=efcx MONGODB_AUTHENTICATION_DATABASE=recording-link-activities MONGODB_REPLICASET=none MONGODB_READ_PREFERENCE=secondaryPreferred MONGODB_ENABLE_SSL=false MONGODB_REPLICASET_ENABLED=false TRUST_STORE_PASSWORD=none KEY_STORE_PASSWORD=none DB_IP=192.168.1.10 DB_NAME=fusionpbx DB_PASS=password DB_PORT=5432 DB_USERNAME=fusionpbx-
RECORDING_BACKEND: Keep at default EFSWITCH.
-
LOG_LEVEL: The amount of detail in the logs. Default is INFO, and for more detailed logs the value should be DEBUG.
-
CX_FQDN: The address of EF CX. https://FQDN
-
CX_CONVERSATION_MANAGER: EF CX Conversation Manager endpoint. https://FQDN/conversation-manager
-
MIDDLEWARE_API: The EFCX FQDN with the recording middle-ware endpoint. https://FQDN/recording-middleware
-
MONGODB_HOST: IP address and port of the Mongo Database.
-
MONGODB_PASSWORD: Password of the Mongo Database.
-
MONGODB_USERNAME: Username of the Mongo Database.
-
MONGODB_AUTHENTICATION_DATABASE: Keep at default value recording-link-activities.
-
MONGODB_READ_PREFERENCE: Keep at default secondaryPreferred.
-
MONGODB_ENABLE_SSL: Keep at default false.
-
MONGODB_REPLICASET_ENABLED: Keep at default false.
-
MONGODB_REPLICASET: Keep at default none.
-
TRUST_STORE_PASSWORD: Keep at default none.
-
KEY_STORE_PASSWORD: Keep at default none.
-
RETRIEVAL_INTERVAL: The number of past days to push recording links for on startup.
-
DB_NAME: Media Server database name. Keep at default fusionpbx.
-
DB_URL: Media Server server IP address.
-
DB_PORT: Media Server database port. Keep at default 5432
-
DB_USERNAME: Media Server database name. Default is fusionpbx unless changed manually in Media Server.
-
DB_PASS: Media Server database password.
-
-
Run the command:
docker login gitimages.expertflow.com-
Enter your username and password as prompted (make sure that you were granted access to the repository).
-
-
Within the folder run the command:
docker compose up --no-start -
Confirm that the docker container is created:
docker ps -a
Create CRON Job
-
SSH into the Media Server.
-
Use command:
ssh username@server-ip -
Enter the ssh password and press Enter.
-
-
Use command:
su -
Enter the root user's password.
-
Run the following command:
echo '*/15 * * * * docker restart recording-link-uploader' > recording-link-uploader.cron -
Run the following command to load the job into the cron scheduler:
crontab recording-link-uploader.cron
Set Ingress and Service in EF CX
-
SSH into the EF CX server.
-
Use command:
ssh username@server-ip -
Enter the ssh password and press Enter.
-
-
Use command:
su -
Enter the root user's password.
-
Navigate to the kubernetes folder of this EFCX deployment.
-
Run the following commands, after replace myEfswitchIp with the IP address of the Media Server:
sed -i 's/efswitchIp/myEfswitchIp/g' cx-voice-recording/Services/ef-recording-middleware-efswitch-service.yaml kubectl apply -f cx-voice-recording/Services/ef-recording-middleware-efswitch-service.yaml -
Run the following commands, after replacing middlewarePort with the port of the recording middleware deployed on the Media Server:
sed -i 's/8080/middlewarePort/g' cx-voice-recording/Ingresses/nginx/ef-recording-middleware-Ingress.yaml kubectl apply -f cx-voice-recording/Ingresses/nginx/ef-recording-middleware-Ingress.yaml