Breadcrumbs

Voice Connector Deployment Guide

Prerequisites

Software Requirements

Item

Recommended

Installation guide

Operating System

Debian 12

                                                           -

Docker

v24 or higher

https://docs.docker.com/engine/install/debian/

Media Server

Latest version

Installation

Configuration

EF CX

Latest version

Deployment

Dialer and database(For outbound only)

4.5

Deployment

Port Utilization Requirements

The following ports must be open on the server for the voice connector to function.

Type

Application

Description

Port

TCP

Media Server

ESL port

8021

TCP

Media Server

Websocket port

7443

TCP

Voice Connector

Access port

any/ (set in docker-compose.yml)

TCP

Postgres

Database access port

5432

TCP

Dialer

Access port

any/ (configured in dialer)

The ports can be opened as follows:

  • SSH into the Debian 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:  

      sudo iptables -A INPUT -p tcp -m tcp --dport 8021 -j ACCEPT
      
  • Save this port configuration with command:

    • sudo iptables-save
      

Container Deployment

The voice connector is deployed as a docker image.

  • Create a folder voice-connector with the command:

    • mkdir voice-connector
      
  • Enter the folder with the command:

    • cd voice-connector
      
  • 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:
      voice-connector:
        image: gitimages.expertflow.com/freeswitch/ecx_generic_connector:TAG
        deploy:
          resources:
            limits:
              memory: 1024m
            reservations:
              memory: 256m
        container_name: unified-voice-connector
        ports:
          - 8115:8080
        env_file:
          - ./env.txt
        command: ["java", "-Xms256m", "-Xmx1024m", "-XX:+UseG1GC", "-XX:MinHeapFreeRatio=10", "-XX:MaxHeapFreeRatio=30", "-jar", "/app/ecx_generic_connector.jar"]
        restart: always
    
    • Replace the 'TAG' keyword with the required image tag obtained from the releases page here.

  • 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://cim.expertflow.com
    ESL_PORT=8021
    ESL_PASSWORD=MyEslPass
    DIALER_API=http://192.168.1.10:6666
    LOG_LEVEL=INFO
    AUTH_ENABLED=true
    API_USERNAME=admin
    API_PASS=admin
    ROOT_DOMAIN=tenant-id # for MTT tenancy it will be rootdomain of efcx solution (eg.. expertflow.com)
    ESL_DEFAULT_DOMAIN=192.168.1.17
    
    • CX_FQDN: The address of EF CX. https://FQDN. In case of Multitenants it should be: <https://<TENANT-ID>>.<ROOT_DOMAIN>

    • ESL_PORT: The port of Media Server ESL (Default 8021, Same as in Media Server settings here)

    • ESL_PASSWORD: Media Server ESL password (Use the same password set in the Media Server settings here)

    • DIALER_API: API link of the dialer in format: http://IP:PORT (Fill in IP and PORT of dialer)

      • Where IP is the IP address of the current server.

      • And PORT is the external port of the dialer container.

      • Leave at default value if not using the progressive outbound feature.

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

    • AUTH_ENABLED: true or false depending on whether APISIX authentication is enabled in EFCX. The four settings below are set if this value is true.

    • API_USERNAME: The username created in Keycloak for API authentication.

      • On Keycloak create a user in the Expertflow realm.

      • Assign the admin and default roles, and have Email-Verified option enabled.

      • Assign a non-temporary password to this user as well.

    • API_PASS: The password for the above user created in Keycloak for API authentication

    • ROOT_DOMAIN: For Multitenant Deployment-> expertflow.com (value will be equal to tenantId for on prem deployment)

    • ESL_DEFAULT_DOMAIN: Media Server IP through which ESL connection can be established

  • 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 -d
      
  • Confirm that the docker container is running by using the command:

    • docker ps
      
image2023-9-6_12-55-39.png?version=1&modificationDate=1693986938289&cacheVersion=1&api=v2&width=800
  • Confirm that the container is running correctly by opening the logs with command:

    • docker logs -f containerID
      
image2023-9-6_12-58-15.png?version=1&modificationDate=1693987093716&cacheVersion=1&api=v2&width=700