0% found this document useful (0 votes)
276 views258 pages

Documentacion Omnileads Readthedocs Io en Develop - 2

Uploaded by

biniyam yesuf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
276 views258 pages

Documentacion Omnileads Readthedocs Io en Develop - 2

Uploaded by

biniyam yesuf
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 258

omnileads Documentation

Release develop

omnileads

Aug 25, 2021


Contents

1 How do i get it? 3

2 How do I install it ? 5

3 Omnileads’s Features and funtionalities 7


3.1 WebRTC - OMniLeads underlying technology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Características y funcionalidades de OMniLeads . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Where and how can I use it ? 9


4.1 OMl as a Contact Center integrated to a PBX based on SIP . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 OML on a Customer Contact services company . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.3 OML for carriers o Cloud PBX providers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5 How do I get training? 13

6 INSTALLATION 15
6.1 OMniLeads deploy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

7 INITIAL SETTINGS 39
7.1 Initial configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

8 PSTN ACCESS CONFIGURATION 53


8.1 Telephony module configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

9 CAMPAIGNS 63
9.1 Telephone Campaigns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

10 METRICS, REPORTS, RECORDINGS AND SUPERVISION 127


10.1 Reporting, Recordings and Supervision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

11 BACKOFFICE MODULE 147


11.1 Backoffice module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

12 AGENT MANUAL 153


12.1 Agent Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

13 Integration with PBX 195


13.1 Integration between OMniLeads & PBXs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195

i
14 IT ADMINISTRATOR MANAGEMENT 209
14.1 IT administrator managment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

15 CRM INTEGRATION 227


15.1 CRM integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227

16 OML API 237


16.1 OMniLeads RESTful API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

17 KNOWN ISSUES 251


17.1 Known Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

18 RELEASE NOTES 253


18.1 Release Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

ii
omnileads Documentation, Release develop

OMniLeads is a Web Application for Contact Centers based on the free software license GPLV3.
This App allows you to implement and manage both incoming and outgoing Contact Center operations and in Blended
mode. The App provides metrics, reports and indicators, real-time supervision of agents, audit modules for backoffice
and other advanced QA functionalities, contact and campaign management.
The fact of being 100% WebRTC makes it ideal for setting up operations with agents in home-office mode due to
the efficiency and cryptographic security that WebRTC technology implies in its default operation when maintaining
voice and / or video sessions through from Internet.
The different user profiles; OMniLeads are accessed by agents, supervisors , administrators or clients from any modern
web browser. As it does not require the use of desktop applications Softphones, it is not necessary to carry out the
typical configurations on the workstations of the contact center agents, just by accessing the HTTPS web URL where
the App resides, agents and supervisors can be online managing communications with clients. This facility implies a
great advantage when it comes to providing Cloud CCaaS services (Contact Center as a Service).
OMniLeads can adapt to a company or organization that needs to set up its own Contact Center integrated to its PBX,
as well as scale towards companies that provide Customer Contact services (Business Outsourcing Process) either in
on-premise environments as well as in deployments in Cloud.

Contents 1
omnileads Documentation, Release develop

2 Contents
CHAPTER 1

How do i get it?

The repository is available in GitLab, for free download, installation, modification and use of the Software.

3
omnileads Documentation, Release develop

4 Chapter 1. How do i get it?


CHAPTER 2

How do I install it ?

The section OMniLeads deploy talk about this, exposing the steps needed to install the software.

5
omnileads Documentation, Release develop

6 Chapter 2. How do I install it ?


CHAPTER 3

Omnileads’s Features and funtionalities

3.1 WebRTC - OMniLeads underlying technology

Before to cite use cases, we want to emphasize the WebRTC benefits;the OMniLeads core
WebRTC adds to the browser the ability to perform real-time communications in voice, video, chat and screen sharing.
OMniLeads use this technology to nucleate communicationsand the web interface, avoiding desktop apps, “soft-
phones”, which gives a fast workflow in creating and registering users. With only a login the users are on-line pro-
cessing communications.

Another WebRTC advantages


• Workstations failure points are minimized
• Helpdesk tasks are minimized and for that reason IT employees demand also is minimized
• We work with audip Opus and video VP8 codecs, both conceived for a maximun performance on Internet
environments (internet native codecs)
• In a security level all communications must travels encrypted, in terms of signaling and media.

3.2 Características y funcionalidades de OMniLeads

• Inbound and Outbound campaigns management.

7
omnileads Documentation, Release develop

• WebRTC agent console (does not requires any installation or plugin,100% Web Browser).
• Opus ® as default codec for all Agent communications.
• WebRTC supervision console; detailed report of agent & campaign states.
• Agents and campaigns productivity reports
• Recordings search with filter of date, campaign, agent
• Campaign recycling by agent disposition and/or phone call status.
• Contact database change over the same campaign
• Answering machines detection with audio message play
• CRM / ERP integration trougth RestFull API
• Ready for virtualization ! OML was conceived as technology oriented to virtual environments.
• Ready to Dockerize ! OML is available in terms of Docker images, which allows be executed on every OS but
also orchestrating clusters Docker HA and/or deployments on Cloud providers(AWS, GCloud, etc.).
• Ready to scale ! Scalability is possible due to reuse underlying technologiesvery powerful like Postgres, Nginx,
Rtpengine, that also can runs on independent hosts (horizontal scalability) with mininum setup.
• Complementary addons that gaves to OML extra features and/or vertical segments
• 100% Contact Center oriented. It is not a PBX software with reporting addons and/or supervision. The system
was conceived from zero as a una plataform oriented y optimized for Contact Center needs

8 Chapter 3. Omnileads’s Features and funtionalities


CHAPTER 4

Where and how can I use it ?

4.1 OMl as a Contact Center integrated to a PBX based on SIP

OMniLeads is ideal for companies that demands typical Contact Center features, that PBX systems does not fulfill
by its own nature. For that reason OMniLeads emerges as an alternative for complement these PBX system, from
an independent instance (bare-metal host, virtual machine or cloud provider) integrated to the PBX, allowingsecure,
liable and transparent communications.
We propose to expand the traditional paradigm of the adquisition of a reports/supervision sofware stack to install on
the PBX, to in stead of deploy a complete and independen Contact Center application (use its own Asterisk) that allows
at the same time a simple integration with the PBX software.This way we could derive an IVR option of the PBX to
an OMniLead inbound campaign or realize a transfer from and IVR extension to OMniLeads or viceversa
The more remarkable advantages are:
• Avoid the economic costs that involves software licenses of the typical complementing tools of the market used
for add to the PBX some queues reporting and supervision features.
• Avoid the cost in terms of performance of the PBX, sacrificed in order to run complex reporting and monitoring
tools that implies execute a «call center modules» over the PBX system.
On operations where exists a huge reports extraction or is needed to scalein terms of agents, is quite simple deploy
OMniLeads out of the box; on a VM, VPS or server without loose the PBX integration.
The integrator have the option to execute the application over the proper PBX system or in an independent instance.

9
omnileads Documentation, Release develop

4.2 OML on a Customer Contact services company

In this scenario, OMniLeas can work as a Contact Center communications core with dozens or even hundreds of agents.
This way can handle multiple SIP trunks at the same time, with its pertinent inbound and outbound communications
routes
In these contexts scalability is basic requirement, because of operations are very dynamics y can demand peaks of users
working in paralel.Scalability is guaranteed since our solution was conceived to be easily deployedon higth availability
cluster mode.
At the same time the RestFull API allows easily generate CRMs or web workflowsfor each campaign in order to fit
client requirements.

10 Chapter 4. Where and how can I use it ?


omnileads Documentation, Release develop

4.3 OML for carriers o Cloud PBX providers

If is needed to implement a CCaaS (Contact Center as a Service) OMniLeads is ideal having the advantage to use
WebRTC and Docker as a technology bases.
We can cite as advantages:
• WebRTC removes the need to install desktop softphone applications, since voice and video flows through the
browser for agents and supervisors.This removes a failure point and maintenance efforts on workstations.
• The Codecs implemented for audio and video are Opus and VP8, both designed for work on Internet and has
the ability to dynamic adaptation tothe available bandwith, which avoids the uncomfortable call cuts off in
traditional VoIP
• Security: information exchange betwenn workstations and OML instance on Cloud, is encrypted with HTTPS,
sRTP and dTLS standars.
• Kamailio is part of the core of OMniLeads communications stack components. Is a FLOSS advanced Proxy-SIP
crucial for give security to VoIP servers.
• Docker allows easily OMniLeads deployment abstracting it of the underlying infrastructure, allowing run the
system withouts any trouble on VPS, AWS, GCloud, etc

4.3. OML for carriers o Cloud PBX providers 11


omnileads Documentation, Release develop

12 Chapter 4. Where and how can I use it ?


CHAPTER 5

How do I get training?

This documentation covers all aspects of the product. From technical questions inherent to the IT administrator, to
functional aspects oriented to agents, supervisors or contact center leaders.

13
omnileads Documentation, Release develop

14 Chapter 5. How do I get training?


CHAPTER 6

INSTALLATION

In this chapter is covered all the types of installation of the App

6.1 OMniLeads deploy

The installation is based on Ansible and the code is versioned within the OMniLeads repository. Specifically, the
installation consists of an Inventory File where one must explicitly specify every App parameter (users, passwords,
NAT, etc.) and a script bash whichafter execution ends up invoking the Ansible Playbook, among other actions.
The latter performs the automation steps of the configuration on the Host that will contain our App.

There are two ways of executing the installation: Self-hosted and Deployer-Nodes.

6.1.1 Self-Hosted installation method

Under this modality the installation and updates management process is handled by using the deploy.sh bash script
directly over the host that will contain OMniLeads. On that host one must download the repo of the App, since it is

15
omnileads Documentation, Release develop

there where one must work with the inventory file to then release the installer.
For every OMniLeads instance administered, one must enter through SSH, download the repository and run the instal-
lation. The updates will also imply the administrator to be connected to every instance and to execute the necessary
steps for each managed server.
This option becomes somewhat unfeasible as the number of productive servers under maintenance increases.

6.1.2 Deployer-Nodes installation methodology

Under this modality, the use of a deployer (based on Ubuntu 18.04 or Debian 10) is proposed From this only deployer
one can install and manage updates of an unlimited number of instances with OMniLeads facilitating and centralizing
the management.
In this modality, the host to be managed must allow SSH access from root or sudo to be able to deploy the App from
the deployer.

16 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

Regardless of the selected installation method (Self-Hosted or Deployer-Node), OMniLeads can be deployed under
two possible architectures.

6.1.3 OMniLeads Traditional Architecture Deployment (AIO)

OMniLeads can run like a traditional application deploying an installation of all the components on a physical server,
virtual machine or VPS as long as GNU/Linux CentOS-7 or Amazon Linux is used as a base. We call this type of
installation OMniLeads AIO (All In One).

6.1. OMniLeads deploy 17


omnileads Documentation, Release develop

6.1.4 OMniLeads deployment on Docker containers

Danger: We are making a huge refactor in the deploy of OMniLeads on Docker containers. The deploy shown in
this documentation will work just for release 1.11.X and below.

OMniLeads can be deployed using Docker, containers. This extends the possibility of running the application on
various GNU/Linux distributions.

18 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

We highlight the fact that by using this format it is possible to deploy OMniLeads on instances of Issabel-PBX &
FreePBX, in such a way that within the same host both PBX and OMniLeads softwares coexist as a Contact Center
module.

6.1. OMniLeads deploy 19


omnileads Documentation, Release develop

6.1.5 Inventory file

The inventory file is the fundamental component in the installation and administration (updates, changes of component
passwords , clustering, etc.) of the App. It is essential to understand it in its entirety before starting to deploy
OMniLeads.

Inventory file

In the different sections of the inventory file, parameters related to the App deployment are described:
• Deployment type to be executed
• OMniLeads architecture that will be deployed
• Users and passwords of the different components
• Session times
• Recordings format
• Timezone
• NAT support

OMniLeads architecture

We begin by explaining the first section of the file, where the type of Architecture to deploy and under which installa-
tion method is specified. Remember that the possible combinations are:
• 1-a) OMniLeads Traditional Architecture (AIO) through a Self-Hosted deployment
• 1-b) OMniLeads Traditional Architecture (AIO) through a Deployer-nodes deployment
• 2-a) OMniLeads on Docker Containers through a Self-Hosted Deployment
• 2-b) OMniLeads on Docker Containers through a Deployer-nodes deployment
• 3) OMniLeads devenv (development environment)

OMniLeads Traditional Architecture (AIO)

To deploy this architecture [OMniLeads Traditional Architecture Deployment (AIO)], you should work with the
[prodenv-aio] section

20 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

######################################################################################
˓→####

# If you are installing a prodenv (PE) AIO y bare-metal, change the IP and hostname
˓→here #

######################################################################################
˓→####

[prodenv-aio]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

#X.X.X.X ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation)

• Self-Hosted Deployment: in the case of applying (1-a), the first line should be uncommented, leaving:

[prodenv-aio]
localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

#X.X.X.X ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation)

• Deployer-Nodes Deployment: in the case of applying (1-b), the second line should be uncommented and
replace the string X.X.X.X with the IP of the node to be displayed:

[prodenv-aio]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

192.168.95.100 ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation)

In case the SSH connection is in a port different than 22 and the user is different to root, modify the values ansi-
ble_ssh_port y ansible_user

OMniLeads on Docker Containers

To deploy this architecture [about_install_docker], you should work with the [prodenv-container] section

# If you are installing a devenv (PE) uncomment


[prodenv-container]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

#X.X.X.X ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation, replace X.X.X.X with the IP of Docker Host)

• Self-hosted Deployment: in the case of applying (2-a), the first line should be uncommented, leaving:

[prodenv-container]
localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

#X.X.X.X ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation, replace X.X.X.X with the IP of Docker Host)

• Deployer-Nodes Deployment: in the case of applying (2-b), the second line should be uncommented and
replace the string X.X.X.X with the IP of the node to be displayed:

6.1. OMniLeads deploy 21


omnileads Documentation, Release develop

[prodenv-container]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

192.168.95.100 ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation, replace X.X.X.X with the IP of Docker Host)

Important: Be very attentive when uncommenting the appropriate lines according to the architecture to be deployed
and its installation method. For example; Do not uncomment those of container environment if you want to install
AIO.

Passwords and parameters

Once the part inherent to the architecture and type of installation has been configured, we proceed with everything
related to users and passwords of some components as well as certain parameters of the App:

[everyone:vars]

###############
# Credentials #
###############

#####################################################################
# Database #
# SET POSTGRESQL PASSWORD #
#####################################################################
postgres_database=omnileads
#postgres_user=omnileads
#postgres_password=my_very_strong_pass
#######################################
# AMI for wombat dialer and OMniLeads #
#######################################
#ami_user=omnileadsami
#ami_password=5_MeO_DMT
#############################
# Wombat dialer credentials #
#############################
#dialer_user=demoadmin
#dialer_password=demo
######################################################################################
˓→###########

# Set the timezone where the nodes are. UNCOMMENT and set this if you are doing a
˓→fresh install #

######################################################################################
˓→###########

#TZ=America/Argentina/Cordoba
######################################################################################
˓→##############

# Session Cookie Age (SCA) is the time in seconds that will last the https session
˓→when inactivity #

# is detected in the session (by default is 1 hour)


˓→ #
######################################################################################
˓→##############

(continues on next page)

22 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

(continued from previous page)


SCA=3600
######################################################################################
˓→#########

# Ephemeral Credentials TTL (ECTTL) is the time in seconds that will last the SIP
˓→credentials #

# used to authenticate a SIP user in the telephony system (by default 8 hours)
˓→ #
######################################################################################
˓→#########

ECCTL=28800
######################################################################################
˓→###########

# MONITORFORMAT refers to the format that your recordings will be converted.


˓→ #
# Mp3 is the preferred format because the small size of file.
˓→ #
# If you want your recordings in format "wav" (asterisk default recording format),
˓→change this #
# variable to wav.
˓→ #
# The conversion of recordings is scheduled to be done at 01:00 am everyday.
˓→ #
# You can edit this # changing crontab of omnileads user
˓→ #
######################################################################################
˓→###########

MONITORFORMAT=mp3
######################################################################################
˓→###########

# Login failure limit (LFM) is the attempts a user has to enter an incorrect password
˓→in login #
# Decrease it if paranoic reasons
˓→ #
######################################################################################
˓→###########

LOGIN_FAILURE_LIMIT=10
####################################
# Language of schedule disposition #
####################################
schedule=Agenda
######################################################################################
˓→###################################################

# External IP. This parameter will set the public IP for SIP and RTP traffic, on
˓→environments where calls go through a firewall. #
# auto = The public IP will be obtained from http://ipinfo.io/ip. It depends on the
˓→WAN connection that OML is using to go to Internet. #

# X.X.X.X = The public IP is set manually.


˓→ #
# none = If the agents are working on a LAN environment, and don't need a public IP.
˓→ #
######################################################################################
˓→###################################################

#extern_ip=auto

As you can see, the file is fully documented in terms of each variable or parameter.

Important: When deploying, the mentioned parameters must be uncommented. If you do not uncomment them the

6.1. OMniLeads deploy 23


omnileads Documentation, Release develop

installation will fail.

Docker variables

This section allows you to customize two parameters when deploying OMniLeads as docker containers.

[docker:vars]
registry_username=freetechsolutions
#registry_email=
#registry_password=
subnet=192.168.15.0/24

• if you are going to deploy the official OMniLeads images, leave this variable as is. If you have your own images,
the name of the relevant docker-registry will be indicated here.
• subnet: it refers to internal docker LAN network
The variables registry_email and registry_password are neccesary just when you want to make a build of your own
images.

6.1.6 OMniLeads deploy

After having read and understood the introductory conceptual framework, we are ready to proceed with the exposition
of the steps necessary to execute the installation of the App.

Pre-requisitos

It is assumed that we have an instance of CentOS-7 or Amazon Linux, on which the installation will run. But before
this we must carry out a series of necessary steps, therefore through an SSH connection to the host we proceed with:

Hostname configuration

Before proceeding with the installation do not forget to configure the hostname of the host. OMniLeads uses this value
as a parameter when configuring some services related to the SIP (Telephony) part.

Disabled firewalld and SELinux

systemctl disable firewalld


sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

Run upgrades and install kernel-devel paq.

yum update && yum install kernel-devel git -y


reboot

Important: Check that the kernel-devel package matches the kernel.

24 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

Run the commands

uname -r
rpm -qa |grep kernel-devel

Provide reliable SSL Certificates

OMniLeads is deployed with SSLv3 certificates for HTTPS conecction between the browser and web server (Nginx),
using a self-signed cert/key in PEM format. The issued certificate uses SHA-512 with RSA encryption as the signing
algorithm and a key size of 4096 bits. As it is a self-signed certificate, it produces an Unsure Site Warning in the
browser when accessing the system for the first time (since the certifying authority or CA is not within the Repository
of Trusted CAs of the Browser). Once the exception is added to trust it securely, the certificate is now configured for
acceptance.
However, it is recommended to load your trusted SSL certificates during the installation of the App. You must locate
your cert and key files in .pem format inside the ominicontacto/ansible/deploy/certs folder. To add the certificates,
you must erase the cert.pem and key.pem files in the folder and place yours. During the deploy process, the files are
detected in this location and therefore they are provided at the web and webtrc levels, so that when the deploy ends,
the platform is available and using its own trusted certificates.

Ansible Installation

Lets begin whith Ansible installation. Is mandatory to install the packages pip and python. Mostly all Linux distros
come with these packages installed. Other way you must install them.

Centos7 - Selfhosted

• Install python3-pip and python3 in case they are not installed:

yum install epel-release -y && yum install python3-pip pyton3 -y

• Install ansible:

(con el usuario root)


# pip3 install --upgrade pip
# pip3 install 'ansible==2.9.2' --user

All Ansible’s binaries are available in /root/.local/bin/

Other Linux distros - Host Node

Install ansible using pip

Install python2 and pip in case you don’t have them installed.

6.1. OMniLeads deploy 25


omnileads Documentation, Release develop

$ sudo pip install 'ansible==2.9.2' --user

Note: Some actual distros of Ubuntu and Debian doesn’t allow to install python2 and pip, in that case, you can install
using python3 and pip3.

All Ansible’s binaries are available in /root/.local/bin/

Use Ansible dockerized image

Freetech Solutions maintains a docker image of ansible, you can downolad and use this image to make OMniLeads
installations. Follow these steps:
1. Install docker in deployer machine. For that, follow the steps of Docker installation for your distro/SO.
2. Run script run_ansible.sh. This script will make pull of the latest Ansible image builded by us and will raise up
the container.

cd ./ominicontacto/ansible/
./run_ansible.sh

Note: Type ctrl + D to exit the container. This will be destroyed automatically

Run deploy.sh

Once the host is available, the installation proceeds. This is where we must choose the type of OMniLeads installation
and architecture to deploy.

Self-Hosted installation method

(Self-Hosted installation method)


We start from the point of having performed the prerequisite steps on the host. We return to establish SSH connection
with the host and proceed with downloading the app repo.

yum install bash-completion bash-completion-extras -y


source /etc/bash_completion.d/git
git clone https://gitlab.com/omnileads/ominicontacto.git
cd ./ominicontacto/ansible/deploy
git checkout release-V.V.V

Where V.V.V is the combination associated with the App version. Using the Tab key, all available versions are ob-
tained.

Once the version to install is selected, proceed with the configuration of Inventory file and subsequent execution of the
installer.

26 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

Important: Before continuing, make sure that you have configured your inventory file, according to the type of
installation and architecture to be deployed.

OMniLeads Traditional Architecture Deployment

(OMniLeads Traditional Architecture Deployment (AIO))


You need to work in the [prodenv-aio] section of the inventory file, as explained there. Then all parameters and
variables must be adjusted.
Once the inventory file has been adjusted, the installation script is executed.

./deploy.sh -i --iface=NETWORK_INTERFACE

From this point on, the process begins to run and can take a few tens of minutes, always depending on the speed of the
Internet connection and the processing capacity of the host.

OMniLeads deployment on Docker containers

(OMniLeads deployment on Docker containers)


You need to work in the [prodenv-conatainer] section of the inventory file, as explained there. Then all parameters
and variables must be adjusted.
Once the inventory file has been adjusted, the installation script is executed.

./deploy.sh --docker-deploy --iface=NETWORK_INTERFACE

6.1. OMniLeads deploy 27


omnileads Documentation, Release develop

From this point on, the process begins to run and can take a few tens of minutes, always depending on the speed of the
Internet connection and the processing capacity of the host.

Note: You must replace NETWORK_INTERFACE with the network interface of the host to which you want to attack
all the services and components that OMniLeads runs. (For example: eth0, ens18, eth1, wlp2s0, etc.)

Deployment Complete

After a few minutes, the installation process ends with a screen showing the successful completion of the procedure.

Important: After installation is complete, apply a host reboot.

You can proceed with the

Deployer-Nodes installation methodology

(Deployer-Nodes installation methodology)

28 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

We start from the point of having performed the prerequisite steps on the host. We return to establish SSH connection
with the host and proceed with the installation from our deployer.

Note: Currently we can set as deployer the Ubuntu-18.04 or Debian 10 OS

