Skip to main content
Skip table of contents

Recording Component Deployment

The purpose of this document is to provide deployment steps for Eleveo recording components of Expertflow CX solution. 

Run All Commands in cim-solution/Kubernetes Directory

Recording Backend Information

This deployment is meant for users who have Eleveo set up as a recording backend. If you wish to use EFSwitch as a recording backend, then consult the docker-based deployment guides of the recording middleware and recording link uploader.

Before you begin, verify

  • CX deployment on Kubernetes, see https://expertflow-docs.atlassian.net/l/cp/6ufqN94G
  • A MongoDB database with name recording-link-activities is required. MongoDB must be configured to have the same host IP address as the server on which these components are deployed. A username and password must also be configured.

Create MongoDB database

  1. Install MongoDB.

  2. Run command

    CODE
    systemctl enable mongod
  3. Open the MongoDB config file:

    CODE
    vi /etc/mongod.conf
  4. Locate the field bindIp and set its value to the IP address of the current server.

  5. Note the value of the port field as well.

  6. Run command:

    CODE
    systemctl restart mongod
  7. Run command:

    CODE
    mongosh --host HOST --port PORT
    1. Where HOST is the value of the bindIp field in Step 4.

    2. PORT is the value of the port field in Step 5.

  8. 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:

    CODE
    use recording-link-activities
    db.createUser(
      {
        user: "USER",
        pwd: "PASS",
        roles: []
      }
    )
  9. Exit with the command:

    CODE
    exit

Create Namespace

All Expertflow voice recording components are deployed in a separate namespace inside the kubernetes called 'voice recording'.

Create the namespace using the command.

BASH
kubectl create namespace voice-recording

Image Pull secret

1. For  voice-recording namespace, use the following command:

BASH
kubectl apply -f pre-deployment/registryCredits/ef-imagePullSecret-cx-voice-recording.yaml

Update the FQDN

Decide the FQDN to be used in your solution and change the <FQDN> in the below-given command to your actual FQDN

BASH
sed -i 's/devops[0-9]*.ef.com/<FQDN>/g' cx-voice-recording/Ingresses/nginx/* cx-voice-recording/ConfigMaps/*

Set ConfigMap fields

  1. Open the Recording Middleware ConfigMap with

    CODE
    vi cx-voice-recording/ConfigMaps/ef-recording-middleware-cm.yaml
image-20240417-050632.png
  1. Change the values as follows:

    1. RECORDING_BACKEND: The mechanism for recording files. Leave at default ELEVEO.

    2. LOG_LEVEL: The amount of detail in the logs. Default is INFO, and for more detailed logs the value should be DEBUG.

    3. ELEVEO_ADMIN: The administrator username for Eleveo.

    4. ELEVEO_PASSWORD: The administrator password for Eleveo.

    5. ELEVEO_URL: The IP address of the Eleveo deployment.

  2. Open the Recording Link Uploader ConfigMap with

    CODE
    vi cx-voice-recording/ConfigMaps/ef-recording-link-activities-cm.yaml 
image-20240417-050752.png
  1. Change the values as follows:

    1. RECORDING_BACKEND: The mechanism for recording files. Leave at default ELEVEO.

    2. LOG_LEVEL: The amount of detail in the logs. Default is INFO, and for more detailed logs the value should be DEBUG.

    3. CX_FQDN: The address of EF CX. https://EFCX-FQDN. This is set by Step 3: Update the FQDN above, but can be changed manually if need e.g. if the protocol used is HTTP instead of HTTPS.

    4. MIDDLEWARE_API: The API link of the recording middle-ware that will provide recording files. Format: http://EFCX-FQDN/recording-middleware. This is set by Step 3: Update the FQDN above.

    5. MONGO_IP: IP address of the Mongo Database.

    6. MONGO_PASSWORD: Password of the Mongo Database.

    7. MONGO_PORT: Port of the Mongo Database. Default 27017.

    8. MONGO_USERNAME: Username of the Mongo Database.

    9. RETRIEVAL_INTERVAL: The number of past days to push recording links for on startup.

    10. ELEVEO_MAX_CALL_TIME: The maximum possible time in minutes a call is assumed to last.

    11. ELEVEO_PASSWORD: The administrator password for Eleveo.

    12. ELEVEO_PROCESSING_TIME: The time in minutes it takes for a call to appear in Eleveo after ending.

    13. ELEVEO_TIMEZONE: The timezone of the Eleveo deployment e.g. Asia/Karachi

    14. ELEVEO_URL: The IP address of the Eleveo deployment.

    15. ELEVEO_USERNAME: The username of the Eleveo deployment.

  2. Apply all configurations in the ConfigMaps folder using

CODE
kubectl apply -f cx-voice-recording/ConfigMaps/ef-recording-link-activities-cm.yaml
kubectl apply -f cx-voice-recording/ConfigMaps/ef-recording-middleware-cm.yaml

Start the Recording Middleware service

Create a service for the recording middleware.

CODE
kubectl apply -f cx-voice-recording/Services/ef-recording-middleware-service.yaml 

Services must be created before Deployments

Create the Recording Middleware Deployment

Apply the Deployment manifest for the recording middleware. 

CODE
kubectl apply -f cx-voice-recording/Deployments/ef-recording-middleware-deployment.yaml

Set the Recording Middleware Ingress

You need to apply the Ingress route for the recording middleware.

BASH
kubectl apply -f cx-voice-recording/Ingresses/nginx/ef-recording-middleware-Ingress.yaml

Start the recording link uploader cronjob

CODE
kubectl apply -f cx-voice-recording/cronjob/ef-recording-link-activities-cronjob.yaml 
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.