Skip to main content
Skip table of contents

CX-Voice Deployment on Kubernetes

This document illustrates the procedure and steps to deploy Expertflow CX-voice on Kubernetes.

Before you begin, verify

Prepare for CX Voice Deployment

Step 1: Create Namespaces

  1. Create a namespace cx-voice for all cx-voice components.

BASH
# Run the following command on the control-plane node.
kubectl create namespace cx-voice

Step 2: Apply Image Pull secret

  1. Run the following commands for applying ImagePullSecrets of Expertflow CX images.

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

Step 3: Update FQDN

Expertflow CX-voice should be accessible by a fully qualified domain name. Assign the FQDN that resolves to the control plane node or KubeVIP.

BASH
# Replace <FQDN> with your FQDN for Expertflow CX and run this command.
sed -i 's/devops[0-9]*.ef.com/<FQDN>/g'   voice/cx-voice/Ingresses/*

Step 4: Set ConfigMap fields

  1. Open the Common connection ConfigMap with

    BASH
    vi voice/cx-voice/ConfigMaps/ef-connection-env-configmap.yaml 
    image-20240201-134247.png
  2. Change the values as follows:

    1. ESL_IP: IP of the EFSwitch server.

    2. ESL_PORT: ESL port of the EFSwitch server, set here.

    3. ESL_PASSORD: ESL password of the EFSwitch server, set here.

  3. Exit the editor by pressing the Esc key then entering :wq

  4. Open the Dialer connector ConfigMap with:

    BASH
    vi voice/cx-voice/ConfigMaps/ef-outbound-dialer-configmap.yaml
    image-20240201-134604.png
  5. Change the values as follows:

    1. SERVICE_IDENTIFIER: The channel service identifier of the CX Voice channel, set here.

    2. ESL_CONNECT_DELAY: The delay in milliseconds between the dialer checking that its connection with EFSwitch is maintained.

    3. CONTACT_RETRIEVAL_DELAY: The delay in milliseconds between the dialer reading the database for new added contacts.

    4. MAX_CONCURRENT_CALLS: The maximum number of calls that can occur at a time.

    5. DEFAULT_IVR: The dialing number of the default IVR created on EFSwitch, which plays when the outbound contact does not have a specified IVR.

    6. LOG_LEVEL: Set to INFO for basic logging and DEBUG for in-depth logs.

  6. Exit the editor by pressing the Esc key then entering :wq

  7. Open the Voice connector ConfigMap with:

    BASH
    vi voice/cx-voice/ConfigMaps/ef-voice-connector-configmap.yaml
    image-20240206-064551.png
  8. Change the values as follows:

    1. CX_FQDN: The Fully Qualified Domain Name of the EF CX. Replace devops.com with the FQDN of the EF CX in use.

    2. MIDDLEWARE_API: The API for the recording middle-ware. In the format: http://IP:PORT/recording-middleware

      1. Where IP and PORT are the server IP address and container port of the recording middle-ware container respectively.

    3. LOG_LEVEL: Set to INFO for basic logging and DEBUG for in-depth logs.

  9. Exit the editor by pressing the Esc key then entering :wq

Deploy CX-voice Components

  1. Apply all configurations in the ConfigMaps folder using

CODE
kubectl apply -f voice/cx-voice/ConfigMaps
  1. Create services for all deployment EF components

CODE
kubectl apply -f voice/cx-voice/Services
  1. Apply all the Deployment manifests 

CODE
kubectl apply -f voice/cx-voice/Deployments
  1. Before proceeding to the the next steps, wait for all the solution components to be up and ready.

BASH
# Wait for the CX voice to be ready
kubectl -n cx-voice get pods

Step 4: Setup Ingress Routes

For RKE2-based Ingresses using Ingress-Nginx Controller

BASH
kubectl apply -f voice/cx-voice/Ingresses
JavaScript errors detected

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

If this problem persists, please contact our support.