Assuming that we have the repository downloaded within any of the mentioned OS, we must position ourselves on the
directory where the installer and inventory reside. Then choose a version of the App to display:

cd ./ominicontacto/deploy/ansible
git checkout release-V.V.V

Where V.V.V is the combination associated with the App version. Using the Tab key, all available versions are ob-
tained.

Once the version to install is selected, proceed with the configuration of Inventory file and subsequent execution of the
installer.

Important: Before continuing, make sure that you have configured your inventory file, according to the type of
installation and architecture to be deployed.

OMniLeads deployment on Docker containers

(OMniLeads deployment on Docker containers)


You need to work in the [prodenv-aio] section of the inventory file, as explained there. Then all parameters and
variables must be adjusted.

6.1. OMniLeads deploy 29


omnileads Documentation, Release develop

[prodenv-aio]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

201.216.40.210 ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation)

Note: Note that for remote installation, the line with the parameter ansible_ssh_port = 22 (where 22 is the default
port, but it is normal that another port is used as well) within the [prodenv-aio] section should be used. Also you can
change the user to connect through SSH

Then all parameters and variables must be adjusted. Once the inventory file has been adjusted, the installation script
is executed.

Note: Have at hand the root password of the host to deploy (remote), since it will be requested the first time that the
deployer installs the App.

sudo ./deploy.sh -i

Si en vez de usar una password para conectarse por root al host a desplegar, tiene una llave privada, deberá ubicar esta
llave en ominicontacto/ansible/deploy y ejecutar el script con la opción –key=$NOMBRE_KEY

sudo ./deploy.sh -i --key=oml4demo.pem

OMniLeads deployment on Docker containers

(OMniLeads deployment on Docker containers)


You need to work in the [prodenv-conatainer] section of the inventory file, as explained there. Then all parameters
and variables must be adjusted.

30 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

[prodenv-container]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)

190.22.40.72 ansible_ssh_port=22 ansible_user=root #(this line is for node-host


˓→installation, replace X.X.X.X with the IP of Docker Host)

Note: Note that for remote installation, the line with the parameter ansible_ssh_port = 22 (where 22 is the default
port, but it is normal that another port is used as well) within the [prodenv-aio] section should be used.

Then all parameters and variables must be adjusted. Once the inventory file has been adjusted, the installation script
is executed.

Note: Have at hand the root password of the host to deploy (remote), since it will be requested the first time that the
deployer installs the App.

sudo ./deploy.sh --docker-deploy

Deployment complete

After a few minutes, the installation process ends with a screen showing the successful completion of the procedure.

6.1. OMniLeads deploy 31


omnileads Documentation, Release develop

Important: After installation is complete, apply a host reboot.

You can proceed with the First access to OMniLeads

OMniLeads behind NAT

OMniLeads behind NAT is when the agents connect to an URL formed by https://external_hostname:external_port,
from Internet.

How you can see in image, the remote users access the App with the URL (domain, port) that resolves in the public IP
of WAN interface of router/firewall.
Then, the firewall must redirect voice and data traffic to UDP ports: 20000-30000 and TCP: 443 of the host hosting
the App.

Important: You must insert two inbound and un outbound firewall rules:
• Forward incoming traffic from ports 20,000 to 30,000 UDP to ports 20,000 to 30,000 on the OMniLeads host

32 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

• Forward traffic from the chosen external port to port 443 of the OMniLeads host
• Permit outbound traffic from OMniLeads to internet, port range: 10000-30000 UDP

Note: You can use public IP instead of hostname

6.1.7 First access to system

Once installed the software, go to this section for the first access:

First access to OMniLeads

To access the OMniLeads system you must enter to:


https://omnileads-hostname or https://omnileads-ip

Note: From release-1.10.0 and above, the web access to OMniLeads can be done usin hostname.domain or IP.

There are three possibilities using hostname:


• 1 - Let the DNS of the network do it: the URL with which administrative users and agents access the App
must be resolved by the DNS.
• 2 - Force resolution using the host file of your OS: it is about configuring each of the workstations that will
access the App an entry in the hosts file in order to resolve the OMniLeads URL with its respective IP of host.
In the case of Windows (C:WindowsSystem32driversetc), On Linux or Mac (/etc/hosts).
• External DNS resolving hostname: this is very common in cloud environments.
Example for Mac or Linux:

When finding the login screen, we just enter with the following credentials: user admin and password admin, as
shown on figure 2.

6.1. OMniLeads deploy 33


omnileads Documentation, Release develop

Note: If the deployment does not have trusted certificates and instead the deploy generated self-signed certificates,
we will find the browser warning, which should be ignored and access the site.

34 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

Note: Luego de ingresar con las credenciales por defecto, podrá cambiar la contraseña del usuario admin.

Important: If you made Docker installation the port 444 is used to the web access, for example:
• https://omnileads-hostname:444
This because FreePBX and Issabel web GUI’s use the classic HTTPS port 443.

6.1.8 FAQ and common errors

Frequent errors

The following are typical problems that arise when performing an installation:

6.1. OMniLeads deploy 35


omnileads Documentation, Release develop

• La instalación finaliza exitosamente, sin embargo al ingresar a la URL tenemos un error o directamente
no aparece la pantalla de login
Verify that you have disabled SELinux and Firewald (Pre-requisitos).
• When executing the deploy script the lecture of the inventory variables fails.
Verify that the variables (TZ, postgres_user, postgres_password, admin_pass, ami_user, ami_pass and TZ) are uncom-
mented and with an assigned value. Although the default values are used (not recommended in production), the line
corresponding to each variable must be uncommented.
• When executing the deploy script the parameter iface fails.
Remember that iface refers to the host’s network interface (eth0, eth1, ens18, ens0s3, etc.).
• The server does NOT have access to the internet / The server does not solve domains
• Timeout failure of some package or repository temporarily unavailable.
In these cases, the deploy must be run again. When using web packages, the temporary unavailability of a repository
or web connection can affect the installation.
• Making a mistake when executing an installation method and architecture type regarding the inventory
file section.
When executing a Self-Hosted or Deployer-Nodes installation of a classic architecture (AIO) or based on containers,
one has to pay special attention to work with the appropriate sections for each combination: [prodenv-aio], [prodenv-
docker] and its lines.
• Failure in the Task associated with RTPengine
This happens when the kernel-devel package has not been installed or the package does not match the kernel version
(Pre-requisitos).

Errors in the Deployer-nodes installation method

• Lack of permissions when executing the deploy script.


Remember that in the deployer the script must be executed with sudo. Remember that packages like sudo, openssh-
server or python-minimal must be installed before running the deploy.sh script.
• The ssh access of the installation target host was not configured correctly.
Check firewall status. Check remote access by ssh with the ** root** user.

Architecture based on docker containers

1. How do I change passwords of docker containers?


There are three important password services:
• OMniLeads web GUI: change the $DJANGO_PASS variable in .env file and restart the omniapp con-
tainer: docker restart oml-omniapp-prodenv
• Postgresql y MySQL: see the section Changes of network parameters (Hostname and/or IP Address) and
changes of passwords of services.
2. The LAN network segment where OML must be deployed is *192.168.15.0/24* or falls within a segment
that encompasses it.

36 Chapter 6. INSTALLATION
omnileads Documentation, Release develop

By default the docker environment is raised with the internal subnet within the mentioned range. Change the SUBNET
variable and use another network segment that does not collide with that of your LAN. This is done in the .env file.
Then restart the omnileads-prodenv service.
3. The environment doesn’t start due to docker-compose tells that there is an used port, what should I do?
There are three of Docker Host used to map ports inside containers, these are:
• WD_EXT_PORT=442 –> mapea con el puerto 8080/tcp del contenedor que aloja el componente Wombat Dialer.
Esto permite acceder a la GUI de WD.
• NGINX_EXT_PORT=444 –> mapea con el puerto 443/tcp en Omniapp para acceder a la GUI de OMniLeads.

6.1. OMniLeads deploy 37


omnileads Documentation, Release develop

38 Chapter 6. INSTALLATION
CHAPTER 7

INITIAL SETTINGS

In this section the essential configuration are shown once an instance of OMniLeads is installed

7.1 Initial configuration

The application is already installed. Therefore, the post-installation configuration steps are discussed in this section.

7.1.1 Roles and permissions

In this section, the Roles predefined in the system can be listed. Besides, the administrator can also customize any of
them, as well as generate his or her own customized Roles for the operation.

39
omnileads Documentation, Release develop

Below, the predefined roles are listed:


• Basic supervisor: the users generated from this role will only be able to list all the campaigns, consult general
reports of agents and calls, and access the supervision of agents and campaigns.
• Supervisor: the users generated from this role will be able to work with all the campaigns (create, modify,
delete and list), access supervision and general reports of calls and agents. They will also be able to create
users and agent groups, but chan only edit or erase agents that are asigned to a campaign the are assigned, find
recordings of their campaigns, list and upload contacts, and access the telephony module where they will be
able to work with some sections.
• Manager: the users generated from this role will be able to perform all the actions of a supervisor and also view
the Audit module.
• Administrator: users generated from this role will have access to the entire system. Only administrators can
edit or erase with Administrator profile
To create a custom Role, you should access the Users and groups module, Roles and permissions section, then indicate
Create role. The new role is assigned a name and then the permissions it will have are marked. In order not to start
from scratch, the user can start from a permissions base of a certain profile and then continue personalizing (adding or
limiting permissions) untiher role is ready.
The creation of a new role is exemplified below:
• Create a new role: create a new role and assign a name to it.

40 Chapter 7. INITIAL SETTINGS


omnileads Documentation, Release develop

7.1. Initial configuration 41


omnileads Documentation, Release develop

One can imitate permissions from a group or apply permissions from an existing group. The difference is that the
first option uses the same permissions, while the second option adds the permissions to those that have already been
checked in the new role.

• Save the new role: finally the new role created is saved.

42 Chapter 7. INITIAL SETTINGS


omnileads Documentation, Release develop

7.1.2 Users

There are two types of users we must differentiate: Agents and Administrative. Agent users are those who manage
communications, while Administrative users manage the application.

Important: Before creating an Agent user there must be at least one Group of Agents.

To create a user one must access the section Users → New Users.

7.1. Initial configuration 43


omnileads Documentation, Release develop

A form will be displayed to be completed with the data of the new user.

7.1.3 Groups of Agents

In this section the agent groups are managed. These groups will be invoked in different modules of the system, such
as when assigning users to campaigns, in the extraction of reports or in the supervision module.
Create agents group

The fields displayed are:


• Name: is the name desired to assign to the agents group.
• Auto_unpause: to understand this parameter we must first explain that in OMniLeads after each call (of any
nature) processed by an agent, the agent is forced to enter an ACW (after call work) pause, in which he or she
remains inactive for the assigned campaigns. This allows the agent to complete the qualification of the current
call and continue operating. In order to leave this system-induced pause there are two possibilities, and that is
where our parameter comes in. If one leaves the value at 0 the agent must explicitly exit the pause to continue
operating. But, if one assigns a number (for example 5 seconds), the system will automatically return the agent
online after the assigned seconds (as indicated in this parameter).

44 Chapter 7. INITIAL SETTINGS


omnileads Documentation, Release develop

• Auto_attend_inbound: if this value is checked, the calls coming from inbound campaigns will be connected to
the agent without providing the possibility of notification (Ring) nor the option to attend by the agent.
• Auto_attend_dialer: if this value is checked, the calls from campaigns with predictive dialer will be connected
to the agent without giving the possibility of notification (Ring) nor the option to attend by the agent.

7.1.4 Add audio packages in other languages

The generic audios that the external agents or telephones will listen to come by default in English, being configurable
in the incoming or outgoing routes, so that if the telephone channel meets any indication through generic audio within
the flow of a call, it could be reproduced according to the indicated language.
If the instance needs to use other languages, they can be installed through the Telephony Module in the Audio packages
section, where new languages can be added.

7.1.5 Music on hold

Within the Telephony module, the Music on Hold section allows one to manage playlists with files in the Wav 16 bit
format. The lists generated can be used in incoming campaigns when putting callers in a queue. Playlists that are
being used in a campaign or have assigned files cannot be removed.

7.1. Initial configuration 45


omnileads Documentation, Release develop

Once a new list is created, the desired music must be added through .wav format files to be loaded from your computer.
Only playlists that have at least one music loaded will be available for use in incoming campaigns.

7.1.6 Create agent pauses

The agents can enter a pause whenever they want to be unavailable for the call processing, this prevents that an
incoming or dialed campaign assigns a new call. Also pause states are useful for recording productivity and measuring
agent session times.
Pauses can be generated by supervisors and are classified as Recreational and Productive pauses.

46 Chapter 7. INITIAL SETTINGS


omnileads Documentation, Release develop

At the time of presenting the agent sesión reports, the totalized pauses are divided in recreative pauses and productive
pauses. This allows measure the productivity of our agents in a more exact way.

7.1.7 First agent login

Important: Have in mind that to obtain successful login, you must have an available MICROPHONE: in the
workstation where the agent is going to work. Otherwise the login could be flawed.

Once we access with our agent, if everything goes well we should run into a popup which request the permission to
take control of the microphone, ass illustrated in Figure.

7.1. Initial configuration 47


omnileads Documentation, Release develop

When allowing the permission, we should listen to an audio that the system reproduces indicating the successful login
and also the agent screen should look like figure.

48 Chapter 7. INITIAL SETTINGS


omnileads Documentation, Release develop

7.1.8 Instance registry

This step is not mandatory since the system can work perfectly without registering. However, it is necessary to have
the registered instance when acquiring an Addon or when subscribing the platform to the manufacturer support.
Finally, for those certified integrators (those who have approved the official OMniLeads certification program), after
registering the instance, the installation can be signed with the certification code. Thus, visibilizing that the platform
has been deployed and configured by an IT admin certified by the manufacturer.

The fields here must be filled after that you will receive an email with the instance key

7.1. Initial configuration 49


omnileads Documentation, Release develop

After that, every time you go to Register section you will see this.

The registration process asks for required values like username, email address and password, making optional the
phone field.
Once the OML instance is successfully registered, an email is sent to the address entered. In case you want to get the
email again you can use the “Resend” button.
Is important to note that if you want register several OML instances with the same email address you must enter the
same password. In other cases you should use a different email address.

7.1.9 Commercial addons available

The system shows information about the commercial addons available using this page:

50 Chapter 7. INITIAL SETTINGS


omnileads Documentation, Release develop

From here making click in the addons names you can access to its sites and for adquire them and installing in your
current instance

7.1. Initial configuration 51


omnileads Documentation, Release develop

52 Chapter 7. INITIAL SETTINGS


CHAPTER 8

PSTN ACCESS CONFIGURATION

OMniLeads through web configuration, ease the posibility of maintain SIP trunks to access the PSTN. This trunks are
invoked by the routing rules of outbound calls, where it can be specified which tye of calls are processed by each SIP
trunk. Also, the trunks can be configured in failover mode
To go deeper it’s recommended to read the rest of the chapter.

8.1 Telephony module configuration

In this section the necessary configurations to be carried out so that our App can interact with the PSTN
(public telephone network) are exposed, so that the agents can take calls from abroad as well as dial calls
to external telephones.

Important: OMniLeads admite solamente SIP como tecnología de interconexión con otros conmuta-
dores de telefonía. Por lo tanto el integrador podrá configurar troncales SIP de proveedores ITSP, troncales
SIP contra sistemas PBX y/o troncales SIP contra Gateways FXO y/o E1/T1.

8.1.1 SIP Trunk Configuration

To access the trunks configuration you should click (Telephony -> SIP Trunks) and there add a new PJSIP
trunk. A form similar to the one on figure will be displayed.

53
omnileads Documentation, Release develop

The form blanks are:


• Trunk Name: the name of the trunk. Must be alphanumeric without spaces or special characters
(eg Trunk_provider_a).
• Number of channels: is the number of channels allowed by the link.
• Caller id: the number with which the calls will go through the trunk.
• SIP details: SIP parameters are provided in this text field using Asterisk PJSIP configuration Wizard
syntax.
Here are some suggested templates for the types of scenarios presented as typical OMniLeads use cases.

General SIP Trunk parameters

As well anticipated PJSIP is the module that implements SIP for this kind of trunks. But also the syntax
chosen to generate the configuration at the Asterisk conf is pjsip wizard.

Important: We must remember very well that OMniLeads does NOT use port 5060 as the port for SIP
trunks. Port 5060 is used by Kamailio in its WebRTC work in sessions against agents. When generating a
SIP trunk between OML and a SIP or PBX provider, we must know that the ports to be used are and vary
according to the scenarios described below.
• Port 5161 for trunks where we must NOT warn the public IP. That is, where there is no NAT
involved.
• Port 5162 for trunks where we MUST warn the public IP, since they willaffect with NAT the SIP
packets that leave OML.
• Port 5163 for trunks used in OML architecture over Docker containers.

The following scenarios are proposed for OMniLeads instances and their connection to a SIP provider
with termination to the PSTN.

OMniLeads behind NAT

Under this scenario we have the possibility of the App deployed on a Cloud provider going out to the
Internet through a gateway. The NAT also affects the deployment of an on-premise instance in a corporate

54 Chapter 8. PSTN ACCESS CONFIGURATION


omnileads Documentation, Release develop

LAN in which the Internet is routed through the company’s router using a Public IP to perform the NAT
on the packets generated from OMniLeads to the SIP provider.

Here, Asterisk uses the UDP port 5162 since it is the port that implements the fact of warning in the
REQUEST or RESPONSE SIP the Public IP with which the packets will go abroad and reach the other end
of the SIP trunk. This adaptation of the mentioned packets is done at the SIP (signaling) and SDP (media
negotiation) levels. Therefore, the external recipient of the packets does not realize that our Asterisk is
behind NAT. The packets assembled arrive with the public IP of the network device that performs NAT
on the sent packets.
For this scenario see the template PJSIP configuration Wizard which is an example to see.

type=wizard
transport=trunk-nat-transport
accepts_registrations=no
accepts_auth=no
sends_registrations=yes
sends_auth=yes
endpoint/rtp_symmetric=yes
endpoint/force_rport=yes
endpoint/rewrite_contact=yes
endpoint/timers=yes
aor/qualify_frequency=60
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/context=from-pstn
remote_hosts=****IPADDR-or-FQDN:PORT****
outbound_auth/username=****YOUR SIP_USERNAME****
outbound_auth/password=****YOUR SIP_PASSWORD****

The last three parameters have to do with the data that the provider provides us when contracting the
service. That is, the address or FQDN and corresponding port of its SIP Server where to shoot our
REGISTER to register the trunk or INVITE when sending outgoing calls. In addition, the username and
password values with which the provider authenticates those REQUEST are available.
Regarding the rest of the parameters, we will emphasize:

transport=trunk-nat-transport

This parameter indicates the Asterisk PJSIP stack that it must warn the public IP and public port with
which the SIP packets will leave when reaching the provider’s SIP-Server.
The next 4 parameters allude to the fact that typically under this scheme OMniLeads does not request
authentication from the SIP provider in case of incoming calls, but must authenticate when sending calls
to the provider and that it must also send a recurring register to be able to be reached by the SIP provider
when connecting incoming calls. We are specifically talking about the parameters and their values:

8.1. Telephony module configuration 55


omnileads Documentation, Release develop

accepts_registrations=no
accepts_auth=no
sends_auth=yes
sends_registrations=yes

The following three parameters have to do with the codecs to use, the protocol used for the DTMF ex-
change. Finally the entry point (dialplan context) of the calls that arrive through the trunk.
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/context=from-pstn

Important: When declaring the SIP trunk at the other end, keep in mind that OMniLeads will use the
SIP UDP port 5162 in these NAT environments.

OMniLeads in environments without NAT

Under this scenario, we have the possibility of the App deployed on a VPS with a public IP whose SIP
provider is also on a public IP. Therefore, there is no NAT. This scenario includes a deployment performed
on a corporate LAN (on premise) connecting to the Internet through the company’s Router or using a SBC
or PSTN-GW, which is in charge (among other things) of the NAT issue.

SIP trunk on the Internet

As in the previous item, a SIP provider available on the Internet is proposed. Its public IP is now reached
without the affection of the NAT, since OMniLeads is available with a public IP. Just as before, the
provider facilitates us with the IP or FQDN of the SIP Server to which we must send all the REQUEST,
on the one hand, and a username and password to authenticate them, on the other.

For this scheme we analyze the PJSIP configuration Wizard template that is proposed to complete with
your data:
type=wizard
transport=trunk-transport
accepts_registrations=no
accepts_auth=no
sends_registrations=yes
sends_auth=yes
endpoint/rtp_symmetric=yes
endpoint/force_rport=yes
(continues on next page)

56 Chapter 8. PSTN ACCESS CONFIGURATION


omnileads Documentation, Release develop

(continued from previous page)


endpoint/rewrite_contact=yes
endpoint/timers=yes
aor/qualify_frequency=60
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/context=from-pstn
remote_hosts=****IPADDR-or-FQDN:PORT****
outbound_auth/username=****YOUR SIP_USERNAME****
outbound_auth/password=****YOUR SIP_PASSWORD****

The only parameter that changes with in regard to the examples with NAT is:

transport=trunk-transport

Where the use of a PJSIP transport is indicated, where the packets simply flow through the UDP 5161
port without any NAT treatment.

Corporate SIP Trunk

Under this classification we have SIP link providers that arrive with their own connectivity backbone to
the physical location where the data center is located. In this scenario it is frequent that the provider does
not request authentication or registration. Besides, when making calls on the provider’s private backbone
the NAT issue is no longer a problem to be solved.

For this scenario see the template PJSIP configuration Wizard which is an example to see.

type=wizard
transport=trunk-transport
accepts_registrations=no
accepts_auth=no
sends_registrations=no
sends_auth=no
endpoint/rtp_symmetric=no
endpoint/force_rport=no
endpoint/rewrite_contact=no
aor/qualify_frequency=60
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/timers=yes
endpoint/language=es
endpoint/context=from-pstn
remote_hosts=****IPADDR-or-FQDN:PORT****

8.1. Telephony module configuration 57


omnileads Documentation, Release develop

The last two parameters have to do with the data that the provider facilitates us. That is, the IP / FQDN
address and corresponding port where we should fire our REQUEST. Keep in mind that under this scheme
we assume that the SIP provider does not authenticate us via SIP, therefore we do not use username or
password.
Once again the transport = trunk-transport is used, implying that NAT is not affected.
The rest of the parameters were already discussed in the previous case.

OML SIP trunk with PBX on LAN

A highly implemented scheme has to do with the SIP trunk connection between OMniLeads and the
company’s PBX. Under this modality, access to the PSTN is provided by the central PBX. The outgoing
calls to the PSTN are made through the SIP trunk to the PBX and then the latter is in charge of routing
the calls to the specific destinations through their links to the PSTN.
Under this configuration, a company can deploy a Contact Center App fully integrated with its central
PBX.

The template PJSIP configuration Wizard that is proposed to be completed according to the configuration
generated on the IP-PBX side is:

