Documentacion Omnileads Readthedocs Io en Develop - 2
Documentacion Omnileads Readthedocs Io en Develop - 2
Release develop
omnileads
2 How do I install it ? 5
6 INSTALLATION 15
6.1 OMniLeads deploy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7 INITIAL SETTINGS 39
7.1 Initial configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
9 CAMPAIGNS 63
9.1 Telephone Campaigns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
i
14 IT ADMINISTRATOR MANAGEMENT 209
14.1 IT administrator managment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
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
The repository is available in GitLab, for free download, installation, modification and use of the Software.
3
omnileads Documentation, Release develop
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
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.
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
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
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.
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
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
INSTALLATION
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.
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.
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.
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).
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.
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)
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)
• 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)
• 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)
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
To deploy this architecture [about_install_docker], you should work with the [prodenv-container] section
• 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)
• 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:
[prodenv-container]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→installation)
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.
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 #
22 Chapter 6. INSTALLATION
omnileads Documentation, Release develop
# 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=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. #
#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
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.
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.
24 Chapter 6. INSTALLATION
omnileads Documentation, Release develop
uname -r
rpm -qa |grep kernel-devel
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 ansible:
Install python2 and pip in case you don’t have them installed.
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.
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.
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.
./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.
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.
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.
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.
[prodenv-aio]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→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
30 Chapter 6. INSTALLATION
omnileads Documentation, Release develop
[prodenv-container]
#localhost ansible_connection=local ansible_user=root #(this line is for self-hosted
˓→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.
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.
Deployment complete
After a few minutes, the installation process ends with a screen showing the successful completion of the procedure.
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
Once installed the software, go to this section for the first access:
Note: From release-1.10.0 and above, the web access to OMniLeads can be done usin hostname.domain or IP.
When finding the login screen, we just enter with the following credentials: user admin and password admin, as
shown on figure 2.
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.
Frequent errors
The following are typical problems that arise when performing an installation:
• 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).
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.
38 Chapter 6. INSTALLATION
CHAPTER 7
INITIAL SETTINGS
In this section the essential configuration are shown once an instance of OMniLeads is installed
The application is already installed. Therefore, the post-installation configuration steps are discussed in this section.
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
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.
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.
A form will be displayed to be completed with the data of the new user.
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
• 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.
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.
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.
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.
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.
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.
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.
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.
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
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.
The system shows information about the commercial addons available using this page:
From here making click in the addons names you can access to its sites and for adquire them and installing in your
current instance
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.
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.
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
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.
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
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:
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.
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.
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)
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.
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****
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.
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****
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.
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.
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)
The Asterisk AMD module, can be configured in OMniLeads using the followinginterface:
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
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.
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.
63
omnileads Documentation, Release develop
64 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
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
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).
66 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
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.
68 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
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
70 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
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.
72 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
Within this subsection the step-by-step example of how to manage Manual Campaigns is exemplified.
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.
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
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
78 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
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.
80 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
Within this subsection the step-by-step example of how to manage Preview Campaigns is exemplified.
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.
• 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.
82 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
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.
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.
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.
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.
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
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.
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.
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
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.
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
Campaign activation
The newly created campaign appears in the incative state (figure 7), in the list of predictive 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.
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).
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
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
96 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
98 Chapter 9. CAMPAIGNS
omnileads Documentation, Release develop
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.
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.
To create a new inbound campaign you must enter the menu item Inbound Campaigns -> New Campaign.
The first stage looks like figure 1.
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
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.
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
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.
• 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.
This section illustrates how to configure OMniLeads and an Asterisk-based PBX, to derive calls from the
PBX to OMniLeads.
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.
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.
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.
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
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.
• 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
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.
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.
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.
To generate a new node, you must access the menu item: Telephony - Customer identification
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.
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:
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
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.
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.
The custom destination module simply involves a form indicating the name of the custom dialplan node
and also the Asterisk dialplan triad:
• Context
• 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.
Example
[omnileads_custom]
exten => s,1,Verbose(2, omnileads custom dialplan)
same => n,Answer()
same => n,Playback(demo-congrats)
same => n,Hangup()
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.
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.
Inside this chapter, all about the metrics, statistics, reports, recordings and real time supervision, etc.
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
This section describes and analyzes all staff related to the “output” generated by incoming call campaigns.
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.
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.
There is also an agent link that redirects to a screen with more information about agent performance in
that campaign.
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.
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.
This section describes and analyzes everything related to the “output” generated by outbound call cam-
paigns.
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.
Therefore, it is expected that the number of calls made exceeds the amount of contacts available in the
contact database of the campaign.
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.
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.
This section reviews each report generated by general call reports. Reports - Calls.
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
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.
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.
Supervision
This module allows Supervisors to view the status of Inbound Campaigns, Outbound Campaigns (Manual,
Dialer and Preview) and Agents.
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.
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.
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.
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 (*).
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.
BACKOFFICE MODULE
Every time an agent generates an engange with a contact, there is the possibility of auditing it from the 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.
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.
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.
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.
Login
153
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.
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.
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
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.
Logout
In order to log out of the system, agent needs to click on the exit button as displayed below.
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.
moment the contact information is presented in the Agent screen and immediately the sytem attempts the
dial process.
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.
It can also happen that the dialed phone number does not match any contact, as shown in Figure 10.
Preview Campagins
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.
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.
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.
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.
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.
Contact Management
Incoming calls can be associated to contacts already available in database, or new contacts to be saved.
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).
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
“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).
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.
Figure 3: unhold
This functionality can be used with any type of call.
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.
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”.
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.
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
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.
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.
menu.
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.
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.
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.
In this menú the agent can search for the recordings of his calls.
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.
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.
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)
• 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.
Once our SIP trunk is available, we go to check accessibility using the IPPBX Asterisk IPPBX
We should observe OK in the output line corresponding to the new SIP trunk, either with port 5161, 5162
or 5163.
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)
• 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
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:
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
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:
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.
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
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
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
Simply we must add a new outbound route that points to the trunk to the IPPBX
This way the integration is completely functional and both systems can make all types of calls and inter-
actions
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.
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
This way the administrator can see them when he/she wants
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
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.
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.
First login
Once created the MariaDB database that Wombat Dialer uses, we proceed with the first login.
Figure 4: Access to WD
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.
AMI credentials
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.
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:
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:
You must have the backup file in the new server to restore the database
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
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
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.
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
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
/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.
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
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
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)
• 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.
• 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)
• 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
Note: AIO installations will not be supoorted in future for Debian and Ubuntu so, is recommended to
use CentOS.
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.
In restarting process, when the docker-compose is executed check the tag version, this will begin the
download of new images for that release.
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
AIO Environment
./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
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.
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.
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.
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
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
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.
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:
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.
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.
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.
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.
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
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.
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).
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.
OML API
In this section you will find all the information about the Rest API of the system
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.
237
omnileads Documentation, Release develop
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
Successful authentication
If the login is successful, the endpoint shows the following output:
Authentication failed
If the login failed, the endpoint returns the following output:
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/
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-
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’
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/
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’
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
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’
In case that the id does not match with an id of a campaign or CRM system the endpoint will return an
output like:
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
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/
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:
If the disposition option id is not found the endpoint will return the following error:
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/
In case of no errors ocurred it will show an output like this, with data of the new disposition created
If the disposition option id is not found the endpoint will return the following error:
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:
If the disposition option id is not found the endpoint will return the following error:
API endpoints used by the WebPhone to control the Asterisk’s Agent sessions.
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/
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/
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/
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/
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/
KNOWN ISSUES
251
omnileads Documentation, Release develop
RELEASE NOTES
New features
253
omnileads Documentation, Release develop