type=wizard
transport=trunk-transport
accepts_registrations=no
sends_auth=yes
sends_registrations=no
accepts_auth=yes
endpoint/rtp_symmetric=no
endpoint/force_rport=no
endpoint/rewrite_contact=no
endpoint/timers=yes
aor/qualify_frequency=60
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/context=from-pbx
remote_hosts=****IPADDR-or-FQDN:PORT****
inbound_auth/username=****SIP_USER PBX -> OML****
inbound_auth/password=****SIP_PASS PBX -> OML****
outbound_auth/username=****SIP_USER OML -> PBX****
outbound_auth/password=****SIP_PASS OML -> PBX****
endpoint/from_user=****SIP_USER OML -> PBX****

58 Chapter 8. PSTN ACCESS CONFIGURATION


omnileads Documentation, Release develop

Outgoing calls (from OMniLeads to the PBX) and incoming calls (from the IPPBX to OMniLeads) are
proposed to be authenticated via SIP. That explains the following parameters and their values:
• sends_auth=yes
• accepts_auth=yes
• remote_hosts=****IPADDR-or-FQDN:PORT****
• inbound_auth/username=****SIP_USER PBX -> OML****
• inbound_auth/password=****SIP_PASS PBX -> OML****
• outbound_auth/username=****SIP_USER OML -> PBX****
• outbound_auth/password=****SIP_PASS OML -> PBX****
• endpoint/from_user=****SIP_USER OML -> PBX****
We take for granted the interpretation of the parameters from their suggestive names. We also highlight
the fact of not involving any SIP registration -either from OMniLeads to the PBX or the other way around-
since both systems are on a LAN network and with an IP address or assigned FQDN.
On the other hand, the parameters transport=trunk-transport and endpoint/force_rport=no not tell us
that any type of NAT treatment is applied to the SIP packets generated from OMniLeads.
Finally the parameter related to context endpoint/context=from-pbx indicates that the calls from the
PBX have an access point different that calls from PSTN, because using the context from-pbx you can
call and transfer between OMniLeads agents and PBX extensions.

Important: When declaring the SIP trunk at the other end, keep in mind that OMniLeads will use SIP
UDP 5161 port in these NAT-free environments.

PJSIP custom trunk

Here the Administrator will be able to customize his or her own PJSIP wizard configuration. Beyond the
templates provided, the Administrator always has the possibility of adjusting the configuration according
to the specific scenario and to the particularities of each case. It is therefore highly recommended to fully
comprehend the parameters of the Asterisk PJSIP stack due to their high level of customization.

8.1.2 Outbound calls routing configuration

OMniLeads allows to manage the outbound call routing on several SIP trunks (created previously), so
using criteria like the lenght or number prefix to determine which SIP link use to route the call. It is also
possible to maintain a failover logic in terms of SIP trunk.
To access the ABM of outbound routes enter the menú point (Telephony -> Outbound routes)

8.1. Telephony module configuration 59


omnileads Documentation, Release develop

Figure 2: Outbound route


• Name: is the route name (alphanumeric without spaces)
• Ring time: is the time (in seconds) that calls made of this route, will attempt to stablish a conection
with the destination, before continuing to try the next trunk or discard the call.
• Dial options: are the “dial” application options used by Asterisk(r) in a low level.
• Patrones de discado: mediante patrones, se puede representar los tipos de llamadas que serán
aceptadas por la ruta y así entonces colocadas sobre el Troncal SIP para finalmente alcanzar el
destino deseado.
To understand how the digits with patterns are represented, it is recommended to read this link: https:
//www.voip-info.org/asterisk-extension-matching/.
Within each pattern entered there are three fields:
• Prepend: are the digits sent to the SIP trunk as additionals to the dialed number. In other words, they
arrive at the Trunk positioned in front of the dialed number.
• Prefix: are the digits that can come as a “prefix” of a dialed call and will be removed at the time of
sending them by the SIP Trunk.
• Dial pattern: this field seeks to represent the patern of authorized digits that the route will proccess
for and send to a SIP trunk to take the call out.
• Trunks sequence: are the SIP trunks on which the outbound route will attempr to stablish the dialed
call by OML. If the call fails in a trunk, will attempt again in the next one.

8.1.3 AMD Module configuration

The Asterisk AMD module, can be configured in OMniLeads using the followinginterface:

60 Chapter 8. PSTN ACCESS CONFIGURATION


omnileads Documentation, Release develop

Figura 2: Página de configuración de AMD

8.1.4 Configuration scheme for call recordings filenames

The following section allowd configure the format that will have the names of recordings files on the
system
The selection of some of the options shown in the page will impact directly on the name of recording files
Note: notice that the Agent ID as a variable is not available for inbound campaigns or dialer campaigns

Figure 2: Recordings scheme page

8.1. Telephony module configuration 61


omnileads Documentation, Release develop

8.1.5 Inbound calls routing configuration

The operation of incoming calls will be covered in the Incoming Campaigns section of this documenta-
tion since in order to operate with said module we should at least have created some object (IVR, time
conditional, incoming campaign, etc.) to where to route each generated DID.
Inbound routes.

62 Chapter 8. PSTN ACCESS CONFIGURATION


CHAPTER 9

CAMPAIGNS

The processing of communications between the “outher world” and an OMniLeads’s agent is encapsulated in a cam-
paign. In this chapter all about the management of Inbound and Outbound (manual, preview and dialer) campaigns is
covered.

9.1 Telephone Campaigns

A campaign represents a Contact Center operation that groups:


• An agent group processing phone calls in one direction (outbound or inbound)
• A contact base associated with the campaign.
• A dispositions list that are displayed when classifying the callprocessed by the agent.
• One or more forms to be launched in case the agent assigns a engage disposition associated with any
of the forms on the call in progress the form is displayed by said engage disposition and the agent
can complete it according to the contact details of the ongoing call.
Figure 1 shows a campaign and its components.

63
omnileads Documentation, Release develop

Figure 1: the campaigns elements


The fact of working with campaigns allows Supervisor or Administrator user profiles to focus metrics and
reports, as well as real-time monitoring or search for recordings, among other actions, using campaigns
as a filtering criteria. We can have different campaigns of different nature (predictive, preview, incoming
or manual), living simultaneously in OMniLeads and leaving records about the calls transacted by the
agents.

64 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 2: Campaigns, agents, supervisors and backoffice

9.1.1 Dispositions

Dispositions form a list of tags available to be assigned to any campaign, so that agents can classify each
call within a campaign, with any of these dispositions.
Dispositions are defined by the supervisor or administrator and can be related to several aspects, for
example:
• The telephone call result (busy, no answer, wrong number, voicemail, etc.)
• The result of an interaction in a call answered (sale, survey completed, schedule call, etc.)
Dispositions can be totally arbitrary and to generate them you must enter the screen*Campaigns → Call
Dispositions → New Call Dispositions*.
We can list the ratings generated within Campaigns → Call Dispositions → Call Dispositions

9.1. Telephone Campaigns 65


omnileads Documentation, Release develop

Figure 3: Call dispositions

9.1.2 Campaign contact database

Contact databases are used in outbound campaigns but can also be used by incoming campaigns. In the
context of outbound campaigns, the data required by the predictive or preview dialer is provided by the
contact base affected to the campaign, while in incoming campaigns they provide the complementary data
to the phone number that is displayed on the agent’s screen every time a call comes in.
Contact databases are provided in CSV format files with fields separated by a comma and also generated in
the UTF-8 encoding (excluding requirement). There must be at least one column that contains a telephone
for each contact (record) of the file, the rest of the columns can contain any content, generally each
record has complementary data to the main telephone. This data is displayed on the agent screen when
establishing a communication between both (agent and base contact).

Figure 4: Contacts CSV file - text editor view

66 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 5: Contacts CSV file - libreoffice excel view


A contact base (csv) is available, to proceed with the the loading of the file into the system by accessing
the menu item; Contacts → New contacts database

Figure 6: New contact database


It should be indicated with a check, which columns are the ones that store phones, as indicated in figure
7.

9.1. Telephone Campaigns 67


omnileads Documentation, Release develop

Figure 7: Tel check


Finally, the form is saved and the CSV file is now available as a system contact database available for any
campaign.

9.1.3 Restriction configuration for Contacts fields

Sometimes Agents should not be able to see or edit certain fields of the database contacts. For this cases,
restrictions over this fields can be set entering the option “Restrict contacts fields” from the campaign’s
list.

Figure 8: Restrict contacts fields option


In this screen the fields to block or hide to the agents must be selected. Only the fields selected as blocked
can be selected as hidden. The main phone field can’t be set as hidden.

68 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 9: Selecting contacts fields for blocking or hiding


When an Agent is to edit a contact the hidden fields will not be present and the fields set as blocked (and
not hidden) will be disabled for edition. When creating a contact, the fields set only as blocked will be
enabled for only this first time.

Figure 10: Restricted and hidden contacts fields

9.1.4 Forms

Campaign forms constitute the default method to collect information (relevant to the campaign) in the in-
teraction with the person behind an established communication. They are designed by the user combining
in a static view different types of fields (text, date, multiple selection and text area), being able to order
them according to the need of the campaign.
To create forms you must access the menu item; Campaigns → New form

9.1. Telephone Campaigns 69


omnileads Documentation, Release develop

Campaign forms may contain field types like


• Text
• Date
• List
• Text area box
Figure 8 exemplifies a campaign form creation.

Figure 11: New campaign form


We can generate a sample satisfaction survey form with the appearance of figure 9.

70 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 12: Survey campaign form

9.1.5 Campaigns, Dispositions & Forms

To explain the relationship between these components, we must remember that multiple forms can be
assigned to a campaign. The idea is that different dispositions of a campaign can trigger different forms,
thus allowing the ability to collect through previously designed forms, information associated with the
interaction between the OMniLeads agent and the person at the other end of the communication within
the campaign.
It is important to explain conceptually how campaign forms are used in OMniLeads. We must clarify that
in the context of a campaign when assigning ratings, it will be possible to define normal and engaged
disposition. The latter are the ones that trigger the campaign forms.

9.1. Telephone Campaigns 71


omnileads Documentation, Release develop

Figure 13: Call dispositions inside campaign


In the figure 10 example, we have two engaged dispositions, on the one hand the Survey on demand client
disposition that triggers the Survey on demand form, and on the other the Survey disposition that triggers
the Survey clients form.
Whenever there is an active call between an OMniLeads agent and a contact at thecampaign contact
database, the agent has the complementary data to the contact’s phone on their screen next to the disposi-
tion selection combo for the current contact. If the agent selects and saves a engaged disposition then the
form associated with the engaged disposition within the campaign is triggered on the agent screen.

72 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 14: Engaged dispostions and forms

9.1.6 Manual Campaigns

Within this subsection the step-by-step example of how to manage Manual Campaigns is exemplified.

Manual Campaigns creation

To create a new manual campaign you must enter the menu item Manual Campaigns -> New Campaign.
The first stage invites us to indicate a series of campaign parameters, as indicated in Figure 1.

9.1. Telephone Campaigns 73


omnileads Documentation, Release develop

Figure 1: Campaigns parameters


• Name: Campaign name
• Contact database: it is used to display extra data to the phone number, when executing a call to a
campaign contact.
• External system: Selects the external CRM that will execute the requests against OML (External
System)
• ID on external system: the campaign ID in the external system from where the click to call or
disposition request will be sent.
• Type of interaction: configures wether the campaign will use OMniLeads’s forms or launch a
request towards a CRM por every connected call.
• External URL: in case of selecting an external URL request launchfor each call, this parameter sets
wich of the defined CRMs shall the campaign use.
• Outbound Routes: An existing outbound route is assigned to an campaign.
• CID on Outbound Routes: This field must contain the CID assigned for an existing outbound route
to a campaign.
• Enable recordings: enable the recording of all calls that are placed through the campaign.
• Scope: it is defined as the amount of engaged dispositions expected for the campaign. In the cam-
paign monitoring, the percentage of the campaign’s arrival with respect to the defined objective is
shown in real time.

Note: Regarding the contact base in manual (and also incoming) campaigns, it poses a flexible scenario,
since it is optional to assign a contact database to this kind of campaign. In this case, the contact database
is used if we want that each time an agent dials a telephone that corresponds to a contact in the database,
the data (extra columns to the telephone) can be retrieved from it. In addition to working with a contact
base in a manual campaign allows you to rate each contact called.

On the second screen, the dispostions required for agents to classify each call made to the contact must
be assigned.As can be seen in Figure 2, in our example we handle two ratings that trigger two different
forms.

74 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 2: Call dispositions


In the following steps you can add supervisors and agents to our campaign

9.1. Telephone Campaigns 75


omnileads Documentation, Release develop

Figure 3: agent assignment

Agent-campaign interaction

Finally, we have our new manual campaign, so when an agent assigned to it makes a login to the platform
and starts dialing calls from your webphone, the system will allow you to select the campaign on which
you will assign each generated manual call from the webphone, as shown in figure 4.

76 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 4: Manual call camp selection


When an agent is online and dials a phone corresponding to a contact at the campaign database, the contact
whose phone matches the phone dialed by the agent is displayed as a contact to select and thus display
their data on the agent screen, it is also allowed to generate a new contact. Then the agent can either
confirm that the call is triggered towards the listed contact or also create a new contact and dial it. The
contact information (extra phone) is displayed on the agent screen.

Figure 5: Contact selection


If you select to call the contact listed, then the data is displayed on the screen, as shown in Figure 6.

9.1. Telephone Campaigns 77


omnileads Documentation, Release develop

Figure 6: Contact data


In this way the agent can assign a rating on the called contact; figure 7.

Figure 7: call disposition for contact


On the other hand, if the dialed telephone does not correspond to any contact of the database, then the
system allows the agent to search for the contact in the database or generate a new contact. In the case of a
campaign without a contact database, then each call made by an agent implies that the contact associated
to the dialed call is generated (figures 5 and 6).

78 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 8: new contact add to campaign database 1

Figure 9: new contact add to campaign database 2


Then at the time of dialing a number that does not return a contact, the agent will go through a view in
which the agent must first add the contact as a record of the campaign base and then dial. Finally, the new
contact and the option to classify the call with some qualification are displayed (figure 10).

9.1. Telephone Campaigns 79


omnileads Documentation, Release develop

Figure 10: new contact called

Multinum contact database

As we know, OMniLeads admits that each contact of a database has n telephone numbers, so that if the
contact is not found in its main number (the first of our database CSV file), it can be contacted at the other
phone numbers. In this case, each telephone number (which we indicate in the database load) is generated
as a link within the contact data presented on the agent screen. Clicking on that link triggers a call to the
extra telephone number of the contact. Figure 11 shows this scenario.

Figure 11: Multinum contact database


Therefore, the agent can try to contact all available numbers as a link in the contact form, until finally
selecting a disposition and moving to a new one.

80 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

9.1.7 Preview Campaigns

Within this subsection the step-by-step example of how to manage Preview Campaigns is exemplified.

Preview campaigns creation

To create a new preview campaign you must enter the menu item Preview Campaigns -> New Campaign.
The first view invites us to indicate a series of campaign parameters, as indicated in Figure 1.

Figure 1: Campaigns parameters


• Name: campaign name
• Contact database: contact database that the preview dialer will use when delivering on demand
contacts to each agent.
• External system: external CRM system linked to launch click to call actions or dispositions on
campaign contacts, through the API.
• ID on external system: this field must containe the ID of the campaignin the external system from
where the click to call or contact disposition requests will be triggered.
• Type of interaction: sets if the campaign will work with OMniLeads forms or make a request to
the CRM for each connected call.
• External URL: in case of selecting an external URL interaction, this fields sets wich CRMs must
the campaign trigger.
• Enable recordings: Enable all campaign calls to be recorded.
• Outbound Routes: An existing outbound route is assigned to an campaign.
• CID on Outbound Routes: This field must contain the CID assigned for an existing outbound route
to a campaign.
• Scope: it is defined as the amount of engaged dispositions expected for the campaign. In the cam-
paign monitoring, the percentage of the campaign’s arrival with respect to the defined objective is
shown in real time.

9.1. Telephone Campaigns 81


omnileads Documentation, Release develop

• Disconection time: time that the preview dialer reserves a contact assigned to an agent, after that
time the contact is released so that it can be sued by another agent.
On the second screen you must assign the dispositions that are required as available to the agents when
classifying each call to each contact.

Figure 2: Call dispositions


Then it remains to assign the supervisors and agents who can work on the campaign. An assignment of
agents to a campaign is exemplified in Figures 3 and 4.

Figure 3: supervisor assignment

82 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 4: agent assignment


Finally, in the final wizard step is allowed, optionally realize a pre-assignation of contacs to agents. This
operation can be made using two variants
The fist way is shown in the next figure:

Asignación de contactos

If the user select the assign proportionally option, the system will make an initial assignation of contacts
to agents on the same proportion allowing send to the current agent only from his lists of pre-assigned
contacts or free contactos. See this distribution on Django admin in the following picture.

9.1. Telephone Campaigns 83


omnileads Documentation, Release develop

At the moment of select the proportionally pre-assignation the system shows the random selection

This option allows that the contacts could be assigned in random order to the agents, as is shown next:

Finally our campaign is available to start operating. Therefore, when the agents assigned to it perform a

84 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

login to the platform, they should have the preview campaign as shown in Figure 5.

Figure 5: Preview agents view

Agent-campaign interaction

If an agent clicks on the phone then the call is triggered, the data (extras to the phone) of the called contact
is displayed, in the agent view allowing the agent to classify the call with any of the ratings assigned to
the campaign.

Figure 6: Contact called

Campaign with Multinum database

As we know, OMniLeads admits that each contact of a database has n telephone numbers, so that if the
contact is not found in its main number (the first of our database CSV file), it can be contacted at the other
phone numbers. In this case, each telephone number (which we indicate in the database load) is generated

9.1. Telephone Campaigns 85


omnileads Documentation, Release develop

as a link within the contact data presented on the agent screen. Clicking on that link triggers a call to the
extra telephone number of the contact. Figure 11 shows this scenario.

Figure 7: Multinum contact database


Therefore, the agent can try to contact all available numbers as a link in the contact form, until finally
selecting a disposition and moving to a new one.

Management of contacts assignments

Once the campaing is created the available contacts for every agent will be assign following an or-
der established on the model AgenteEnContacto, this feature allows edit that order using the exporta-
tion/importation of .csv files
La idea es que el administrador puede descargarse el orden actual de contactos hacia un archivo .csv,
reordenar las filas y luego importar dicho archivo con lo cual el nuevo orden se impacte en el orden de la
asignación de contactos a agentes en la campaña.
This feature is accessible using the preview campaign menu
See figures 8 and 9

86 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 8: Access to reorder contacts assignments page

Figure 9: Reorder contacts assignments page


Also, is possible to tag contacts as disabled, which will not delivered to any agent
This is posible by defining a deactivation field for the campaign choosing between the data colums in
contacts database
Figure 10: Deactivation contacts field

9.1. Telephone Campaigns 87


omnileads Documentation, Release develop

After make current contacts order exportation is possible to edit the deactivation field column with values
0 or FALSE wich, after importation of.csv file will indicates to the system to not deliver this contacts to
any agent.Any other value different to 0 or FALSE makes the system can deliver the contact.

9.1.8 Predictive dialer campaigns

Within this subsection the step-by-step example of how to manage Predictive dialer Campaigns is exem-
plified.

Presentation

OMniLeads makes campaigns with automatic call dialing available through a predictive dialer.

Important: The automatic dialer functionality is not provided within the GPLV3 base components, to
use this type of campaigns the integration with Wombat Dialer. is contemplated. The use of this software
is subject to the acquisition of the corresponding license with the software manufacturer.

Having clarified the theme of the engine dialer component, we proceed with the explanation of the neces-
sary steps when generating a campaign with predictive dialing.

Dialer campaign creation

Enter the Campaigns menu -> Dialer Campaigns -> New Campaigns where a sequence of configura-
tion stages are displayed.
The first stage looks like figure 1.

88 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 1: Campaigns parameters


• Name: campaign name
• Show campaign name whe reciving call: it can be enabled so that each call connected by the dialer
to the agent implies notification of the name of the campaign associated with that call.
• Initial date: date on which, while the campaign is active and with agents connected, it will start
dialing.
• End date: date on which the dial will stop dialing no matter how many numbers remain unmarked.
• Contact database: the contact database that the dialer uses to make contacts and generate calls.
• Interaction class: select if the campaign will use a campaign form or will launch an http-request to
an external CRM system.
• External URL: URL (http-request) to be triggered each time the dialer connects a call to an agent.
• External system: external CRM system linked to launch click to call actions or dispositions on
campaign contacts, through the API.
• ID on external system: ID of the campaign in the external system from where the click to call or
disposition requests will be sent.
• Outbound Routes: An existing outbound route is assigned to an campaign.
• CID on Outbound Routes: This field must contain the CID assigned for an existing outbound route
to a campaign.
• Scope: it is defined as the amount of engaged dispositions expected for the campaign. In the cam-
paign monitoring, the percentage of the campaign’s arrival with respect to the defined objective is
shown in real time.
Once these fields are completed, you must click on the Next button, to continue with the campaign con-
figuration.
The next stage establishes more parameters that model the campaign behavior, as shown in Figure 2.

9.1. Telephone Campaigns 89


omnileads Documentation, Release develop

Figure 2: Campaigns parameters


• Max amount of calls: number of calls that are allowed to be queued while waiting for the availabil-
ity of an agent. Above that number, the call will be sent to the failover destination.
• Wrapup time: It is the rest time (in seconds) that each agent has between each call connected by
the dialer.
• Service level: It is a parameter to measure how many of the calls were connected to an agent within
that time slot (in seconds).
• Distribution strategy: call distribution method that the campaign on agents will use. For outbound
campaigns, RRmemory is recommended.
• Campaign priority: it is a linear parameter (1 to 10), which implies how important are the calls
of this campaign with respect to others. Set priorities for agents working in several campaigns
simultaneously. If the value is left at * 0 * (by default), equity is maintained with the rest of the
campaigns.
• Waiting time: It is the time (in seconds), that the call contacted will be queued, waiting for an agent
to be released to connect it.
• Enable recordings: Enable all campaign calls to be recorded.
• Answer Machine Detection: enable answering machine detection.

90 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

• AMD audio play: You can indicate the playback of an audio if an answering machine is detected.
For audio to be available, it must be pre-loaded from the Audios menu> New audio
• Predictive mode activate: The dialer offers a configuration that makes it possible to review statistics
on the effectiveness of the campaign during its performance. Depending on these results, the number
of calls generated by available agent will be varied in such a way as to avoid dead times between
each calls assigned by the dialer to each agent.
• Factor de boost inicial: Indicates the value by which you want to multiply the predictive behavior.
For example: if the dialer detected that it can make three calls simultaneously because it is the result
of the successful communications statistics, by placing 2 in the initial boost factor, the dialer is asked
to double that value and then make six calls at once.
• Failover dst: destination to where calls that have expired (timeout)
After completing all the fields, click next
On the this stage you must assign the dispositions that are required as available to the agents when classi-
fying each call to each contact.

Figure 3: Campaigns parameters - call dispositions


We arrive at the configuration that determines what days of the week and the time of day which this
campaign can place calls (always within the range of dates established in the first step of creating the
campaign).

9.1. Telephone Campaigns 91


omnileads Documentation, Release develop

Figure 4: Campaigns parameters - days and hours


Now the reschedule rules are configured, that is how the dialer tries to call numbers whose contact attempt
was failed: Busy, Answering Machine, No Answer, temporarily out of coverage, etc.

Figure 5: Campaigns parameters - days and hours

92 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

The fields completed allow you to determine how many times it should retry to establish communication
and how many seconds after an failed try, the dialer should retry to call.
Callstatus that can be retried automatically dial are:
• Busy
• Answer machine
• Phone not answer
• Call rejected (Rejected): when the call could not be carried out due to problems inherent to the
external telephone network.
• Timeout: when the call was contacted, it was connected but no agent was free to handle it.
Finally we go to the last stage

Figure 6: Campaigns parameters


In this step, three options are simply indicated:
• Evitar duplicados: Select this option to avoid uploading records with the duplicate main phone to
the dialer.
• Evitar sin teléfono: select this option to avoid uploading contact base records that do not have a
primary telephone to the dialer.
• Prefijo: This field is used to indicate to the dialer the prefix that must be placed before each number
of the contact base at the time of dialing the campaign calls.
Finally we go to the last stage

Campaign activation

The newly created campaign appears in the incative state (figure 7), in the list of predictive campaigns.

9.1. Telephone Campaigns 93


omnileads Documentation, Release develop

Figure 7: Inactive campaign


The administrator must activate the campaign manually.

Figure 8: Activate camp


After activating the campaign, it should appear in active campaign list (figure 9)

Figure 9: Active campaigns

94 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

As soon as an agent assigned to our predictive campaign login within the active date and time range of the
campaign, then the dialer can start generating calls and deliver these to the agents active in the campaign.

Predictive dialer campaigns completion

To determine when a predictive campaign is without records to be dial, the status of the campaign must
be checked by clicking on the name of the campaign (figure 10).

Figure 10: Campaign pending calls


If the value of pending calls is set to zero, the campaign must be terminated (figure 11).

Figure 11: Finish dialer campaign


The campaign goes to the list of * Campaigns finished*.

Recycling and rotation of contact databases

When a predictive campaign runs out of pending records to call its contact base, that campaign can be
reused through two possibilities:
• Recycle the contact base

9.1. Telephone Campaigns 95


omnileads Documentation, Release develop

This option allows the administrator to select contacts from the base with certain dispositions made by
agents (on connected calls) as well as dispositions made by the dialer (on failed calls; busy, does not
answer, voicemail, etc.), as a recycling criterion from the contact base of the current campaign, so that the
dialer returns to call the contacts that fall within the dispositions indicated in the recycling.
To recycle a campaign, you must deploy the options of camapaña and select there Recycle

Figure 12: Campaing recycle


There two options are displayed:
• Recycle on the same campaign
Redial the selected contacts from the same campaign.
• Recycle on a new clone campaign
In other words, redial the selected contacts, but on a new campaign similar to the original one
and whose contact base will be the result of recycling.
To complete the procedure you must select the dispositions to be called again and then go through the
stages of predictive campaign configuration in case you need to adjust any configuration parameter of the
recycled campaign.

96 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 13: Recycle; call dispositions

Figure 14: Recycle campaigns parameters


When executing the recycling, the campaign is in the Inactive state, therefore it remains to activate the
campaign so that the recycled contacts begin to be marked by the dialer.

9.1. Telephone Campaigns 97


omnileads Documentation, Release develop

Figure 15: Recycle campaign activate


• Contact database rotation
A campaign can replace its contact database with a new one. This allows to continue operating with the
same campaign but to renew the source of contacts to call. In this way the history of reports, recordings
and other statistics in the same campaign is followed.
To carry out a contact database change, the campaign must be paused or under the status of finished. Then
you must click on the database change campaign option.

Figure 16: database change


This will display a screen similar to the one shown in the following figure 17.

98 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop

Figure 17: database change

Important: The contact database structure that can be used as a substitute should be similar to the
contact database to be replaced.

Once the database rotation is carried out it is necessary to activate the campaign again.

9.1.9 Inbound Campaigns

When talking about incoming calls we have to explain each functionality applicable to the flow of a in-
coming call. As we know an incoming call can go through a series of “nodes” until finally connecting with
an agent. Therefore we will extend the concept of “incoming campaigns” to the following configuration
items.

Inbound campaign creation

To create a new inbound campaign you must enter the menu item Inbound Campaigns -> New Campaign.
The first stage looks like figure 1.

9.1. Telephone Campaigns 99


omnileads Documentation, Release develop

Figure 1: Campaigns parameters


• Name: campaign name
• Contact database: (optional field) contact database that the inbound campaigns can use to take and
display extra data to the telephone number of person that makes the incoming call.
• External URL: in case of selecting an external URL interaction for each call, this field selects to
wich CRMs should the campaign invoque.
• External system: external CRM system linked to launch click to call actions or dispositions on
campaign contacts, through the API.
• ID on external system: this fields must have the campaign’s ID in the external system from where
the click to call or the disposition requests will be sent.
• Outbound Routes: An existing outbound route is assigned to an campaign.
• CID on Outbound Routes: This field must contain the CID assigned for an existing outbound route
to a campaign.
• Enable recordings: Enable all campaign calls to be recorded.
• Scope: it is defined as the amount of engaged dispositions expected for the campaign. In the cam-
paign monitoring, the percentage of the campaign’s arrival with respect to the defined objective is
shown in real time.

Note: In incoming campaigns the contact base is used if you wish to display the additional
information of each contact making an incoming call. Although to achieve this the callerid
of the incoming call must match the telephone number of a contact at the base of the cam-
paign.Assigning a contact base to an incoming campaign is optional

Then we continue with the creation of our incoming campaign.

100 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 2: Campaigns parameters


• Ring time: The number of seconds an agent’s phone can ring before we consider it a timeout. It
should be considered that this parameter makes sense whenever the agent does not work within a
group configured with the Auto-attend inbound calls mode.
• Agent callback time: the number of seconds to wait before trying call to a ready agent
• The announcement played to callers before they join the campaign queue
• Max amount of calls: define the maximum number of callers who can be waiting in the queue at
the same time (0 for unlimited). If not set to 0, and the maximum capacity is reached, additional
calls would be sent to the failover destination
• Service level: used for service level statistics (calls answered within service level time frame).
• Distribution strategy: A strategy for how to handle the queue and divide calls between queue
members
• Campaign priority: gives campaign a priority (priority level). The higher the weight, the higher
the priority. (Default = 0) If there are agents common to multiple campaigns, the campaign with the
highest priority will deliver its calls first.
• Queue timeout: when the Queue timeout of a caller is hit, they will be pulled out of the queue
immediately to the failover destination

9.1. Telephone Campaigns 101


omnileads Documentation, Release develop

• Enable recordings: Enable all campaign calls to be recorded.


• Periodic Announcement: we can select some audio from our repository to play as a periodic an-
nouncement about the call on hold.
• Announcement frequency: how often (seconds) to announce a voice menu to the caller.
• Failover dst: set a failover destination here by choosing a valid destination from the drop-down
menus. The caller would be sent to this destination if they exit the queue for reasons such as maxi-
mum wait time, queue capacity, or join empty/leave empty settings
• Autopause agentes who fail to answer: sets if the agents that fail to answer a call should be
automatically sent to pause.
• Autopause busy agents: sets if the agents that are busy should be automatically sent to pause.
• Announce hold time allows the user to specify the average hold timethat the caller will wait for be
attend by an agent
• IVR Breakdown is an IVR destination that user can choose to ‘escape’to it in a middle of waiting
time. This parameter is related to the ‘periodic announcement’ because of the last parameter specify
the audio messages that instructs the user how to ‘escape’ to these IVR destination.
• Announce position: Announce the caller’s position in the queue.
• Wait/position announce frecuency: It is the waiting or position time for an announce frecuency.
• Music on hold: Configures wich Playlist will be played for the client when his call is put on hold.
• Entry Announcement for Agent: Audio played to an agent when receiving incoming call.

Note: The Ring time and Agent callback time parameters are void for those calls that receive agents
whose agent group is configured with the incoming calls attribute Auto attend inbound.

In the next configuration stage, the dispostiions that the campaign requires for agents to rate each contact
call must be assigned.

102 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 3: Campaign dispositions


Finally, agents can be assigned to the campaign.

9.1. Telephone Campaigns 103


omnileads Documentation, Release develop

Figure 4: agent assignment


The rest of the chapter details all about routing calls from trunk to our incoming campaigns.

Ringing VS Automatic incoming call attention

The function mode of the agent’s Webphone against a call coming from an incoming campaign can be:
• Ringing with a duration associated with the * Ring time * parameter. During that time the agent’s
phone notifies the incoming call, awaiting the action of the agent that determines the attention or not
of the call.
• Auto-attend inbound call. This behavior implies that each incoming call sent to an agent is auto-
matically answered by the agent’s phone notifying him with a beep before leaving it in line with the
counterpart of the call.
This behavior depends on the Agent Group level configuration that the agent linked to the incoming
campaign has. So if the group has activated the auto attend for inbound calls, the webphone will answer
automatically the calls of any campaign, making no effect the parameters “Ring time” and “Agent callback
time” as is mentioned in the note of this section

104 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 5: agent group config

Inbound routes

When a call comes into your system from the outside, it will arrive along with information about the
telephone number that was dialed (also known as the DID) and sometimes with the Caller ID of the
person who called. The Inbound Routes module is used to tell your system what to do with calls that
come into your system on any trunk. Then once our incoming campaign is available, we must proceed
with the linking of a DID telephone number available in one of the SIP trunks through which the call
requests would arrive with the incoming campaign in question.

Figure 1: Inbound routes


To generate a new incoming calls route, we must access the Telephony menu item; Inbound routes where
the created routes are listed and new ones can also be added.
In figure 2 an incoming route can be displayed on its configuration screen.

Figure 2: Inbound route parameters


• Name: is the one assigned to the route (alphanumeric without spaces)

9.1. Telephone Campaigns 105


omnileads Documentation, Release develop

• DID number: Routing is based on the trunk on which the call is coming in. In the DID field, you
will define the expected “DID Number“ if your trunk passes the DID on incoming calls
• Callerid prefix: this allows text to be prepended to the caller ID name information from the call.
This is often used to identify where a call came from. For example, a number dedicated for support
might be prefixed with Support
• Language: el language used for the system’s default audio over the channels that enter using the
route.
• Destination type: module type to route the call. Within the types of destinations there are (Incoming
campaigns, IVRs, weather conditions, customer id, custom destinartions)
• Destination: OMniLeads provides multiple ways to route a call. This is the place where the desired
call target is selected.
It is important to clarify that it is allowed that several routes can have the same destination.

Incoming calls from the PBX

This section illustrates how to configure OMniLeads and an Asterisk-based PBX, to derive calls from the
PBX to OMniLeads.

106 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 1: Inbound route parameters


We start from the fact that there is a SIP trunk that links OMniLeads with the PBX.
The first thing to define is the DID number assigned to the incoming route that will process calls from the
PBX to an OMniLeads destination, since this number (DID of the route) must be dialed by the PBX to
send calls from any module (extensions, IVRs, inbound routes, followme, time conditions), towards the
destination configured in the OMniLeads route.

9.1. Telephone Campaigns 107


omnileads Documentation, Release develop

Figure 2: Inbound route parameters


From the example (123456 used in Figure 2), the Asteisk PBX should dial calls through the SIP trunk to
the number 123456 every time a PBX extensiones or module (IVR, time conditions, inbound routes, etc.)
needs to reach the incoming OMniLeads route.
If our Asterisk PBX has a configuration web interface, a new custom extension whose dial field contains
the string must simply be generated; SIP/trunkomnileads/123456. The value trunkomnileads is the name
of the SIP trunk declared in the PBX.
The custom extension generated to dial to OMniLeads is exemplified in Figures 3 and 4.

Figure 3: OMniLeads PBX custom extension


While the extension in the PBX can have any numbering (exemplified with 2222), the important thing is
to send 123456 (in our example) to OMniLeads as highlighted in Figure 4.

108 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 4: OMniLeads PBX custom extension


Once the custom extension is available on the PBX, it is only a matter of dialing 2222 from any module
of the PBX, such as an IVR.

9.1. Telephone Campaigns 109


omnileads Documentation, Release develop

Figure 5: from IVR to OMniLeads


Although the derivation of calls to incoming OMniLeads campaigns from an IVR of the PBX is exempli-
fied in Figure 5. We can conclude that PBX extensions can also dial or transfer calls to OMniLeads, as
well as PBX modules such as time conditions, followme, inbound routes, etc. they can invoke a custom
extension of the PBX that derives calls to OMniLeads.

Incoming call flow based upon time and date

In this section we will explain the Incoming routing calls conditioned by time ranges, to configure the
flow of incoming calls to different internal destinations from comparing the date & time a call arrives and
a related pattern (of dates & times), so that you can plan in advance if a call should go to one destination
or another according to the result of that comparison.
For example, a call could go to an incoming campaign within the business-hour and to an IVR that
reproduces an announcement about business/after hours, when the call enters outside that defined range.

110 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 1: Time conditions


There are two modules that work together and allow you to implement this class of incoming call flow.

Time groups

The Time Groups Module is used to define periods of time that can then be selected in the Time Conditions
module.
To define or edit time groups, you must access the menu item Telephony -> Time groups. To add a new
group, press the Add new group button.
The time group screen is shown in Figure 2.

9.1. Telephone Campaigns 111


omnileads Documentation, Release develop

Figure 2: Time groups


The Time Groups Module is directly related to the Time Conditions Module, because a time condition
compares call time to the time(s) defined in the time group. A time group must be set up first. The Time
Conditions module allows the selection of a time group from a drop-down menu.

112 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Time conditions

The Time Conditions module creates a destination to which you can route calls. When a call arrives at
the Time Condition destination, the system will check the current system time and date against the Time
Group pattern that you asosiated. The system will then route the call to one of two destinations that you
define.Time Conditions can also be used to route calls to different destinations during business hours vs.
after-hours, for example.
The Time Conditions module is related to other modules that can choose a destination, such as:
• inbound routes
• IVRs
• failover destinations
• another time conditions
To generate a time conditions node, you must access Telephony -> Time conditions
The configuration screen is similar to Figure 3.

Figure 3: Time conditions


Finally we have this routing element available to be used by example as the destination of an incoming
route.

IVR - Interactive Voice Response

An IVR or Interactive Voice Response menu allows callers to interact with your telephone system via their
telephone keypads. The IVR Module is used to set up a menu system that will play an initial recording
to callers, allow them to dial an option, and route their call to a particular location based upon what they
dial.For example, you could configure an inbound route to send an incoming call to an IVR, so that when

9.1. Telephone Campaigns 113


omnileads Documentation, Release develop

people call your number, they would hear a greeting that would thank them for calling and say, For sales,
press 1. For service, press 2. For our hours of operation, press 3.

Figure 1: IVR - Interactive Voice Response


To generate a new IVR you need at least one audio to play (available in the audio library) and also a
default destination to where to send calls that pass through our IVR.
To add an IVR you must access the Telephony -> IVR menu item, select Add IVR.
A screen similar to Figure 1 is displayed

114 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 2: IVR parameters


We can divide IVR form view into three sections. First section contains the form fields:
• Name: reference name for IVR.
• Description: enter a description for the IVR to help you remember what it is for.
• OML audio file: here we choose which recording to be played to the caller when they enter the
IVR. This can be any system recording that you have defined in the Audio module. It will usually
give them instructions, such as press 1 for sales and 2 for support.
• Upload audio: here we choose which recording to be played to the caller when they enter the IVR.
This can be any wav file that you can upload on the fly. It will usually give them instructions, such
as press 1 for sales and 2 for support.
Then follow the sections to configure timeout actions and invalid options.
• Time out: enter the amount of time (in seconds) the system should wait for the caller to enter an
option on their phone keypad. If this amount of time passes without the caller entering anything, it
will be considered a timeout. After a timeout, the system follows the timeout rules defined below.
• Time out retries: how many times callers are allowed to timeout without pressing any options on
their keypad before they are sent to the invalid destination defined above.
• Time out audio: the recording to play to a caller who times out. This can be any recording from the
Audio module.
• Time out upload audio: the recording to play to a caller who times out. This can be upload any
wav recording.
• Time out Destination type destination type to send the call to after Timeout valid attempts were
reached.
• Time out destination: destination to send the call to after Timeout valid attempts were reached.

9.1. Telephone Campaigns 115


omnileads Documentation, Release develop

• Invalid retries: number of times to retry when receiving an invalid/unmatched response from the
caller
• Invalid recording: audio prompt to be played when an invalid/unmatched response is received,
before prompting the caller to try againThis can be any recording from the Audio module
• Invalid recording: audio prompt to be played when an invalid/unmatched response is received,
before prompting the caller to try againThis can be upload any wav recording.
• Invalid destination type: destination type to send the call to after Invalid attempts were reached.
• Invalid destination: destination to send the call to after Invalid attempts were reached.
Finally, the third section displays as many rows as DMTF options involve the IVR. For each row, a DTMF
can be assigned to a call switching destination.
Next, a destination type/destination must be assigned for each DTMF (option)of IVR.
Click on save button

Note: It is possible to nest an IVR inside another.

Customer identification on incoming calls

Presentation

Incoming calls can invoke a customer identification node in order to ask to caller for its identification
number or client number, then this input will be process to choose the internal destination for the call,
being able to involve the CRM on the choose that destination, through the interaction between OMniLeads
and the defined CRM system.
In its most basic operation, the module implements the possibility of play a recording prompting callers
its client number by entering DTMF tones and then route call to two different destinations (if the callers
was input a valid number or not). In addition we can configure the module for launch an interaction with
the CRM, so the CRM can wiil take control of incoming calls routing.
In both scenarios (basic mode and CRM interactive mode), the call is allowed to enter Agent with the
customer ID as an index to get all the customer data and render it on the agent view (either on the contact
view or in the external CRM configured for the campaign).
The module allows three configuration modes:

Basic behavior

In this scenario, an identification request is launched through an recording played on the customer tele-
phone channel, and then simply validate whether or not the customer entered a value and thus make a
choise about route between two possible destinations; destination A if an identification or destination B
has been entered if the caller did not.

116 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 1: Customer id without CRM interaction

CRM interaction true or false

In this scenario, an identification request is launched through an recording played on the customer tele-
phone channel and this entered value its deliver inside a http-request to the CRM web service.

9.1. Telephone Campaigns 117


omnileads Documentation, Release develop

Figure 2: Customer id with CRM interaction true/false


Then the CRM decides in some way the routing of the customers who call the company. Because after
receiving the caller’s identification key from OMniLeads, the CRM must respond to the request received
with a response of the true or false type, then OMniLeads must route the calls to each of the two possible
previously configured destinations destination A if the CRM returns true or destination B if the CRM
returns false.
An example could be to consult the CRM if the call must be sent to an incoming campaign to be answered
by an agent or instead be sent to another destination.

The external CRM choose the OMniLeads destination where route customer calls

In this scenario, an identification request is launched through an recording played on the customer tele-
phone channel and this entered value its deliver inside a http-request to the CRM web service.

118 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Figure 3: Customer id with interaction and destination chosen by CRM


Then the CRM choose the OMniLeads destination for the customers who call the company. Since after
receiving the caller’s identification key from OMniLeads, the CRM must respond to the request received
with a OMniLeads internal destination like response, finally OMniLeads must route the calls to the desti-
nation selected by CRM
An example of this functionality could be to notify the CRM about the customer number entered on call
and then the CRM choose the OMniLeads incoming campaign where to route this call. The destination
choice can be base on the type of customer subscription plan.

Create a new customer identification node

To generate a new node, you must access the menu item: Telephony - Customer identification

9.1. Telephone Campaigns 119


omnileads Documentation, Release develop

Figure 4: New customer id node


The form fields are detailed below:

120 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

Field Description
Name Object reference name
Interaction type
• Without CRM integration: just ask for iden-
tification
• CRM interaction true or false
• The CRM choose the OMniLeads destina-
tion for each customer caller

CRM web service URL here we indicate the web service address where
send the requests from OMniLeads to CRM
Audio to be played on caller channel This is the recording that we can choose to request
the customer identification
Maximum acceptable number of digits We can set the maximum acceptable number of
digits for the customer id input
Timeout Enter the amount of time (in seconds) the system
should wait for the caller to enter your customer
id on their phone keypad. If this amount of time
passes without the caller entering anything, it will
be considered a timeout. After a timeout, the sys-
tem follows the unsuccesfull destination defined
below.
Retries Number of times to retry when receiving an in-
valid or null input from the caller
Successfull destiny Destiny for successfull calls. This option apply to
Destiny for successful calls. This option apply to
basic behavior setting mode or CRM interaction
true or false.
Unsuccessful destiny Destiny for unsuccessful calls. This option apply
to basic behavior setting mode or CRM interac-
tion true or false.

Important: In order to implement the configuration modes that imply interaction with CRM, you must
consider the fact that the management system has a web service to receive requests of this type.
For developers who wish to enable this integration in their CRM, you can find more information in our
API documentation Routing request to the external CRM.

Routing request to the external CRM

OMniLeads send an HTTP-POST request (plain/text) to the URL of the external CRM inside the Create
a new customer identification node module.
This post sent to the external CRM must be in this way:

9.1. Telephone Campaigns 121


omnileads Documentation, Release develop

The “User-Agent” must be “OMniLeads” and the body of Post must be the id number sent in the call
identified by “idContact”.
Answer generated by the web service’s external CRM
The service receives from OMniLeads the HTTP Post request the customer id number and must generate
an answer to the request. The system has the possibilitie to generate three kinds of responses:
• true
• false
• X,Y: where “X” is the int number and corresponds to the type of destination to send the call identified
and “Y” is the punctual destination inside the type. For example (1,3) indicates that the call will be
routed to an inbound campaign (1) which id is (3). The key associated to the response is “response”.
The response’s format must be “JSON”.
• JSON response

Content-Type: application/json
HTTP/1.1 200 OK

{
"status": "ok",
"destination": "value"
}

Where “status” can be ok or fail and “destination” can be any of the three responses specified above.

Important: The system must respect the format and name of parameters (status and destination).

In case of generate a response with routing destination, the types of destinations are:
• 1: Inbound campaign
• 2: Conditional based on time
• 3: IVR
• 5: Call hangup
• 9: Solicitud de identificación

122 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

In the future an API endpoint will be coded to list all the destinations per destination type. Meanwhile,
the developer that desires to make the call routing based on call identification and request generated by
OMniLeads, could make this in the web interface and inside each destination type could list the same and
check the id
Example of response with call destination: is desired to validate each id sent to OMniLeads and answer
with two possible destination routing type. In a side the inbound campaign called “gold customers” and
other called “bronze customers”.
By that we suppose that exist two inbound campaigns as indicated in the image.

With just move the cursor in the campaign name, you can check the “id” of each one.
Therefore, knowing the “id” of each campaign the CRM could evaluate each call and indicate to OM-
niLeads the route that will have the call, returning the “X,Y” pair.

Custom asterisk dialplan

With this module an Asterisk developer can route calls to your custom dialplan.
OMniLeads run Asterisk like a PBX engine, then any developer who know about Asterisk syntax can
write your own dialplan in order to customized the call flow.
• Inbound routes
• Inbound campaigns
• Failover destination
• Outbound routes
• Etc.
Therefore, it is allowed to generate an invokable node within a call flow, this node being Asterisk program-
ming syntax, customized according to any specific need that is outside the scope of the typical OMniLeads
modules.
For example, a developer can write a dialplan to integrate different business processes and numerous data
sources to your IVR using API integrations with CRM or ERP.

Custom destination settings

The custom destination module simply involves a form indicating the name of the custom dialplan node
and also the Asterisk dialplan triad:
• Context

9.1. Telephone Campaigns 123


omnileads Documentation, Release develop

• Extension
• Priority
Where to route the call affected by this node (Custom destination field). We also have the need to indicate
a destination in case of failure.

figure 1: custom dst view


Asterisk developer can generate your own dialplan on the oml_extensions_custom.conf file.

Example

We will implement the dialplan

[omnileads_custom]
exten => s,1,Verbose(2, omnileads custom dialplan)
same => n,Answer()
same => n,Playback(demo-congrats)
same => n,Hangup()

Then, we will write the code on oml_extensions_custom.conf the file is on


“/opt/omnileads/asterisk/etc/asterisk” dir.
Then, we must to create a custom destination node.

124 Chapter 9. CAMPAIGNS


omnileads Documentation, Release develop

figure 2: custom dst example


Finally we can invoke our node, from an IVR option, conditional on time or incoming route.

figure 3: custom dst example

9.1.10 Campaign Templates

It is often recurring that the parameters of a “class” of campaigns (for example, survey preview cam-
paigns) do not vary too much except perhaps by the assigned agent group, a contact database, or by assign
supervisor. Therefore instead of having to create very similar campaigns always from scratch, you can
generate templates and then quickly create new campaigns from cloning those templates.
This functionality is granted by the OMniLeads campaigns Templates.
Once you have generated a template (which is generated similarly to a campaign), you can create new
campaigns simply by selecting the template and the Create campaign from template option. Each new
campaign will be available with all the parameters specified in its parent template.

9.1. Telephone Campaigns 125


omnileads Documentation, Release develop

Figure 15: templates

9.1.11 Interaction with external CRMs

OMniLeads is designed from a perspective that prioritizes integration with the company’s preferred
CRM/ERP system. Thus providing the possibility for a company to maintain the use of its CRM/ERP
system appropriate to its vertical market (health, sales, customer service, etc.).
Through its own functionalities and API methods, OMniLeads allows the following interactions:
• Open a specific view of the CRM in an incoming or outgoing communication, using communication
parameters (agent id, contact id, campaign id, etc.) as dynamic data to invoke the CRM.
• Execute click to call from a contact view in the CRM and thus activate a call through a campaign
and OMniLeads agent.
• Record the management of a CRM contact and that the disposition impacts OMniLeads, so that there
is a correlation between the CRM system and the Contact Center system within each campaign.
• Request the “ID” of the person on incoming calls, send this “ID” to the CRM (via http request) and
wait for the latter to respond on which OMniLeads campaign to route a call.
These concepts and configurations are expanded in the following link CRM integration.

126 Chapter 9. CAMPAIGNS


CHAPTER 10

METRICS, REPORTS, RECORDINGS AND SUPERVISION

Inside this chapter, all about the metrics, statistics, reports, recordings and real time supervision, etc.

10.1 Reporting, Recordings and Supervision

10.1.1 Recordings

All campaigns that operate with the call recording option enabled generate recording files with listening
and download actions. The OMniLeads Recordings module allows to search for recordings using filters
as search criteria.

Menu access

In order to access the recording search engine, go to Recordings Menu. The module view can be seen
below, where a list of recordings is displayed according to a filter criteria like date and a set of parameters
as:
• Date: allows to filter your search by date or specific date range.
• Call Type: allows to filter according to call type criteria (manual, incoming, preview, predictive
dialer).
• Phone Number: this field allows to filter search engine by a specific telephone number.
• Agent: allows to filter search engine for calls managed by specific agent.
• Campaign: allows to filter search engine for calls managed by specific campaign.
• Checked: this check is used to recover recordings of calls that have been observed/marked by agent
during conversation.
• Minimum duration: this field is used to limit search engine for Recordings with a specific value of
duration, as minimum.

127
omnileads Documentation, Release develop

• Engaged Calls: as we well know, in OMniLeads there are normal Call Dispositions and “Engaged
Call Dispositions”. Last one triggers campaign forms. In this case, this check allows administra-
tor/supervisor to recover dispositioned calls of type Engaged.

Figure 1: recordings

10.1.2 Inbound Campaigns output

This section describes and analyzes all staff related to the “output” generated by incoming call campaigns.

Inbound Campaign Reports

This section covers all available reports for an Inbound Campaign.

128 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

Figure 1: Campaign Reports view

General Report for Inbound Campaign

This report gives us a summary of several aspects of an Inbound Campaign. Metrics such as number of
calls received (attended and not attended) and performed in the campaign are displayed in detail with
respect to the agent call dispositions.
In order to access to this report, go to “Reports” option within the campaign.
The first information that comes up are the “received calls” and the “manual calls” within the campaign.
Remember that in OMniLeads an agent can process a manual call and associate it with an incoming
campaign. For example, the agent can redial an incoming call number that has been accidentally hanged
up, and handle it as a manual outbound for the campaign.
Also it give us information about average waiting and abandon time for call attempts to the campaign.

Figure 2: Inbound calls / Performed calls


Following the tour of this screen, we will find the first button to export information to a CSV. In this case,
the button allows us to export to “CSV/Spreadsheet” all calls answered in the campaign.

Figure 3: Attended calls CSV


The file presents the first column as phone, that is the source number of the incoming call. While the
contact can have more than one phone number associated in this report, column “Phone number” refers
to the source of that specific inbound call which agent call disposition is associated to (Call Disposition
column).
It is not mandatory for incoming campaigns, to associate them to a contact database. When an incoming
campaign is NOT associated to a contact database, all calls in reports are mentioned as “out of database”
in the database column of our spreadsheet (figure3).

10.1. Reporting, Recordings and Supervision 129


omnileads Documentation, Release develop

Below the first export button, a report table can be seen. It represents the different call dispositions made
by agents for those answered calls.(figure 4).
In this case and in general all tabulated information can be exported to CSV file.

Figure 4: Dispositions
In the following section, a list of not answered calls can be obtained. These ones represent all the failed
attempts from inbound point of view: abandoned calls, expired calls.

Figure 5: Not attended calls


Below we can see an Agent Performance report. It counts all the call dispositions registered by agents.

130 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

There is also an agent link that redirects to a screen with more information about agent performance in
that campaign.

Figure 6: Contacts pending / Performed calls


Then if you click on a specific agent, a new screen is displayed, which includes in depth the information
of:
• Accumulated Time in the campaign
• Pause Time in the campaign
• On Call time in the campaign
• Amount of Processed Calls
• Average Call Time
• Amount of Failed attempts
• Effectiveness percentages

Figure 8: Agent performance detail


Returning to the campaign report, the last item is a List of all calls processed in the campaign and their
results. It exposes separately all manual calls that have been made in the campaign. Remember that in
any type of campaign, agent can generate manual calls on behalf of selected campaign.

10.1. Reporting, Recordings and Supervision 131


omnileads Documentation, Release develop

Figure 9: Call details

Call Dispositions Report

This report lists all call dispositions made by an agent in the campaign. It can also be exported as a CSV
file, containing full details for both “normal” and “engaged” call dispositions.

Figure 10: Call dispositions detail


It is important to clarify that this list also includes those contacts dynamically registered in the campaign
by agents. For example, contacts who call the campaign and are not part of a contact database.

Contact Database Results

Here is a flat list of all the contacts associated with the campaign database and the result of the last call
made by the contact to the incoming campaign. The difference between this report and the previous one
is that here we will NOT find those contacts introduced dinamically by agents (out of database). It is
expected for this report to present a mapping between the contact database assigned to the campaign and
the results once processed by the campaign.
NOTE: It is important to note that this report is very useful in Preview and Predictive Dialer Campaigns,
being perhaps not very irrelevant in incoming campaigns.

132 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

Figure 11: DB result

10.1.3 Outbound Campaigns output

This section describes and analyzes everything related to the “output” generated by outbound call cam-
paigns.

Outbound Campaign Reports

This section covers all available reports for an Outbound Campaign.

Figure 1: Campaign Reports view

General Report for Outbound Campaign

This report gives us a summary of several aspects of the campaign. Number of pending calls that remains
on campaign, total amount and details for all campaign calls (contacted and not contacted), etc.
In order to access this report, go to “Reports” option within the campaign.
The first information that comes up is the “Pending Contacts to Manage” Versus “Total Calls Made”
in the campaign. These calls contemplate the fact that it is possible to dial a contact more than once.

10.1. Reporting, Recordings and Supervision 133


omnileads Documentation, Release develop

Therefore, it is expected that the number of calls made exceeds the amount of contacts available in the
contact database of the campaign.

Figure 2: Contacts pending / Performed calls


Following the tour of this screen, we will meet with the first button to export information to CSV. In this
case, the button allows us to export to “CSV/Spreadsheet” all contacted phones (answered calls) within
the campaign with their call dispositions.

Figure 3: Contacted calls


Information is presented as shown in Figure 4.

Figure 4: Contacted calls CSV


As it can be seen, the file presents the first column as Contacted Phone Number. While the contact
may have more than one associated phone number in this report, column “Phone number” refers to the
contacted number which a call disposition was set to.
The next report that is presented has to do with the number of call dispositions agents have made within
the campaign (Figure 5).
In this case and in general, all tabulated information is able to be exported to CSV in order to have the
data on a spreadsheet.

Figure 5: Call dispositions list


Following the next report sections, the system displays a list of all campaign calls that were not contacted:
i.e. failed attempts according to what the system detects in response to the PSTN/SIP Provider.

134 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

Figure 6: Call failed details


Below we can see an Agent Performance report. It counts all the call dispositions registered by agents.
There is also an agent link that redirects to a screen with more information about agent performance in
that campaign.

Figure 7: Agent performance


Then if you click on a specific agent, a new screen is displayed, which includes in depth the information
of:
• Accumulated Time in the campaign
• Pause Time in the campaign
• On Call time in the campaign
• Amount of Processed Calls
• Average Call Time
• Amount of Failed attempts
• Effectiveness percentages

10.1. Reporting, Recordings and Supervision 135


omnileads Documentation, Release develop

Figure 8: Agent performance detail


Returning to the campaign report, the last item is a List of all calls processed in the campaign and their
results. It exposes separately all manual calls that have been made in the campaign. Remember that in
any type of campaign, agent can generate manual calls on behalf of selected campaign.

Figure 9: Total calls

Call Dispositions Report

This report lists all call dispositions made by an agent in the campaign. It can also be exported as a CSV
file, containing full details for both “normal” and “engaged” call dispositions.

136 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

Figure 10: Call dispositions detail


It is important to clarify that this list also includes those contacts dynamically registered in the campaign
by agents. For example, out-of-base contacts who were referred by another contact within the campaign.

Contact Database Results

Here is a flat list of all the contacts associated with the campaign database and the result of the last call
made to the contact. The difference between this report and the previous one is that here we will NOT
find those contacts introduced dinamically by agents (out of database). It is expected for this report to
present a mapping between the contact database assigned to the campaign and the results once processed
by the campaign.

Figure 11: DB result

10.1. Reporting, Recordings and Supervision 137


omnileads Documentation, Release develop

10.1.4 General Call Reports

This section reviews each report generated by general call reports. Reports - Calls.

Calls General Report

The report can be run as in all cases, based on a date or date range. It displays information about all calls
managed by the platform according to the filter selected.
The first report has to do with the total amount of calls transacted by the platform, classified in:
• Manual Outbound Calls
• Preview Outbound Calls
• Predictive Outbound Calls
• Inbound Calls

Figure 1: Call types


The information is also detailed in terms of whether the calls were connected or not “connected”.
Then there are a couple of graphs that represent the statistics above mentioned.

Figure 2: Call types graphic

138 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

The following information is presented as a table in which all calls transacted by the platform can be
divided in terms of the campaigns where they were processed.

Figure 3: Calls and campaigns


In the following three sections, it is presented in a tabular and graphic way a breakdown of all calls
processed by OMniLeads in terms of its nature (incoming, manual, preview and predictive). Then, for
each type of campaign, all call information can be seen according to each type of call.
This way you can quickly deduce the effectiveness of each campaign analyzing tabular and graphical
information.
• Predictive Calls

10.1. Reporting, Recordings and Supervision 139


omnileads Documentation, Release develop

Figure 4: Dialer calls


• Preview Calls

Figure 5: Preview calls


• Inbound Calls

140 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

Figure 6: Inbound calls

10.1.5 Agent Reports

This section reviews each report generated by the general report of agent activity. Reports - Agents

Agent Reports

When accessing Reports -> Agents menu, a filter engine allows to select the agent or group of agents, and
the date or range of dates. After clicking in Search button, agent activity report is displayed.

Figure 1: Choice of date and agents


The first information that can be seen is a table with the summary of all the agent activity.

10.1. Reporting, Recordings and Supervision 141


omnileads Documentation, Release develop

Figure 2: Agent activity summary


From our summary we can break down plenty of details as for example the accumulated time in pause.
There you will have a detailed report of the pauses and the time each agent took.

Figure 3: Pause details


The next parameter has to do with the amount of calls processed by each agent in terms of campaigns. That
is to say, it presents a detail by agent of how many calls and how much time agent spent, per campaign.

Figure 4: Calls & Campaigns


Finally, a last table is presented detailing the amount of calls per type (manual, preview, dialer and incom-
ing).

Figure 5: Call types

142 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

10.1.6 Realtime Supervision

This section reviews the OMniLeads Supervision module.

Supervision

This module allows Supervisors to view the status of Inbound Campaigns, Outbound Campaigns (Manual,
Dialer and Preview) and Agents.

Figure 1: Choices for supervision

Agent Status View

En la sección de agentes se observan todos los agentes logueados en el sistema y el estado en el que se
encuentran (READY, OnCall, Paused, Dialing, Offline, Unavailable) .

Important:
• Agents must be assigned to at least one campaign in order to appear in this supervision view.
• Cuando un agente pasa al estado “Offline” desaparece del listado de agentes.
• Cuando un agente pasa al estado “Unavailable” quiere decir que el agente perdió conexión o cerró
el browser sin desloguearse.

10.1. Reporting, Recordings and Supervision 143


omnileads Documentation, Release develop

Figure2: View of realtime supervision


Supervisors are able to take some actions on each agent. That is the reason why action buttons appear
next to the agent status. All possible functions will be explained further below (from left to right).
• Spy: the supervisor listens the active call between agent and customer. Clicking on Finish button,
allows the supervisor to finish the listening action.
• Spy and Whisper: the supervisor is able to listen and speak during an agent conversation without
customer perception. Clicking on Finish button, allows supervisor to finish listening and whispering
actions.
• Pause Agent: assuming the agent is out of the box and forgot to pause the session, the supervisor
is able to force a pause action from supervisor view. This is useful as to avoid receiving calls while
agent is absent but ready. Supervisor can also un-pause session by pressing the same button again.
• Logging Out Agent: assuming the agent closes browser session incorrectly (without using Log-Out
button), agent session still remains active. Supervisor has the ability to log agent out with this button.
It is important to perform this action as to avoid having inconsistencies in session time reports (and
more important to instruct agent to close session from log-out button!).

Note: The supervisor has a small webphone. In order to perform all the possible actions stated above, a
message of Supervisor Registered needs to be present on supervisor console.

Inbound Campaigns View

This view exposes a summary of all productive Inbound Campaigns, in terms of the accumulated results of
the operation day: received calls, answered calls, abandoned calls, abandoned during welcome audio calls,
average waiting time,expired calls, on queue calls, average abandon time, and Engaged CallsDispositions
(*) per campaign.

144 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


omnileads Documentation, Release develop

Figure3: view of realtime inbound campaigns

Outbound Campaigns View

As in the previous point, Outbound Campaigns also count on with a real time summary of the results
for each campaign: dialed calls, answered calls, not answered calls, and their respective Engaged Call
Dispositions (*).

Figure4: view of realtime outbound campaigns

Note: It is expected for this view to display results on a day-by-day basis, from 00:00 to 23:59. After
that time range, statistics are reset.

Note: Engaged Call means a call that the agent closes with an engaged call disposition, the one in
charged of triggering a campaign form.

10.1. Reporting, Recordings and Supervision 145


omnileads Documentation, Release develop

146 Chapter 10. METRICS, REPORTS, RECORDINGS AND SUPERVISION


CHAPTER 11

BACKOFFICE MODULE

Every time an agent generates an engange with a contact, there is the possibility of auditing it from the backoffice
module.

11.1 Backoffice module

This module allows to define system users assigned to audit each engage generated by an agent in each
campaign. In Contact Center operations the workflow commonly involves, on the one hand, Agents and
Supervisors coordinating the communications management operation and, on the other hand, the auditing
or backoffice sector controlling that each record qualified as Positive Management (or sale) has been
correctly implemented by the agent.
OMniLeads facilitates a module in which the auditors are able to list all the managemental procedures
performed by the Agents, to then inspect in order to validate one by one the authenticity of those manage-
ments based on the parameters of the operations. The auditors have the possibility to display the contact
information, the form completed by the agent and the recordings related to management.
Flow diagram
The following diagram is intended to illustrate the operation of the module.

147
omnileads Documentation, Release develop

The first thing that needs to be cleared is that only the qualified registers with a management rating
(Campaigns, Ratings and Forms) will be sent to the Audits office. There is where auditors will then work
on each pending register.

148 Chapter 11. BACKOFFICE MODULE


omnileads Documentation, Release develop

On each register the auditor will be able to enter in order to analyze the engage.

In the detailed view, the recordings inherent to the management can be reproduced. Also, both the contact
data and the data entered in the management form can be displayed.

11.1. Backoffice module 149


omnileads Documentation, Release develop

Audited records can be classified as:


• Approved management: after analyzing recordings, contact details and fields completed in the
management form, the auditor verifies that the operation has been successful.
• Rejected management: after analyzing recordings, contact data and fields completed in the man-
agement form, the auditor detects that the operation does not meet the requirements to be approved.
• Observed management: after analyzing the recordings, contact data and fields completed in the
management form, the auditor detects that the operation has been successful but sends it back to the
agent (with the pertinent explanation) so that he or she can get in touch with the contact once more.

Observed management behavior


As discussed, observed managements are procedures that the agent must perform again, seeking to solve
the observations left by the auditor in order to obtain subsequent approval. All agents have access to the
auditors qualifications by entering the Ratings view displayed in the agent screen. Once an observation is
noticed, the agent is able to read the description of the inconvenience left by the auditor.

150 Chapter 11. BACKOFFICE MODULE


omnileads Documentation, Release develop

Once the agent performs the management again, the auditor will be able to inspect and finally decide
whether to approve, reject or observe again.
Search filters

The module has the typical search filters (by agent, campaign, date, etc.). However, it is important to
highlight the fact that it is also possible to search records by contact database ID. In other words, to use
the unique identifier of the contact within the Base uploaded to the system. This option requires the use
of the external contact ID field.

Important: In order to apply the filter option using the mentioned field, it is necessary to
indicate the corresponding field at the time of uploading the base.

11.1. Backoffice module 151


omnileads Documentation, Release develop

152 Chapter 11. BACKOFFICE MODULE


CHAPTER 12

AGENT MANUAL

In this chapter is covered all the actions that an OMniLeads agent can do inside an operation. Refering to receive/make
of calls, dispositions, scheduling, call transfers, and much more.

12.1 Agent Manual

We will split Manual Agent in the following topics stated below.

12.1.1 Agent Session

All related to agent session is decribed in this piece.

Login

Access the system using OMniLeads URL from a browser.


If there are no commercial certificates installed, a security exception takes place when trying to access for
the first time. This is because the presence of a self-signed certificate under https protocol.
In this case, just accept the exception and continue, as shown in figure 1 and 2.

153
omnileads Documentation, Release develop

Figure 1: certificate is not trusted

154 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 2: certificate is not trusted


After accepting security exception, agent is able to access using username and password.

12.1. Agent Manual 155


omnileads Documentation, Release develop

Figure 3: login screen


After successfull login, agent screen is shown. The first thing that comes up is a browser pop-up screen
telling us that OML needs access to microphone. As expected, this action needs to be allowed in order for
the agent to use those resources for operating.

Figure 4: OMniLeads wants to use your microphone


Once this is accepted, agent is able to login successfully and can listen a brief login message over the

156 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

headsets.
Agent will see the Webphone, and if all is going on a Registered status will be displayed as it is shown in
figure 5.

Figure 5: Succesful agent login

Agent Console

Agent console is the component where all call management flows. In the following picture, we can see
the different sections that will be explained below.

12.1. Agent Manual 157


omnileads Documentation, Release develop

Figure 6: the OMniLeads agent console


Agent Dashboard
When agents logged into the system will see a dashboard view that shows the following statistics of its
current day:
• The list of last 10 calls received/realized
• The number of connected calls and a pie graphic showing the relation between inbound and outbound
calls
• The agent recreational pause time and a pie graphic that shows the relation between the total session
time and the total pause time
• The number of its engaged dispositioned calls and a pie graphic that shows the relation between
engaged dispositioned calls and engaged dispositioned calls tagged as ‘observed’ on and audit
This dashboard is updated periodically and allows the agent get custom performance información in the
current day
Finally, is important to notice that the call list visualized in dashboard shows information about disposition
and its engagedment if corresponds. Also in this case also allows to modify disposition and engaged values
and call the contact using the number phone shown
Figure 6a: dashboard

158 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

(1) Contact Management


In this section we see the way the agent can navigate among different campaign contacts, scheduled
callbacks, dispositioned calls, and also access to Preview Campaigns in order to retrieve contacts to dial.
All the above will be explained in depth in the next sections.
(2) Status Bar
In this bar, session information is shown.

Figure 7: status bar


In the status bar there are two chronometers with the amount of agent time in Pause and Ready status. Its
color changes according to whether the agent is in the Ready (gray), On call (green) or Paused (yellow)
status. A status legend can also be seen as a description. Finally the Pause and Un-pause buttons appear,
so that the agent can go to pause and leave it.
(3) Dynamic Information Area
All the information that the agent is requesting while browsing can be seen in this section, as well as
Contact Information when agent processes a new call.
(4) Webphone
OMniLeads Wephone is the main component within Telephony module. Let’s review the embedded
buttons.

12.1. Agent Manual 159


omnileads Documentation, Release develop

Figure 8: Webphone
Webphone can be separated in 5 pieces:
• (1) Webphone Status. It should be seen always as Registered. If that is not the case, please cotact
the System Administrator.
• (2) Dialpad: used for dialing numbers manually or pressing DTMF options in a connected call.
• (3) These buttons allow the agent to shoot certain actions: dial, hangup, re-call, and the possibility
to “leave a mark” in a conversation, i.e. a specific comment.
• (4) These buttons allow to the agent to make actions like: make a transfer call, make a conference
with a third party and hold the call
• (5) This button allows to modify the campaign which is processed each manual call. More infor-
mation in “manual campaign” section
• (6) This button allows to make a call to another agent, also to make an outbound call to an external
number withouth association to a campaign
Almost all of the functionalities are analyzed in depth in the related sections.
Dock

160 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

In the current version, OMniLeads just supports Webphone component to make/receive calls. In future
versions Product Team will be activating other modules.

Pauses

Agent has the ability to enter in Pause mode so that no incoming or predictive campaign calls are delivered.
As explained in the “Initial configuration” section, there are different types of pauses the Administrator
can create and maintain in the system. Therefore, when entering the pause status, the agent must select
the type of pause.
For entering in Pause mode, Agent must click in the “Pause” button in the status bar of the console.

Figure 8: Pause
Pause type selection process takes place.

Figure 9: Pause class


Finally, the agent is paused. It should be noted how the status bar changes to “yellow” color, also the
current pause type can be read in the status bar and the Pause timer starts to run. On the other hand,
Operation timer stops.

Figure 10: On Pause

Logout

In order to log out of the system, agent needs to click on the exit button as displayed below.

12.1. Agent Manual 161


omnileads Documentation, Release develop

Figure 11: agent logout

12.1.2 Manual Campaigns

Agent and Operation in Manual Campaigns.

Manual Calls from Contact List

When an agent is assigned to a Manual Campaign, she/he can make calls from Contact List, this is: going
to menu Contacts -> Contact List and selecting the Manual Campaign where the contact is reachable to
be dialed. This can be seen in figure 1.

162 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 1: contact list


If agent clicks on Show Contacts, all of them appear listed as shown in figure 2.

Figure 2: contact list


Then, the agent can make a call to any of the phones listed, by clicking on the phone icon. From that

12.1. Agent Manual 163


omnileads Documentation, Release develop

moment the contact information is presented in the Agent screen and immediately the sytem attempts the
dial process.

Figure 3: call contact


If the communication has ended or the phone cannot be contacted, then the agent is able to re-attempt
with another contact number (if the contact has more than one phone loaded). If this is the case, then the
agent can click on any of the extra telephone numbers and will automatically dial the new number.

Figure 4: re-call contact


Finally, the agent is able to disposition the call through the Call Dispositions available. This list of Call
Dispositions was generated by the administrator for each campaign.

164 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 5: call disposition

Manual Calls dialing from Webphone

The agent can make calls directly from the webphone. It is typical in some Call Centers to distribute
contacts between agents using a spreadsheet or looking for the data in an external CRM.

12.1. Agent Manual 165


omnileads Documentation, Release develop

Figure 6: webphone manual call


Just pressing * enter * button or clicking on * dial * button, the call is made. If there is no pre-selected
campaign, the system asks to select one prior to attempt the call.

Figure 7: campaign selection


OMnileads makes a lookup of the dialed phone within the Contact Lists assigned. If it exists, all the
contacts matching that number are listed. Then the agent selects the contact to dial and the call is launched

166 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

presenting Contact Information in the agent console.

Figure 8: contact selection

Figure 9: contact call

Manual Calls to Non-Existing contacts

It can also happen that the dialed phone number does not match any contact, as shown in Figure 10.

12.1. Agent Manual 167


omnileads Documentation, Release develop

Figure 10: no contact for the number dialed


So, the agent can directly dial the phone and then save the new contact filling the campaign form, as
shown in Figure 11.

Figure 11: call without load contact


Or load the new contact to the campaign before dialing the number as indicated in figure 12.

168 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 12: load contact and call

12.1.3 Preview Campaigns

Agent and Operation in Preview Campaigns.

Preview Campagins

When an agent is assigned to a Preview Campaign, Preview menu needs to be used.

Figure 1: preview campaigns list


All assigned Preview Campaigns are listed here. Agent must select one of them and this will return a
contact to manage.

Figure 2: pull new contact

12.1. Agent Manual 169


omnileads Documentation, Release develop

Figure 3: contact delivered


Once the contact is delivered, the agent can either dial the phone number by clicking on the number, or by
clicking again on the preview campaign in order to retrieve another contact. The last one will be released.
Assuming a contact is called by clicking on it, contact information is displayed on the agent’s view, as we
have seen in Manual Calls section.

Figure 4: contact called


If the communication has ended or the phone could not be contacted, then the agent can try again with
another phone number (if the contact has more than one phone loaded). If this is the case, then the agent
can click on any of the extra telephones and will automatically dial the contact to the new number.

170 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 5: re-call contact


Finally, the agent is able to disposition the call through the combo of Call Dispositions. This list has been
generated from the Admin view.

Figure 6: call disposition


The agent have the posibility to select more quickly the next contact to call in the last preview campaign
select by clicking on the that is shown in the operation bar

12.1. Agent Manual 171


omnileads Documentation, Release develop

Figure 6: get next preview contact

12.1.4 Outbound Dialer Campaigns

Agent and Operation in Predictive Dialer Campaigns.

Agent in Predictive Mode

An active Agent assigned to an active Predictive Campaign, is able to receive calls from the dialer module.
The incoming calls are notified with a “beep” audio that is reproduced to the agent headset as soon as the
call is delivered. Contact details are also presented to the agent once the call is answered.

Figure 1: dialer call connect

Note: It is important to note that an agent working on a Predictive Campaign needs to be very alert as
the system is configured to deliver calls to agents as soon as the contact has been reached and answers the
attempt.

172 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

In addition to the reproduction of audio notification (beep message), the agent can notice the change in
the status bar of the screen. The bar has green color when agent is “On call” and also the name of the
campaign the call belongs to can be read.
Once the call ends (regardless of which end finishes the call) , the system forces the Agent status to
ACW (After Call Work), which allows the agent to finish filling the contact form with the respective Call
Disposition. After that, the agent will change this ACW status to available again , so that the dialer knows
she/he is ready to receive new calls.

Note: Agent is able to exit ACW pause status by inducing the agent to leave the pause or after a period
of time (in seconds) defined by the administrator. In the latter case, the agent simply has that grace period
for call disposition process and then automatically will be put back inReady for new calls.

How to make a Manual Call

There may be cases in which the agent assigned to a predictive campaign needs to dial a number manually.
In this case the agent is suggested to enter to pause mode and then from that state, generate the manual
call. Since otherwise it may happen that at the time of being dialing the manual call, the dialer sends a
predictive call and drops manual call attempt.
This manual call can be done to other phone numbers of the same contact, or external numbers out of
database. The important thing is to remember to go to pause at the time of the manual attempt.

12.1.5 Inbound Campaigns

Agent and Operation in Inbound Campaigns.

Incoming Call Distribution

As we well know from the “Initial configuration” section, the system can be configured for incoming calls
to generate a “Ring” on the agent’s webphone, giving the possibility of deciding whether or not to answer
the call. Or can be configured to directly connect incoming calls to agents (that is to say, auto-answer the
call).
Behavior can be seen in figure 1.

Figure 1: inbound call ring


If the configuration is in auto-answer mode (like a predictive campaign) , the agent will hear a “beep”
message once the call is connected and will see the name of the campaign the call belongs to.

12.1. Agent Manual 173


omnileads Documentation, Release develop

Figure 2: inbound call campaign

Contact Management

Incoming calls can be associated to contacts already available in database, or new contacts to be saved.

Figure 3: inbound call without contact


In this case, the agent can decide whether to disposition the call or not. In the positive case, then the agent
can proceed with the contact information upload and subsequent call disposition.

12.1.6 Call Actions

When Agent is on call, it counts on with multiple features that improve the call management.

Call to an Agent

To make a call to another OMniLeads agent, we must go to the “Call out of Campaign” button available
at the bottom of the webphone. When agent clicks on it, a window is displayed in order to facilitate the
selection of an agent from a list available and then the call is performed (Figure 1).

Outbound Calls Out of Campaign

Sometimes it is necessary to make a call to a number (subscriber number or extension of the PBX), without
the need of managing the contact as if it is part of a campaign logic. This is allowed by clicking on the

174 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

“Call out of Campaign” button available at the bottom of the webphone. The displayed window has a field
to enter the number to be dialed (figure 1).

Figure 1: without camp calls

Put a call On Hold

During a call, the agent has the ability to hold the call for a while. This is possible by clicking the “hold”
button in the webphone.

12.1. Agent Manual 175


omnileads Documentation, Release develop

Figure 2: call on hold


When hold button is clicked, the customer will listen hold music, while the agent can unhold the call when
he wishes, justo clicking in unhold, as seen in figure 2.

Figure 3: unhold
This functionality can be used with any type of call.

Call transfer and Conferences

Within the range of possibilities for call transfers that can be made in the system, we have the following:
Blind Transfer to another Agent
Supose that “agent A” has an active call and she/he wishes to transfer the call to “agent B”, directly. In
this case agent clicks the transfer button, inside the webphone and then selects “blind transfer”. After that,
she/he can select the agent.

176 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 4: “Agent A” to “Agent B” blind transfer


In this case the call is automatically transferred to “agent B”, leaving free “agent A”. Once the transfer is
made, it cannot be recovered, neither “agent A” can know if the transfer was attended by “agent B”.
Blind transfer to an external number
The “Agent A” is on an active call and wishes to blind transfer the call to an “external number”. When we
say external, we mean a call that is generated outside the system. It can be a PBX extension within the
company or an external telephone number of the PSTN.
In this case, the transfer button is clicked and then agent can select “blind transfer” as the type of transfer.
You must enter the destination number in the box as indicated in the figure 5.

12.1. Agent Manual 177


omnileads Documentation, Release develop

Figure 5: “Agent A” to “External Number” blind transfer


In this case, the call is automatically dispatched to the phone destination, and the webphone of the “agent
A ” is released. Once this transfer is performed, the call cannot be retrieved to original source, and “agent
A” cannot know if the call was attended or not by the transfer destination phone.
Consultative Transfer to another Agent
The “agent A” is on an active call and wishes to transfer the call to the “agent B” in a consultative manner;
that is to say that the external telephone is put on hold while the “agent A” opens a new channel to the
“agent B”. If the call between them is established and the “agent B” wishes to receive the transfer, then
the “agent A” drops the call and automatically the external telephone is bridged with the “agent B”.

178 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 6: “Agent A” to “Agent B” consultative transfer


In this scenario, another possibility is:
• That it is not possible to contact the “agent B”, then the “agent A” can cancel the transfer during the
ringing phase to the “agent B” using the button “Cancel Transfer” of the webphone.
• The contact with the “agent B” is achieved but the last one cannot (or does not want to) proceed with
the transfer. Therefore the “agent B” must drop the call and automically the “agent A” remains with
the connected conversation.
Three Way Conference: external number, Agent A and Agent B
This is a possible scenario within a consultative transfer, since the action to be executed by the agent that
drives the conference (agent A), is initially a consultative transfer. At the time of establishing conversation
between “agent A” to the “agent B” (while the external person or external number is on hold) the “agent
A” must click the “Confer ” button available on the agent Webphone and thus remain the three parties in
a conference call.

12.1. Agent Manual 179


omnileads Documentation, Release develop

Figure 7: “Agent A”, “Agent B” and External number three way conference
Consultative Transfer to external number
The “agent A” is on an active call and wishes to transfer the call to an external “telephone number” for
consultation purposes, putting “external phone A” on hold while the “agent A” opens a new channel to
the “external telephone B”. If the call between them is established and the “external telephone B” wishes
to receive the transfer, then the “agent A” drops the call and automatically the “external telephone A” is
joined to the “external telephone B”.

180 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 8: “Agent A” to “External telephone” consultative transfer


In this scenario, another possibility is:
• That it is not possible to contact the “external telephone B”, then the “agent A” can cancel the
transfer during the ringing phase to the “external phone B” using the “Cancel Transfer” button on
the webphone.
• The contact with “external telephone B” is achieved but this one cannot (or does not want to) proceed
with the transfer, therefore the “external telephone B” hangs up the call and the “agent A” remains
connected to “external telephone A”.
Three Way Conference: external telephone A, Agent, external telephone B
Under this scenario the “agent A” can set up a three-way conference between the “external number A”,
that is the person who initially established the call with “agent A” and an “external number B”, that can be
the extension of a PBX or a subscriber of the PSTN. In such a way, all the parties remain in a conference
room.
In order to perform this action, the “agent A” must initiate a consultative transfer to the “external number
B” and once in call the agent must click on the “Confer ” button of the webphone (Figure 9).

12.1. Agent Manual 181


omnileads Documentation, Release develop

Figure 9: “Agent A”, “Subscriber A” and “Subscriber B” three way conference

182 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 10: Webphone confer switch


Transfer to another Campaign
Under this scenario the “agent A” is in an active call and wants to transfer the call to an Inbound Campaign.
Agent must select “blind transfer ” option since the call is transferred to the queue of the target campaign.

12.1. Agent Manual 183


omnileads Documentation, Release develop

Figure 11: “Agent A” to “inbound campaign” transfer


As it is a blind transfer, the call is automatically dispatched to the destination number, while the “agent A”
webphone is released. Once this transfer is triggered, it cannot be retrieved, and “agent A” cannot know
if the call was really answered.

Tag a Recording Call

This functionality of the agent webphone allows to generate a mark on a recording call. The idea for this
flag is to be reachable from Recording Module.

184 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 12: call recording tag


As shown in figure 12, after clicking on the button to mark the call, a text field is displayed so that the
agent can describe the situation or add a specific comment.
Finally, using the OMniLeads recording module, you can recover that recording and see what the agent
has written on it.

On demand call recording

This feature allows agents to record a call on demand, since clicked the button shown in next picture. This
feature is only available for calls related to campaigns with recording calls option disabled

12.1. Agent Manual 185


omnileads Documentation, Release develop

The call recording can be stopped if user want it, clicking the same button in the middle of the recording,
if the user cannot do that the call will be recorded until the end of the call.

186 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Scheduled Callbacks

Scheduled Callback functionality allows the system to call again a specific contact based on time and date.
The idea is not to discard it, but keep managing it.
Personal Callback
When the agent requires calling a specific contact again, she/he is able to generate a reminder in the
personal agenda, and then listing them in order to call them back.
Agenda is a default call disposition of the system.

12.1. Agent Manual 187


omnileads Documentation, Release develop

Figure 13: Personal Callback


After call is dispositioned, a form is displayed for selecting the date, time and reason of the agenda being
in place.

Figure 14: Personal Callback details


Finally, the entry in the Personal Agenda remains available and can be seen by clicking in the Agenda

188 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

menu.

Figure 25: Agenda details


Global Callbacks for Outbound Dialer Campaigns
Global Callback is only applicable to Outbound Dialer Campaigns as it is intended to re-insert the contact
within the list of numbers to be called by the dialer. In this scenario the dialer simply calls the scheduled
number.
This is a functionality that allows agents to schedule a contact, since contact wants agent to call again
later, maybe because an impossibility to attend the call in that moment.
To create a Global Callback, you must disposition the call by selecting “Agenda” Call Disposition. After
that, agent must select “Global” as the type of agenda.

12.1.7 Agendas, Call Dispositions and Contacts

Agent has different menues to work with campaign contacts.

Campaign Contact List

The agent can list all the contacts of each campaign to which it is assigned. This is achieved by entering
the menu item “Contact - Contact list”.
A contact view is displayed, where agent is able to select the campaign to look for contacts.

12.1. Agent Manual 189


omnileads Documentation, Release develop

Figure 1: campaign contact list


By listing all contacts in the campaign, the agent can go through each of them or perform a search by
contact id, telephone, name, surname, etc.

Figure 2: contact search


For example, agent can search for a phone number in the list of contacts, as shown in figure 3.

Figure 3: contact search

190 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

The view allows to edit/modify any of the contacts listed.

Figure 4: contact search

Pending Agendas

The agent can access her/his phonebook of pending calls. This section lists all the entries that the agent
has registered during operation.

Figure 5: Agenda
The agent has each scheduled contact and its description. By clicking on the phone number, it automati-
cally triggers a dial attempt to the contact’s phone.

Agent Call Dispositions

In this menu, the agent can list all the dispositioned calls at a historical level. Therefore the agent counts
on with a backward control of each managed contact.

12.1. Agent Manual 191


omnileads Documentation, Release develop

Figure 6: call disposition list


The search process can be filtered by date and the agent can also access to the selected contact to review
their data or modify the call disposition.

Figure 7: call disposition edit


As you can see, the agent can modify the call disposition of a contact, and the form data in the case the
contact is dispositioned with a call disposition of type “Engaged”.

Agent’s recordings search

In this menú the agent can search for the recordings of his calls.

192 Chapter 12. AGENT MANUAL


omnileads Documentation, Release develop

Figure 6: call disposition list


REcordings can be filtered by date, call type, client phone number, call ID, campaign, if the call was
tagged, if it has call disposition and call duration

12.1. Agent Manual 193


omnileads Documentation, Release develop

194 Chapter 12. AGENT MANUAL


CHAPTER 13

Integration with PBX

Making a few configurations you can stablish a complete integration between OMniLeads and any PBX. In this section
you can see examples of the configuration necessary to integrate the PBX and OMniLeads Contact Center that live
together in same host.

13.1 Integration between OMniLeads & PBXs

We are going to approach our example using Issabel-PBX a well known free software project, however
all the exposed here can be extrapolated as configuration for any PBX with SIP support.

195
omnileads Documentation, Release develop

Note: The steps described in this section are applicable both to the scheme where OMniLeads is on one
exclusive host and the PBX on another, as well as to the case where OMniLeads runs in Docker coexisting
within the same PBX host.

13.1.1 SIP trunk configuration on PBX

We select the creation of a new SIP trunk y complete the configuration with the following parameters
• In case of having OMniLeads in a Host and the IPPBX in another Host within the LAN network.-
type=friend
host=XXX.XXX.XXX.OML
port=5161
disallow=all
allow=alaw
qualify=yes
(continues on next page)

196 Chapter 13. Integration with PBX


omnileads Documentation, Release develop

(continued from previous page)


secret=omnileads
fromuser=issabel
defaultuser=issabel
context=from-internal

• In case you have OMniLeads in the Cloud and the IPPBX in another Host within the LAN network.-

type=friend
host=XXX.XXX.XXX.OML
port=5162
disallow=all
allow=alaw
qualify=yes
secret=omnileads
fromuser=issabel
defaultuser=issabel
context=from-internal

• In case of executing OMniLeads with Docker inside of IPPBX base operating system

type=friend
host=XXX.XXX.XXX.PBX
port=5163
disallow=all
allow=alaw
qualify=yes
secret=issabelOML
fromuser=issabel
defaultuser=issabel
context=from-internal

Note that the only thing that changes between the different possibilities is the port parameter. This is
related to the fact that in OML a SIP port is used for each type of scenario: LAN, NAT cloud or Docker.

13.1. Integration between OMniLeads & PBXs 197


omnileads Documentation, Release develop

Once our SIP trunk is available, we go to check accessibility using the IPPBX Asterisk IPPBX

asterisk -rx 'sip show peers'

We should observe OK in the output line corresponding to the new SIP trunk, either with port 5161, 5162
or 5163.

13.1.2 SIP trunk configuration on OMniLeads

Once generated the SIP trunk on IPPBX side, we proced with the generationwith its corresponding part
on OMniLeads
• In case of having OMniLeads in a Host and the IPPBX in another Host within the LAN network

type=wizard
transport=trunk-transport
accepts_registrations=no
sends_auth=yes
sends_registrations=no
accepts_auth=yes
endpoint/rtp_symmetric=no
endpoint/force_rport=no
endpoint/rewrite_contact=no
endpoint/timers=yes
aor/qualify_frequency=60
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/context=from-pbx
remote_hosts=XXX.XXX.XXX.PBX:5060
inbound_auth/username=issabel
inbound_auth/password=issabelOML
outbound_auth/username=omnileads
outbound_auth/password=issabelOML

• In case you have OMniLeads in the Cloud and the IPPBX in another Host within the LAN network.

type=wizard
transport=trunk-nat-transport
accepts_registrations=no
sends_auth=yes
sends_registrations=no
accepts_auth=yes
(continues on next page)

198 Chapter 13. Integration with PBX


omnileads Documentation, Release develop

(continued from previous page)


endpoint/rtp_symmetric=yes
endpoint/force_rport=yes
endpoint/rewrite_contact=no
endpoint/timers=yes
aor/qualify_frequency=60
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/context=from-pbx
remote_hosts=XXX.XXX.XXX.PBX:5060
inbound_auth/username=issabel
inbound_auth/password=issabelOML
outbound_auth/username=omnileads
outbound_auth/password=issabelOML

• In case of execution of OMniLeas with Docker inside of the IPPBX base operating system, we used:

type=wizard
transport=trunk-nat-docker-transport
accepts_registrations=no
sends_auth=yes
sends_registrations=no
accepts_auth=yes
endpoint/rtp_symmetric=yes
endpoint/force_rport=yes
endpoint/rewrite_contact=yes
endpoint/timers=yes
aor/qualify_frequency=60
endpoint/allow=alaw,ulaw
endpoint/dtmf_mode=rfc4733
endpoint/context=from-pbx
endpoint/rtp_symmetric=yes
remote_hosts=XXX.XXX.XXX.PBX:5060
inbound_auth/username=issabel
inbound_auth/password=issabelOML
outbound_auth/username=omnileads
outbound_auth/password=issabelOML

Once efective our trunk, we pass to check if Issable is accessible from OMniLeads, using OMniLeads
Asterisk CLI.

Note: If we are executing OMniLeads in Docker, for access the container executing we must execute the
following command: docker exec -it oml-asterisk-prodenv, then we can start the CLI

asterisk -rx 'pjsip show endpoints'

The command output should be similar to the figure:

13.1. Integration between OMniLeads & PBXs 199


omnileads Documentation, Release develop

At this point, exists a SIP trunk between bot phone systems, pending the calls routing configuration
between both systems
Finally we emphasize on make relations between parameters onIssabel and OMniLeads SIP trunks
A picture is worth a thousand words:

13.1.3 How send calls from IP-PBX to OMniLeads

Now we exposed a way to connect the IP-PBX resources (inbound routes, IVRs, announcements, exten-
sions, etc.) with OMniLeads. It means, that, for example from one option of the company main IVR
can derive to an OMniLeads inbound campaing, or that one extension can contact or transfer a call to an
OMniLeads inbound campaign or OMniLeads agent.
This is completely viable using the IP-PBX custom extensions, in ourexample case: Issabel-PBX

200 Chapter 13. Integration with PBX


omnileads Documentation, Release develop

13.1.4 Calls to OMniLeads inbound routes

Now we present the example where the user want to create a custom extension in which, when call it from
another extension or invoke it from some PBX object(IVR, inbound route, announcement, etc) create a
channel against OMniLeads, particularly pointing to an inbound route which can at the same time, send
the call to an inbound campaign.
For one side, we have an inbound route in OMniLeas, pointing for instance, to an inbound campaign:

13.1. Integration between OMniLeads & PBXs 201


omnileads Documentation, Release develop

Having in mind that the DID choosen was 098098, in the IPPBX we mustgenerate an extension with type
custom, where the Dial stringshould point to the OMniLeads SIP trunk, and the sent number should be
098098.

202 Chapter 13. Integration with PBX


omnileads Documentation, Release develop

In the figure we mark three elements:


(1) • The extension number, could be different to the number sent to OMniLeads(3) . It can be every
numner, only making sure the Dial extension from the custom extension matches with the DID
number from the OML inbound route (098098 for our example)
(2) • The trunk where the custom extension points. This values must matches with the field Trunk
Name on the SIP trunk against OMniLeads generated on the IP-IPBX
(3) • The number to send by the trunk must match with the DID on the OMniLeads inbound route
This way every IPPBX extension could call o transfer a call to this custom extension and will be sent to
the related inbound route on OMniLeads for finally connect over an inbound campaign or the assigned
element as destination of the OMniLeads inbound route
As a final mention, we want to make clear that we can have in the IPPBXmany custom extensions pointing
to different OMniLeads inbound routesas we like !

13.1.5 Calls to OMniLeads agents

From the figure, let’s take the agent Adrian Belew. Note that its ID is 1 and its SIP number is 1006. For
that reason at the momment to make the number to send in the Dial string of the IPPBX custom extension
we must concatenate the SIP Number with its Agent ID; in our example will be 10061 for agent Adrian
Belew and 10072 for agent Mikael Ackerfeldt

When generating the configuration in the PBX to be able to send calls to the agents, we have two alterna-
tives
1- Use an outgoing route from the PBX to OMniLeads as indicated in the following figure

13.1. Integration between OMniLeads & PBXs 203


omnileads Documentation, Release develop

In this case, any extension of the PBX can generate a call to an agent by dialing the combination mentioned
in the previous paragraph.
Generate a custom extensions for each OML agent, that is, the Dial chain of the custom extension will no
longer be made up of an OMniLeads incoming route DID as it was in the case of linking with incoming
routes, but it will be a combination of the ID of the agent and his SIP number.
As indicated in the figure

204 Chapter 13. Integration with PBX


omnileads Documentation, Release develop

In the figure we mark three elements:


(1) • The extension number, could be different to the number sent to OMniLeads(3) . It can be
every numner, only making sure the Dial extension from the custom extension matches with the
concatenation of the ID agent and its SIP number (10061 for our example)
(2) • The trunk where the custom extension points. This values must matches with the field Trunk
Name on the SIP trunk against OMniLeads generated on the IP-IPBX
(3) • The number to send by the trunk must to match with the concatenation of the ID agent and its
SIP number (10061 for our example)
We must to repeat the procedure for every OMniLeads agent that want to customize there extension in the
PBX
Either of the two alternatives are viable and you will get the desired result.

13.1. Integration between OMniLeads & PBXs 205


omnileads Documentation, Release develop

13.1.6 Calls from OMniLeads to the PSTN and the IPPBX resources

Finally we are going to generate the outboung routing inside OMniLeadsthat allow agents and diales raise
calls to the PSTN, and , at the same timeallow agents to call or transfer calls to the IPPBX resources like
extensions, ring, groups, queues calls, etc

206 Chapter 13. Integration with PBX


omnileads Documentation, Release develop

Simply we must add a new outbound route that points to the trunk to the IPPBX

13.1. Integration between OMniLeads & PBXs 207


omnileads Documentation, Release develop

This way the integration is completely functional and both systems can make all types of calls and inter-
actions

208 Chapter 13. Integration with PBX


CHAPTER 14

IT ADMINISTRATOR MANAGEMENT

In this chapter is covered some tasks made from the IT administrator of OMniLeads. Refering to: configuration of the
dialer plattform, upgrade of software management, backup & restore and network parameters change.

14.1 IT administrator managment

14.1.1 Environment variables

Through this section is going to be commented the procedures that needs the use of inventory file. As
known the file is edited bofer installation and after that it becomes default. But the variables and their
values stayes as environment variables.
To check this variables open the file /etc/profile.d/omnileads_envars.sh.
cat /etc/profile.d/omnileads_envars.sh

AMI_USER=omnileadsami
AMI_PASSWORD=5_MeO_DMT
ASTERISK_IP=192.168.95.163
ASTERISK_HOSTNAME=localhost.localdomain
ASTERISK_LOCATION=/opt/omnileads/asterisk
CALIFICACION_REAGENDA=Agenda
DJANGO_PASS=098098ZZZ
DJANGO_SETTINGS_MODULE=ominicontacto.settings.production
EPHEMERAL_USER_TTL=28800
EXTERNAL_PORT=443
INSTALL_PREFIX=/opt/omnileads/
KAMAILIO_IP=192.168.95.163
KAMAILIO_HOSTNAME=localhost.localdomain
KAMAILIO_LOCATION=/opt/omnileads/kamailio
MONITORFORMAT=mp3
NGINX_HOSTNAME=localhost.localdomain
OMNILEADS_HOSTNAME=localhost.localdomain
(continues on next page)

209
omnileads Documentation, Release develop

(continued from previous page)


PGHOST=localhost.localdomain
PGDATABASE=omnileads
PGUSER=omnileads
PGPASSWORD=my_very_strong_pass
PYTHONPATH=$INSTALL_PREFIX
REDIS_HOSTNAME=localhost
SESSION_COOKIE_AGE=3600
TZ=America/Argentina/Cordoba
WOMBAT_HOSTNAME=localhost.localdomain
WOMBAT_USER=demoadmin
WOMBAT_PASSWORD=demo

export AMI_USER AMI_PASSWORD ASTERISK_IP ASTERISK_HOSTNAME ASTERISK_LOCATION


˓→CALIFICACION_REAGENDA DJANGO_SETTINGS_MODULE DJANGO_PASS EPHEMERAL_USER_

˓→TTL EXTERNAL_PORT INSTALL_PREFIX KAMAILIO_IP KAMAILIO_HOSTNAME KAMAILIO_

˓→LOCATION MONITORFORMAT NGINX_HOSTNAME OMNILEADS_HOSTNAME PGHOST PGDATABASE

˓→PGUSER PGPASSWORD PYTHONPATH REDIS_HOSTNAME SESSION_COOKIE_AGE TZ WOMBAT_

˓→HOSTNAME WOMBAT_USER WOMBAT_PASSWORD

This way the administrator can see them when he/she wants

Important: Do not edit this file.

14.1.2 Configuration of the Predictive Dialer module

Note: First of all, we notify that if the OML instance deployed in the previous steps does not contemplate
the use of campaigns with predictive outbound dialer, this step can be omitted.

OMniLeads needs a third-party tool to implement the campaigns with predictive outbound dialer. This
tool is based on comercial software licenses that must be managed with the manufacturer.
In any case the system can be used with a test channel that grants as a demo. Therefore we can configure
the component and run concept tests before acquiring licenses for a real operation.
If running predictive campaigns is desired, we must generate the following basic Wobal Dialer settings.
To generate this configuration we must follow some steps that begin with the access to the corresponding
URL.
http://omnileads.yourdomain:8080/wombat or http://XXX.XXX.XXX.OML:8080/wombat

Note: In case of running OMniLeads Dockerized the URL is:http://XXX.XXX.XXX.OML:442/wombat


Where XXX.XXX.XXX.OML is the IP of docker engine host

Creation of database

When enter for the first time, we must proceed with the creation of a MariaDB database that uses Wombat
Dialer. Click on the highlighted button in figure 2.

210 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

Figure 1: DB create
Then is the moment to ingress root MySQL user password and then click on the button shown in figure 2.

Note: Since OMniLeads 1.6.0 version a MySQL root password is not set, so you can leave this field
empty.

We proceed then with the creation of the MariaDB database that will use from now on the Wombat Dialer
component.

Figure 2: MariaDB root password

First login

Once created the MariaDB database that Wombat Dialer uses, we proceed with the first login.

14.1. IT administrator managment 211


omnileads Documentation, Release develop

Figure 3: Login post db create


A login must be performed then in the Wombat Dialer administration interface to continue with the con-
figuration of the necessary parameters for the OML interaction.
Upon entering a screen like the following is displayed, where we must access with the user and passwords
generated within the installation.

Figure 4: Access to WD

212 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

Change of web credentials

By default Wombat Dialer comes with the web credentials demoadmin as user and demo as password.
These credentials can be changed:
• Firstly, the credentials must be defined in the inventory file, these are the variables dialer_user and
dialer_password. See Passwords and parameters.
• Go to Wombat Dialer web, and go to Administration -> Edit users.

Figure 5: WD change credentials


• There you can see the user demoadmin, click on the pencil icon, change the user in Login field with
the same user you ingressed in the variables dialer user, for password use the same password
ingressed in dialer_password.
• Finally click on Save button.

Figure 6: WD change credentials 2


• Once finished, reload the page and ingress with the new credentials.

14.1. IT administrator managment 213


omnileads Documentation, Release develop

AMI credentials

Note: From release-1.8.0 take care of this

Wombat Dialer will use different AMI credentials that OMniLeads uses, for that reason, the AMI user
wombatami is created inside the file oml_manager.conf. The password for this AMI user changes de-
pending of what inserted the user in inventory file parameter ami_password. By default the user comes
this way:

[wombatami]
secret = 5_MeO_DMT
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.255
read = all
write = all

Basic parameters

Once inside the system, we proceed with the configuration of the two basic parameters to make the
integration with OMniLeads ready. To do this we must access the “Basic configuration” menu as indicated
in figure 7.

Figure 7: WD basic config


In this menu, first of all, a new conection instance must be generated inside the Asterisk Servers section
as exposed in figure 8.

214 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

Figure 8: WD basic config - AMI Asterisk


In the next point, a Trunk is configured using an arbitrary “Trunk name”, but with the calling chain marked
in figure 9. Local/${num}@from-oml/n

Figure 9: WD basic config - Asterisk Trunk


At last, remember to “play” the dialer service, as indicated in figure 10.

14.1. IT administrator managment 215


omnileads Documentation, Release develop

Figure 10: WD activate


Finally the platform is enabled to manage predictive calls. The default installation has a Wombat Dialer
demo license for a channel.

Backup/restore of database

You can make a backup/restore of MariaDB dialer database, executing the following commands in the
host where Wombat/MariaDB is running.
To perform a Backup:

# mysqldump -B wombat -u root -p > $ubicacion_archivo_dump/dump.sql


Enter password:

Where $ubicacion_archivo_dump is the path where you are going to place the dump file
To make the restore, in a new MariaDB server:

mysql -u root -p qstats < dump.sql

You must have the backup file in the new server to restore the database

14.1.3 Change SSL certificates

If you want to change the SSL certificates you need to have yours in .pem format. Rename the files, they
must be *cert.pem and key.pem. Then place them in these folders:

/opt/omnileads/nginx_certs/
/opt/omnileads/kamailio/etc/certs

After that, restart the following services:

service nginx restart


service kamailio restart

216 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

14.1.4 Reset admin web password

If you have forgotten the password for admin user you can reset the same to its default values (ad-
min/admin), for that SSH into OMniLeads and execute this command:

/opt/omnileads/bin/manage.sh cambiar_admin_password

14.1.5 Backup & Restore

OMniLeads has a script to perform the Backup/restore tasks.

Important: In case of perform the restore in a new machine, that machine must:
• Has OMniLeads installed in the same version that the productive machine
• Has the same IP and the same hostname of the productive machine

To perform a Backup:
We must access the host where OMniLeads is running through ssh. Once inside the host we execute the
following commands.

su omnileads -
cd /opt/omnileads/bin
./backup-restore.sh --backup

The execution of the script throws an output similar to the one on figure 11.

Figure 11: backup


As we can see, it indicates us how to perform the restore of that Backup.
Inside the path /opt/omnileads/backup, the “.tgz” files that contain the executed backups are generated.
If the restore is performed in a new host, then the file generated in the Backup within the path
/opt/omnileads/backup must be left available.

Note:
• The script will detect if there are addons installed, and will backup them.
• The backup makes a copy of omnileads_envars.sh file

If you dont want to make a database backup you can run script with the –no-database option

14.1. IT administrator managment 217


omnileads Documentation, Release develop

./backup-restore.sh --backup --no-database

To perform a restore, we must execute:

su omnileads
cd /opt/omnileads/bin/
./backup-restore.sh --restore=nombre_del_archivo_de_backup

For example:

su omnileads
cd /opt/omnileads/bin/
./backup-restore.sh --restore=20190211_database.tgz

It is no needed to add the full location path of the backup.


A succesful restore throws an output similar to figure 12.

Figure 12: restore


Once the restore is finished, execute the following command to regenerate the configuration files and
AstDB values of the restored instance:

/opt/omnileads/bin/manage.sh regenerar_asterisk

Note:
• If there is no database backup, the restore of database isn’t done
• A copy of omnileads_envars-sh file will be placed in /opt/omnileads/bin/omnileads_envars.backup
• If the backup includes addons, the restore is going to execute te reinstall of theses addons

14.1.6 Upgrades

OMniLeads create continuously releases, so it’s necessary that you upgrade de software periodically.

Important: Upgrade under release-1.3.1 to release-1.3.1 (including it)


• Is ESSENTIAL to know the passwords for postgresql, mysql and django admin that were set during
installation. You can see these passwords in my_inventory file and you will have to type them again
in inventory file. If the same passwords are not used, the upgrade will set up the passwords you
typed in inventory file
• If you don’t use the same MySQL password you set during install, the upgrade will fail

218 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

Upgrade after release-1.3.1


• If you don’t want to change variable values, just define the installation type.
• If you want to change some variable, ingress it in inventory file and the upgrade process will change
it for you.

Below are the steps to follow in order to perform a new platform update. This task is also performed with
the script “deploy.sh”.

Self-Hosted Upgrade

Para proceder en este escenario:


• Access as root user in the machine with OMniLeads installed
• Access the host omnileads as root Position on the directory where the script “deploy.sh” resides

cd ominicontacto/deploy/ansible

• Una vez posicionado sobre dicho directorio, procedemos a traer todos los cambios que se hayan
realizado sobre el repositorio.

git fetch

Para luego seleccionar el release al cual se desea saltar:

git checkout release-V.V.V

Recordar que la tecla Tab al presionar más de una vez, autocompleta el comando desplegando todos los
releases. Una vez seleccionado el release:
• Uncomment the line for self-hosted installation in the inventory file

#############################################################################
˓→#############

# If you are installing a prodenv (PE) AIO y bare-metal, change the IP and
˓→hostname here #

#############################################################################
˓→#############

[prodenv-aio]
localhost ansible_connection=local ansible_user=root #(this line is for self-
˓→hosted installation)

#10.10.10.100 ansible_ssh_port=22 ansible_user=root #(this line is for node-


˓→host installation)

• Then the script is executed with the -u (update) parameter. This execution will take some minutes
and implies applying all the updates downloaded with the “git pull origin master” on our OMniLeads
instance.

./deploy.sh -u --iface=$NETWORK_INTERFACE

• If everything flows correctly, at the end of the task execution we will see a screen as shown in figure
13.

14.1. IT administrator managment 219


omnileads Documentation, Release develop

Figure 13: updates OK

Actualizaciones en utilizando método Deloyer-Nodes

• The cloned repository should be accessed on our Workstation machine, to run the update on the
Linux OMniLeads host.

cd PATH_repo_OML
cd ominicontacto/deploy/ansible
git fetch
git checkout release-V.V.V

Recordar que la tecla Tab al presionar más de una vez, autocompleta el comando desplegando todos los
releases. Una vez seleccionado el release:
• Uncomment the line for self-hosted installation in the inventory file

#############################################################################
˓→#############

# If you are installing a prodenv (PE) AIO y bare-metal, change the IP and
˓→hostname here #

#############################################################################
˓→#############

[prodenv-aio]
#localhost ansible_connection=local ansible_user=root #(this line is for
˓→self-hosted installation)

10.10.10.100 ansible_ssh_port=22 ansible_user=root #(this line is for node-


˓→host installation)

• Then the script is executed with the -u (update) parameter. This execution will take some minutes
and implies applying all the updates downloaded with the “git pull origin master” on our OMniLeads
instance.

sudo ./deploy.sh -u

220 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

• Finally, the platform is updated to the last stable version “master”

Figure 14: updates from ansible remote OK

Note: AIO installations will not be supoorted in future for Debian and Ubuntu so, is recommended to
use CentOS.

Docker containers Upgrade

Once installed OMniLeads dockerized is not going to be always necessary to use Ansible to make an
upgrade of system, except in this cases:
1. Upgrade of some component installed in Docker Host (rtpengine or postgresql).
2. Modification of some parameter in docker-compose file.
3. Addition of a new envar.
• In case that is necessary: follow the steps for about_install_docker_linux except the step of set up
Passwords and parameters, unless you want to modify any variable. In the variable oml_releases,
set up the release you want to upgrade.
• In case there is NO necessity: do the following steps:
– Go to /home/omnileads/prodenv/ folder
– There modify the RELEASE variable in .env file.
– Logout of actual session and login again.
After that make service omnileads-prodenv restart.

systemctl restart omnileads-prodenv

In restarting process, when the docker-compose is executed check the tag version, this will begin the
download of new images for that release.

14.1. IT administrator managment 221


omnileads Documentation, Release develop

Note: The new releases use to bring new JavaScript code. The browser mantains the old code in the
cache so it is recommended to install an addon in the browser to clear the cache. Clear cache to Google
Chrome, for example

14.1.7 Changes of network parameters (Hostname and/or IP Address) and


changes of passwords of services

AIO Environment

• To do these tasks, you must execute again the deploy.sh script


• If you want to change IP/hostname you must inside the server with root user, change the
IP/hostname and be sure the system got the changes. A reboot of the system is recommended.
• If you want to change passwords edit the password you wish, see Passwords and parameters to
check the variables related to passwords.
You must execute the deploy.sh script, this way:

./deploy.sh -u

Important: You must be sure you run the deploy script in the same release installed in the system,
otherwises an upgrade of software will be done.

Docker Environment

The only difference with the AIO environment is that you must run deploy.sh script in this way:

./deploy.sh --docker-deploy

14.1.8 Users unblock

OMniLeads count with a block users system, when someone enter the wrong password three times. This
is the security measure implemented to avoid brute force attacks in the platform’s Login console. The
administrator user has the possibility of unblocking any user who has been blocked by entering the wrong
password unintentionally.
To unblock it you enter the following URL: https://omnileads-hostname/admin, this URL displays the
Django Administrator Console.

222 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

Figure 15: Django admin console


There, enter the admin user credentials. Then click on the button Defend

Figure 16: Defender in django admin


This opens the Django Defender administrator (https://github.com/kencochrane/django-defend) which is
the Django plugin used to manage this. Click on Blocked Users

Figure 17: Blocked users view


You will see the blocked user. Just click on Unblock to unblock it.

14.1. IT administrator managment 223


omnileads Documentation, Release develop

Figure 18: Unblock user view


Now the user can login without problem.

14.1.9 OMniLeads unistall

If by any reason you want to unistall OMniLeads from your machine or VM, there is a script for that. It
is already incorportaed in the install process, just execute it:

oml-uninstall

This script:
• Unistall the essential services of omnileads: asterisk, kamailio, rtpengine, mariadb, postgreSQL,
wombat dialer, redis, nginx and omniapp.
• Delete the file /opt/omnileads (including recordings)
• Remove the databases

Note: The script does not unistall the dependency packages used to install the services.

Important: Be careful when executing it, once executed there is no way to recover the system.

14.1.10 Creando imágenes Docker de OMniLeads

OMniLeads cuenta con una imagen para cada servicio que compone el software, dichas imágenes oficiales
están disponibles en nuestro Docker-Hub. Usted podrá crear sus propias imágenes basándose en los
Dockerfiles que tenemos predefinidos para cada servicio, debe tener en cuenta lo siguiente:
• Se usa Ansible como herramienta para buildear muchas imagenes al tiempo, por lo que los Dock-
erfiles son templates de Ansible, ubicados en el deploy/ansible/roles/docker/files/Dockerfiles. Esto
quiere decir que si quiere hacer algún cambio en los Dockerfiles debe tener conocimiento en Ansible.

224 Chapter 14. IT ADMINISTRATOR MANAGEMENT


omnileads Documentation, Release develop

The Docker DevEnv and ProdEnv

OMniLeads provides a development environment (DevEnv) for Django developers who want to get in-
volved in the project, we take care of the maintenance of these images and they are responsible for the 9
services that make up the system. This environment is ideal for developing code changes and having the
change in real time, without the need to restart containers. In turn, ProdEnv is the ideal environment for
productive environments, using images from 5 services (all except mysql, postgresql and rtpengine).

Images build

To builde images follow the next steps:


1. Specify in the ansible inventory file which environment you want. Uncomment the line that says
#localhost depending on the environment.

# If you are installing a devenv (PE) uncomment


[prodenv-container]
#localhost ansible_connection=local
# If you are installing a devenv (DE) uncomment
[devenv-container]
#localhost ansible_connection=local

2. In the same file observe the section [docker: vars], in it you will see some variables without value:

[docker:vars]
registry_username=
#registry_email=
#registry_password=
oml_release=

Enter there the username, email and password of the Registry where you want to upload your images.
The oml_release variable is used only when you want to compile images for ProdEnv. This variable will
define the Tag that the images will have
3. Lastly, run the deploy.sh script as follows:

./deploy.sh --docker-build

Note: During the execution the images are built and pushed at once, so if you experience any error at the
time of the build due to internet connection problems, it is recommended to run the script again.

4. We have the option of creating the entire build environment (with all the files necessary for that
build rendered) but without the images being built / pushed. In this way we give the option for the
developer to study in depth the Dockerfiles of each service. Run the deploy.sh script as follows:

./deploy.sh --docker-no-build

You will find all this content in

14.1. IT administrator managment 225


omnileads Documentation, Release develop

226 Chapter 14. IT ADMINISTRATOR MANAGEMENT


CHAPTER 15

CRM INTEGRATION

OMniLeads allows integration with Web CRM systems, allowing to configure the software to send notifications and
requests from OMniLeads to the CRM system and vice vers through the system API.

15.1 CRM integration

As well mentioned in the official documentation, OMniLeads allows us a bi-directional interaction with a CRM system.
That’s why we go to divide the configurations in two parts.
From one hand:

15.1.1 OMniLeads to CRM Interaction

Each campaign can invoke a CRM or particular view


OMniLeads will execute program calls or notifications to the CRM when using campaigns with external
URL set from the administration level. This can occur in incoming campaigns, preview or predictive
dialer.

Figure 1: campaign calls and crm

227
omnileads Documentation, Release develop

The idea of this interaction is that the agent counts on with a view of the contact information in the CRM.
OMniLeads allows a CRM URL invocation involving parameters of the call, contact and / or custom
parameters within the context of the campaign running the program call to the CRM.
Depending on the settings applied in the campaign configuration, the invoked URL may be embedded
within the agent console , or a new browser tab can be opened for each program call. Another action is to
simply send an HTTP-Post JSON to the CRM.

Figure 2: CRM and agent console


Finally we must consider that the execution of the CRM URL by OMniLeads can be done automatically
(i.e. when call attempt is performed) or triggered by the agent after pressing a button in the agent console.
All configuration details associated with this scenario of CRM Integration are covered within this section.

Activate a new External CRM entity

The first step to follow is to register the entity ” External CRM” with the related web address (URL) and
the interaction settings we expect. For that, access to the menu Campaigns - External Sites - New Site.

Figure 3: new crm


As stated in figure 3, in this step we need to simply complete the resource name, define the URL of the
resource to invoke, and the type of interaction (GET, POST or JSON) with external CRM. Finally we set
if the system will open a new tab per connected call, make the request and embed the result within the
agent console or send a notification (JSON) to the CRM with the call parameters.
Let’s list each form field (figure 3):

228 Chapter 15. CRM INTEGRATION


omnileads Documentation, Release develop

• Name: reference name


• URL: this is the web address to invoke on each call. Here we only declare the web resource to
invoke. As we will see later, the parameters are customized per campaign.
• Trigger: here you can select the way you are going to invoke CRM URL web address.
– When “Agent” is selected, then when the call connects with an agent, this is the one who
triggers the execution of the CRM URL through an AJAX request from the browser.
– When “Automatic” is selected, the execution of CRM URL is performed at the time the call
is delivered to the agent console, through an AJAX request from the browser.
– When “Server” is selected, then a HTTP POST request to CRM is generated.
• Method: the execution of the CRM URL can be done through GET/POST request.
• Format: in case of using HTTP-POST, HTML format can be defined here.
• Scope: if the “trigger” is set as Automatic or Agent, then the result of the request made to the CRM
URL can be displayed “embedded” in the agent console or by opening a new “tab” in the agent
browser.
Once the CRM with all the configuration parameters is generated, we can affect it to different campaigns
so that the CRM can be invoked in each call delivered to an agent.

Campaign configuration with CRM Interaction

All OMniLeads campaign types are able to activate this CRM interaction per agent call. In his point we
will see some examples on how to perform this configuration using the campaign wizard (figure 3).
All campaigns have the ability to trigger a form or a CRM Interaction at the time a call is connected to an
agent. In this configuration you may indicate CRM Interaction and then define the External CRM entity
that will take place.

15.1. CRM integration 229


omnileads Documentation, Release develop

Figure 4: CRM campaign activate


Then it is necessary to assign the parameters to be sent to the CRM. This is also set in the campaign
configuration. (figure 5).

Figure 5: CRM campaign params


At this configuration phase, we can indicate the expected parameters available in OMniLeads System
that must be sent to the CRM every time a call is connected to an agent. Those available parameters are
grouped by four families:
• Campaign data, conformed by the parameters:
– id: id of the campaign.
– name: represents the campaign name.
– type: represents the campaign type.
• Call data, conformed by the parameters:
– call_id: is the transaction identifier within OMniLeads.
– agent_id: this is the id of the agent that is processing the call in charged of triggering the
request to the CRM.
– telephone: is the contact telephone number.
– contact_id: is the internal id of the contact in the campaign.
– rec_filename: the name of the audio file that contains the recording of the call connected
to the agent.
• Contact Data, parameters available from the columns of the current campaign contact database.
Any column can be chosen as a parameter to send to the CRM.
• Fixed Parameter, you can set custom parameters to be sent on each call.
• Dato de Dialplan, es un parámetro que el Dialplan debe enviar en un header en el originate
With all parameters defined above, in the figure 5 we need to note that three fields still need to be com-
pleted per parameter in order to be sent.
• 1st Field: corresponds to the parameter type (campaign data, call data, database data or fixed data).
• 2nd Field: corresponds to the specific name of the parameter to be sent (for example “name” if it is
a campaign data).
• 3rd Field: is the name of each parameter, expected from the CRM side.

230 Chapter 15. CRM INTEGRATION


omnileads Documentation, Release develop

Example 1: CRM interaction using GET

Let’s assume the following URL needs to be executed: https://my_crm.domain.com?idClient=321321321&idCamp=11&lang=


115-20190604-2-4149014-1559667982.424.wav
As you can note in our example of URL, each execution must provide:
• Contact ID
• Campaign ID that will invoke external CRM
• Parameter “lang=es”
• Recording of the current connected call
How would we implement this requirement from what we have covered in this chapter?
Generate the new CRM
Figure 6 shows the implementation of the proposed CRM seen in our example.

Figure 6: CRM definition


Therefore, campaign configuration now will proceed in order to invoke the CRM with the parameters
specified above.
In Figure 7, we explain how to configure the campaign to work with the CRM of this example.

15.1. CRM integration 231


omnileads Documentation, Release develop

Figure 7: Campaign and CRM


The last step has to do with the assignment of the related parameters for CRM interaction. In figure 8 we
see an example of this step.

Figure 8: Campaign CRM parameters


Finally we highlight the relationship between columns 2 and 3 for each parameter, since they make the
assignment between system parameters and the expected parameter names on the CRM side.

232 Chapter 15. CRM INTEGRATION


omnileads Documentation, Release develop

Example 2: CRM Interaction using GET and Clean URLs

Let’s assume that you want to run a Clean URL : https:


//my_crm.domain.com/idClient/idCamp/lang/recordingFile
For instance: https://my_crm.domain.com/321321321/11/es/prev-115-20190604-2-4149014-1559667982.
424.wav
As you can note in our example of URL, each execution must provide:
• Contact ID
• Campaign ID that will invoke external CRM
• Parameter “lang=es”
• Recording of the current connected call
How would we implement this requirement from what we have covered in this chapter?
Generate the new CRM
The implementation of the proposed CRM is shown as an example in Figure 9.

Figure 9: CRM definition with clean URL


The figure highlights the “holders” needed to work with Clean URLs. When generating the URL to
be executed, parameters must be specified between brackets. Those Parameters will then be used when
generating the campaign for that CRM interaction.
Therefore, campaign configuration now will proceed in order to invoke the CRM with the parameters
specified above.
The main difference from the standard URLs (HTTP GET) that is exposed in the example 1, is that when
assigning parameters in the campaign, “holders” need to be used instead of “Parameter Names”, as shown
in figure 10.

15.1. CRM integration 233


omnileads Documentation, Release develop

Figure 10: Campaign and CRM parameters


Finally we highlight the relationship between columns 2 and 3 of each parameter, within the scenario of
“clean URLs “.
And for the other hand, we get:

15.1.2 CRM to OMniLeads Interaction

It is also possible from a CRM system to execute requests once accessing to the endpoints of the about_api.
Throughout this section we will go to explain how to activate the actions available from an external CRM.
• Click to call: a CRM user who is available in the contact view can make a call to the contact number
clicking on that number within the CRM. The click action triggers a program call to an OMniLeads
API method in order for the system to route the call accordingly.
• Call Disposition: each call connected to an agent can execute a request to the CRM passing usable
call parameters. When the user finishes the call within the CRM, she/he proceeds with the “Call Dis-
position”. This action allows CRM to access an OMniLeads API method establishing a correlation
between the OMniLeads campaign level and CRM contacts.
In order to implement the listed actions, CRM developer needs to implement these functionalities con-
suming the about_api. Once the functionalities from CRM side are available , the following configurations
need to be set as to start operating with this integration level.

CRM and OMniLeads entities Relationships

As we well know, each call processed by OMniLeads implies a relationship between a Campaign, an
Agent and in most cases a Contact. We could talk about the Trinity: “Agent - Contact - Campaign”.
In the CRM universe we also know that we have the same relationship between the CRM User, the
campaign she/he is operating and the contacts associated to the campaign. Therefore, the relationship
stated here has to do with the fact of being able to relate each OMniLeads agent, campaign and contact
with the expected CRM entity side. This concept will allow a perfect correlation between CRM and
OMniLeads systems when executing a “click to call” or “disposition a contact”.
OMniLeads has its own identifiers (agent, campaign and contacts of the campaign) self-generated. It
is also common to find the same scenario in CRM , therefore it is desired to make a mapping process
between OMniLeads and CRM in this aspect. We will explain below how to synchronize these identifiers
between both systems.
OMniLeads Agents and CRM Users relationship

234 Chapter 15. CRM INTEGRATION


omnileads Documentation, Release develop

The first step is to register an External System entity and associate the OMniLeads agents with CRM users
by entering the ID (identifier) of the user in the CRM, as indicated in Figure 1.

Figure 1: new external crm


That being said, each identified agent will be able to interact from the CRM.
Relationship between OMniLeads and CRM Contact Database
In order to create a Contact Database relationship between systems, the database upload process will offer
an external ID selector field, as shown in figure 2.

Figure 2: new crm contact database


This value must be unique for each contact in the database, so there should be no contacts with the same
value. Each contact can only have one external identifier.

15.1. CRM integration 235


omnileads Documentation, Release develop

In Figure 2, the example assumes that column “id_contact” is the one reserved for external ID. Therefore,
OMniLeads will consider this column/value when interacting with CRM system.
Relationship between OMniLeads and CRM Campaigns
When a Campaign Wiozard is in process, there are fields related to CRM interaction. Remember that in
the section of OML to CRM Interaction we present the field Type of interaction “External URL”, to be
able to launch a program call to the CRM for each call connected to the agent. In this section we present
the Interactions from the CRM to OML, so let’s work with the fields “External system” and “external
system ID” respectively (Figure 3).

Figure 3: new camp crm to oml interaction


Therefore, the wizard process selects the external CRM that will execute the requests against OML (Ex-
ternal System). And on the other hand, the ID of the corresponding campaign we wish to link to (external
system ID). Each campaign can only be linked to one External CRM campaign.
Then we move forward with the creation of the campaign with all the steps that we already know.

Note: When the exposed linkage is processed, the following exceptions can exist.

• When assigning agents that do not have an external identifier in the selected External System.
• When assigning a Contact Database that is already assigned to a campaign with another External
System configured.
• When assigning an External URL that is already assigned to a campaign with another External
System.
Notifications will also appear when editing an External System , if there are missing external
identifiers in agents assigned to campaigns where External System is configured.

236 Chapter 15. CRM INTEGRATION


CHAPTER 16

OML API

In this section you will find all the information about the Rest API of the system

16.1 OMniLeads RESTful API

This section is destinated to developers that want to execute an integration between its CRM system and
OMniLeads. For that reason, the terminology and information provided here has software developers as
its public target.
OMnileads offers a RESTful API base on HTTPS / JSON. This API allows access to system resources and
services by outside of the user web interface, allowing this way that external systems could communicate
in a simple way with OMniLeads.
The authentication methods available for this API are: Session (the agent must be logged on the system
via web interface) and Token (using its credentials to obtaing a token)” and then passing it on the headers
of the request:
“”Authorization: Bearer <token value>””
For example:

Note: In new releases this section will increase, in order to add new endpoints.

Then when describe the availables endpoints

237
omnileads Documentation, Release develop

16.1.1 Login Endpoint

This endpoint allows to authenticate as a system user, in case of success, it allows access to others avail-
ables endpoints depending of the user profile
URL: POST https://<omnileads_addr>/api/v1/login

figure 1: endpoint login request

filed name type description


username string username value generated from the OML users creation menu
password string password value generated from the OML users creation menu

Successful authentication
If the login is successful, the endpoint shows the following output:

figure 2: endpoint login request ok


As shown in the picture, a successful login, returnsfields like security “token”. This token must be used
on next requests to the API from the authenticated user. Also, in the field “expires_in” indicates the token
lifetime
In case that the system makes a request and the security token has expired, then a new authentication
request must be done.

238 Chapter 16. OML API


omnileads Documentation, Release develop

Note: The security token’s lifetime can be configured modify-


ing the “TOKEN_EXPIRED_AFTER_SECONDS” parameter located on
“/opt/omnileads/ominicontacto/ominicontacto/settings/production.py”

Authentication failed
If the login failed, the endpoint returns the following output:

figure 3: endpoint login request fail

16.1.2 Endpoint to obtain Contact database structure

This endpoint makes possible to obtain information fields informationof contacts database related to a
campaign. With this information is possiblethen to create a new contact. The credentials must belong to
an Agent(Users) or a Supervisor (Users) associated to a campaign
URL: POST https://<omnileads_addr>/api/v1/campaign/database_metadata/

filed type description


name
idEx- in- Optional parameter, if sent the system tries to locate the contact as ‘external_id’ on
ternal- te- the Campaign contacts database. If not sent, the system will assume that the value of
Sys- ger the paramater ‘idContact’ is the intern id on OML
tem
id- string Contact identifier to tag, its value depends on if ‘idExternalSystem’ parameter is sent
Cam-
paign

In case of no errors ocurred it will show an output like this, with data of the new disposition created

The ‘fields’ field indicate the list of all the fields of a contact database.The field ‘main_phone’ indicates
which is the field correspondent to the main numberThe field ‘external_id’ indicates which field corre-

16.1. OMniLeads RESTful API 239


omnileads Documentation, Release develop

spond to the external id of contact.When the database doesn’t have external id, the ‘external_id’ field will
be None.
In case of errors ocurred, the endpoint returns a JSON with the field ‘status’:’ERROR’ and the detailed
information of the error on the field’errors’. On other case the ‘status’ field value will be ‘OK’

16.1.3 Endpoit to create contact

This endpoint allows to add a contact in a database referred to a campaign.The credentials must belong to
an Agent(Users) or a Supervisor (Users)associated to a campaign
URL: POST https://<omnileads_addr>/api/v1/new_contact/

filed type description


name
idEx- in- Optional parameter, if sent the system tries to locate the contact as ‘external_id’ on
ternal- te- the Campaign contacts database. If not sent, the system will assume that the value of
Sys- ger the paramater ‘idContact’ is the intern id on OML
tem
id- string Contact identifier to tag, its value depends on if ‘idExternalSystem’ parameter is sent
Cam-
paign

Also, it must send the values of the fields correspondent to the contactdatabase, and their names can be
obtained with using the endpoint: Obtain Contact databse structure (Endpoint to obtain Contact database
structure). Is mandatory to send the value to the field ‘main_phone’, and in case the database has external
id, the field’s value ‘external_id’ mustn’t exist previously in other contact of database.
In case of no errors ocurred it will show an output like this, with data of the new disposition created

In case of errors ocurred, the endpoint returns a JSON with the field ‘status’:’ERROR’ and the detailed
information of the error on the field’errors’. On other case the ‘status’ field value will be ‘OK’

16.1.4 Call generator endpoint

Allows to generate calls (click to call) from an External CRM System.The credentials must belong to an
Agent (Users).
URL: POST https://<omnileads_addr>/api/v1/makeCall

240 Chapter 16. OML API


omnileads Documentation, Release develop

figure 4: endpoint new call request

filed type description


name
idEx- string Optional parameter, it must be sent if needed to link campaign with the external CRM
ter- system
nal-
Sys-
tem
id- string Required parameter, must match with an OML campaign identifier. If the parame-
Cam- ter ‘idExternalSystem’ is sent, it must match with the field “external identifier” of a
paign campaign associated to the External System specified
idA- string Required parameter, must match to a system Agent identifier. If the parameter ‘idEx-
gent ternalSystem’ is sent must match to the field “external identifier”of an Agent associated
to the external CRM System
id- string Optional parameter, if is not sent the system assumes that is a new contact. If sent must
Con- match with an identifier of the campaing databasecontact. If the ‘idExternalSystem’ is
tact sent, it must match with the contacts database field marked as an external identifier

In case of errors ocurred, the endpoint returns a JSON with the field ‘status’:’ERROR’ and the detailed
information of the error on the field’errors’. On other case the ‘status’ field value will be ‘OK’

16.1.5 Disposition options list endpoint

URL GET https://<omnileads_addr>/api/v1/campaign/<idc:integer>/dispositionOptions/ (1)


URL GET https://<omnileads_addr>/api/v1/campaign/<idc:string>/dispositionOptions/<ids:integer>/ (2)
This endpoint allows to get a disposition options list avalaible for tag a contact on a campaign. The
credentials must belong to an Agent (Users).
The parameters for this endpoint must be specified on the url. It has two modes to use, if it uses the (1)
mode, with a single parameter, the ‘idc’ parameter value must be an integer specifying the OML intern
campaignidentifier
The mode (2) is for using the endpoint from an external CRM system to OML and in this case the
parameter ‘ids’ must indicates an external CRM system id and the ‘idc’ parameter must indicates the
identifier of one campaign in this external system
In case of the execution without errors the endpoint will return a disposition options list like the following:

16.1. OMniLeads RESTful API 241


omnileads Documentation, Release develop

In case that the id does not match with an id of a campaign or CRM system the endpoint will return an
output like:

16.1.6 Dispositions list endpoint

This endpoint allows get a dispositions list made by the agent who make the request. (Users)
URL: GET https://<omnileads_addr>/api/v1/disposition/
In case of no errors ocurred, it returns the dispositions list made it by the agent

242 Chapter 16. OML API


omnileads Documentation, Release develop

16.1.7 Create new disposition endpoint

This endpoint allows to “tag” the result of a management about a contact. When a CRM user ends a
management, it is normal that management closes with a disposition made, and using this endpoint an
External CRM System can integrate this action to OML. The credentials used must belong to an Agent
(Users).
URL: POST https://<omnileads_addr>/api/v1/disposition/

16.1. OMniLeads RESTful API 243


omnileads Documentation, Release develop

filed type description


name
idEx- in- Optional parameter, if sent the system tries to locate the contact as ‘external_id’ on
ternal- te- the Campaign contacts database. If not sent, the system will assume that the value
System ger of the paramater ‘idContact’ is the intern id on OML
idCon- string Contact identifier to tag, its value depends on if ‘idExternalSystem’ parameter is sent
tact
idDis- in- The disposition option campaign id that will be used to tag the contact, each cam-
posi- te- paign defines its disposition options. See the endpoint that allows to obtain that
tionOp- ger values
tion
callid string Optional parameter, call identifier
com- string The agent observations in the disposition
ments

In case of no errors ocurred it will show an output like this, with data of the new disposition created

If an attempt to create a new disposition instance is made, to a contact already tagged on the campaign,
the endpoint will return the following error:

If the contact id on the campaign database is not found the endpoint will return the following error:

244 Chapter 16. OML API


omnileads Documentation, Release develop

If the disposition option id is not found the endpoint will return the following error:

16.1.8 Create new contact and assign it a new disposition endpoint

This endpoint allows to ‘tag’ a management and, at a same time, to create a contact, it means that it creates
the contact and the disposition is linked to this new contact. The credentials used must belong to an Agent
(Users).
URL: POST https://<omnileads_addr>/api/v1/new_contact/disposition/

filed type description


name
phone string The contact phone number
idExter- string Optional parameter, the contact id on an external CRM system
nalCon-
tact
idDispo- in- The disposition option campaign id that will be used to tag the contact, each cam-
sitionOp- te- paign defines its disposition options. See the endpoint that allows to obtain that
tion ger values
com- string The agent observations in the disposition
ments
callid string Optional parameter, call identifier
<op- string Optional parameters, they can define values to fill the custom data” of the con-
tional_bd_field> tact that will be created, the field names must match with the fields of campaign
database

In case of no errors ocurred it will show an output like this, with data of the new disposition created

16.1. OMniLeads RESTful API 245


omnileads Documentation, Release develop

If the disposition option id is not found the endpoint will return the following error:

16.1.9 Disposition update endpoint

This endpoint allows to update an existent disposition in OMniLeads


The credentials must belong to an Agent (Users)
URL: PUT https://<omnileads_addr>/api/v1/disposition/<idDisposition>

filed type description


name
idEx- in- Optional parameter, if sent the system tries to locate the contact as ‘external_id’ on
ternal- te- the Campaign contacts database. If not sent, the system will assume that the value
System ger of the paramater ‘idContact’ is the intern id on OML
idCon- string Contact identifier to tag, its value depends on if ‘idExternalSystem’ parameter is sent
tact
idDis- in- The disposition option campaign id that will be used to tag the contact, each cam-
posi- te- paign defines its disposition options. See the endpoint that allows to obtain that
tionOp- ger values
tion
callid string Optional parameter, call identifier
com- string The agent observations in the disposition
ments

246 Chapter 16. OML API


omnileads Documentation, Release develop

If doesn’t exist, the endpoint returns the following output:

If in the url a non-existent disposition id is specified, the endpoint will return the following output error:

If the disposition instance is tried to be modified, changing the parameters ‘idContact’ and ‘idDispo-
sitionOption’ the system detects that this would make to disposition for the oen contact on the same
campaing the endpoint will return the following error output:

If the contact id on the campaign database is not found the endpoint will return the following error:

16.1. OMniLeads RESTful API 247


omnileads Documentation, Release develop

If the disposition option id is not found the endpoint will return the following error:

16.1.10 Asterisk Agent Session API

API endpoints used by the WebPhone to control the Asterisk’s Agent sessions.

Asterisk’s Agent Sessions API

Endpoints to control the Asterisk’s Agent Session to be used by the WebPhone.

Asterisk agent session login

Establece el estado de sesión del Agente (Users) en Asterisk como iniciada. Las credenciales deberán
pertenecer al Agente, y no hace falta enviar ningún parámetro extra.
URL: POST https://<omnileads_addr>/api/v1/asterisk_login/

Asterisk agent session logout

Establece el estado de sesión del Agente (Users) en Asterisk como finalizada. Las credenciales deberán
pertenecer al Agente, y no hace falta enviar ningún parámetro extra.
URL: POST https://<omnileads_addr>/api/v1/asterisk_logout/

248 Chapter 16. OML API


omnileads Documentation, Release develop

Agent Pause start

Establece el estado de sesión del Agente (Users) en Asterisk como en Pausa (Pauses). Las credenciales
deberán pertenecer al Agente.
URL: POST https://<omnileads_addr>/api/v1/asterisk_pause/

field name type description


pause_id string ID of the pause the agent starts.

Agent Pause End

Establece el estado de sesión del Agente (Users) en Asterisk como “Disponible” e indica ela finalizacion
de una Pausa (Pauses). Las credenciales deberán pertenecer al Agente.
URL: POST https://<omnileads_addr>/api/v1/asterisk_unpause/

field name type description


pause_id string ID of the pause the agent ends.

16.1.11 Agent SIP credentials endpoint

This endpoint provides the necessary credentials for the agent’s authentication in the SIP server using a
Webphone.
URL: GET https://<omnileads_addr>/api/v1/sip/credentials/agent/

16.1. OMniLeads RESTful API 249


omnileads Documentation, Release develop

250 Chapter 16. OML API


CHAPTER 17

KNOWN ISSUES

17.1 Known Issues

• disposition form not showing up when receiving a transfer call


• Pause times are not separated by date
• Supervision calls capture is broken
• Recycle over recycled campaign duplicates records to call
• The system does not reproduce some temporary voice messages produced by some carriers on the webphone
• The mysql password cannot be changed using –change-passwords
• The restore of the system doesn’t include the Wombat Dialer database so the dialer campaigns are useless after
restore

251
omnileads Documentation, Release develop

252 Chapter 17. KNOWN ISSUES


CHAPTER 18

RELEASE NOTES

18.1 Release Notes

April 28, 2021

18.1.1 Release 1.15.0 details

New features

• Historical Dispositions are now available in the Campaign Disposition Reports.


• Speed Dial Lists feature are added to the Contact menu, useful for traansfering or calling to predefined telephone
numbers.
• Last status is available for Supervision View, once Agent goes to Unavailable due to connection issues.

Fixes and improvements

• Improvements in Webphone Machine States transitions.


• Default beep message is added for Inbound Campaigns.
• Better task handling in CI/CD Jobs for Docker images and containers.
• Improvement in CallerID labels for blind transfers.
• Better CallerID parsing for consultative transfers between agents.
• Better Real Time performance in Dialer Campaigns when adjusting boost factor.
• Improvements in call statuses for database recycle tasks in Predictive Dialers.
• Agent status improved in Supervision Views when making internal calls.
• Better event handling in Call Reports for failed blind transfers.

253
omnileads Documentation, Release develop

• Cosmetic changes in Dialer Campaings during database recycle.

254 Chapter 18. RELEASE NOTES

You might also like