...
 
Commits (468)
......@@ -14,13 +14,13 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) sou
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
ifeq ($(shell which virtualenv >/dev/null 2>&1; echo $$?), 1)
ifeq ($(shell python2.7 -mvirtualenv >/dev/null 2>&1; echo $$?), 1)
$(error The 'virtualenv' command was not found. Run 'pip install virtualenv' before this script)
endif
envs/bin/sphinx-build:
python2.7 -mvirtualenv --system-site-packages envs
envs/bin/python envs/bin/pip install --use-wheel -U --cache-dir .cache/pip -I Pygments==2.2.0 setuptools==28.8.0 docutils==0.13.1 mock==1.0.1 pillow==2.6.1 "alabaster>=0.7,<0.8,!=0.7.5" commonmark==0.5.4 recommonmark==0.4.0 sphinx==1.5.3 "sphinx-rtd-theme<0.3" "readthedocs-sphinx-ext<0.6"
envs/bin/python envs/bin/pip install -U --cache-dir .cache/pip -I Pygments==2.2.0 "setuptools<41" docutils==0.13.1 mock==1.0.1 pillow==2.6.1 "alabaster>=0.7,<0.8,!=0.7.5" commonmark==0.5.4 recommonmark==0.4.0 sphinx==1.7.4 "sphinx-rtd-theme<0.3" "readthedocs-sphinx-ext<0.6"
envs/bin/python envs/bin/pip install --exists-action=w --cache-dir .cache/pip -rrequirements.txt
......
......@@ -3,10 +3,17 @@ Xivo-solutions-doc
This is the documentation project of the XiVO Solutions. It is available at http://xivosolutions.readthedocs.io/.
Requirements
------------
* pip (sudo apt install python-pip)
Dependencies
------------
* Sphinx (package python-sphinx on Debian)
* Python dev (package python-dev on Debian)
* sphinx-git modified (for git changelog). To install it:
pushd /tmp && sudo pip install git+https://gitlab.com/xivo.solutions/sphinx-git.git@tagtitles && popd
......@@ -27,3 +34,10 @@ $ apt-get install texlive-latex-base texlive-latex-recommended
texlive-latex-extra texlive-fonts-recommended
Troubleshooting
---------------
If the build fails with error `ImportError: cannot import name _remove_dead_weakref`, run:
rm -rf envs
pip install virtualenv
git+https://gitlab.com/xivo.solutions/sphinx-git.git@tagtitles
gitpython
sphinx_rtd_theme
......@@ -21,7 +21,7 @@
</mask>
<path fill="#E67C39" d="m216.567,4.337l2.803,0.003l-0.011,7.545l1.83,0.002l0.01,-7.546l2.717,0.004l0,-1.598l-7.346,-0.01l-0.003,1.6z" mask="url(#d)" id="svg_8"/>
</g>
<text xml:space="preserve" text-anchor="start" font-family="Oswald, sans-serif" font-size="16" id="svg_11" y="96.5" x="0.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="null" fill="#494949">ALDEBARAN VERSION</text>
<text xml:space="preserve" text-anchor="start" font-family="Oswald, sans-serif" font-size="16" id="svg_11" y="96.5" x="0.5" fill-opacity="null" stroke-opacity="null" stroke-width="0" stroke="null" fill="#494949">DENEB VERSION</text>
</g>
</g>
</svg>
......@@ -6,7 +6,7 @@ Administrator's Guide
In-depth documentation on administration of XiVO solution systems.
XiVO Administration
-------------------
===================
.. toctree::
:maxdepth: 2
......@@ -15,7 +15,7 @@ XiVO Administration
xivo/high_availability/high_availability
XiVOcc Administration
---------------------
=====================
.. toctree::
:maxdepth: 2
......@@ -25,7 +25,7 @@ XiVOcc Administration
Administration <xivocc/admin/admin>
Troubleshooting
---------------
===============
.. important::
......
.. _asterisk_http_server:
********************
Asterisk HTTP server
********************
Asterisk HTTP server is used for WebRTC and xivo-outcall.
.. warning:: **Security warning:** Asterisk HTTP server is configured to accept websocket connections from outside.
You must ensure that the configuration is secure.
* ARI connection **must** be secured. Open file :file:`/etc/asterisk/ari.conf` and check if the default password
``Nasheow8Eag`` was changed. If not, change it:
* Generate a password (e.g. with ``pwgen -s 16``)
* replace::
password = Nasheow8Eag
by::
password = <YOUR_GENERATED_PASSWORD>
* Open file :file:`/etc/asterisk/http.conf` and check if ``bindaddr`` option is set to ``0.0.0.0``
(to accept outside websocket connections).
* You should also secure (e.g. via an external firewall) access to the asterisk HTTP server (which listens on port 5039).
WebSocket connection limit
==========================
By default, asterisk HTTP server has a limit of 100 websocket connections. You can change this limit in the :file:`/etc/asterisk/http.conf` file::
sessionlimit=200
Restart XiVO PBX services to apply the new settings::
xivo-service restart
......@@ -50,15 +50,15 @@ Here is the list of folders and files that are backed-up:
* :file:`/etc/consul/`
* :file:`/etc/crontab`
* :file:`/etc/dahdi/`
* :file:`/etc/dhcp/`
* :file:`/etc/hostname`
* :file:`/etc/hosts`
* :file:`/etc/dhcp/` ⚠️️ This will overwrite the network configuration when the backup is restored ⚠
* :file:`/etc/hostname` ⚠️️ This will overwrite the network configuration when the backup is restored ⚠
* :file:`/etc/hosts` ⚠️️ This will overwrite the network configuration when the backup is restored ⚠
* :file:`/etc/ldap/`
* :file:`/etc/network/if-up.d/xivo-routes`
* :file:`/etc/network/interfaces`
* :file:`/etc/network/interfaces` ⚠️️ This includes the host IP address / netmask and will overwrite the network configuration when the backup is restored ⚠ ️
* :file:`/etc/ntp.conf`
* :file:`/etc/profile.d/xivo_uuid.sh`
* :file:`/etc/resolv.conf`
* :file:`/etc/resolv.conf` ⚠️️ This will overwrite the network configuration when the backup is restored ⚠
* :file:`/etc/ssl/`
* :file:`/etc/systemd/`
* :file:`/etc/wanpipe/`
......@@ -86,6 +86,10 @@ Here is the list of folders and files that are backed-up:
* :file:`/var/log/asterisk/`
* :file:`/var/spool/asterisk/`
* :file:`/var/spool/cron/crontabs/`
* :file:`/etc/docker/`
* :file:`/etc/fail2ban/`
* :file:`/var/lib/postgresql/11/main/*.conf`
* :file:`/var/lib/postgresql/11/main/conf.d/*.conf`
The following files/folders are excluded from this backup:
......@@ -164,6 +168,12 @@ A backup of both the configuration files and the database used by a XiVO install
automatically every day.
These backups are created in the :file:`/var/backups/xivo` directory and are kept for 7 days.
️️️⚠️ Important Warning ⚠️️
============================
A XiVO backup includes the entirety of the original machine's network configuration : it WILL overwrite any present network settings when you restore it.
Remember to change those settings back if required before restarting network services or the machine itself, especially if you do not have physical or console access!
Limitations
===========
......@@ -187,6 +197,9 @@ Stop monit and all the xivo services::
xivo-service stop
Before restoring the database, all other services connected to it (XiVO CC, MDS) must be stopped also. You can list active connections:
``sudo -u postgres psql -c "SELECT * FROM pg_stat_activity WHERE pid <> pg_backend_pid()"``
If you want to restore XiVO < 2017.06 that was configured for XiVO CC, you must create PostgreSQL user `stats` before
restoring the database. See :ref:`Creating user stats <creating_user_stats>`.
......@@ -285,4 +298,4 @@ Restart the services you stopped in the first step::
xivo-service start
You may also reboot the system.
You may also reboot the system. Remember that the network settings were overwritten by the backed up settings, check and fix if necessary before rebooting!
.. _database_container:
********
Database
********
.. _database_creation:
Creation and Initialization
===========================
Starting from the Callisto version, the database on the **XiVO PBX** and **all mediaservers** is started inside a docker container based on custom image.
On first startup the database will be initialized and the required structure and data will be created inside a host mounted folder ``/var/lib/postgresql/11/main/``.
.. _database_configuration:
Custom database configuration
=============================
The database image contains a default postgres configuration and some specific defaults required by our application:
* the postgres default configuration is located in :file:`/var/lib/postgresql/11/main/postgresql.conf`
* and our custom defaults are in :file:`/var/lib/postgresql/11/main/conf.d/00-xivo-default.conf`.
.. warning:: Do not change these files!
If you need to change some parameters, create another file in :file:`/var/lib/postgresql/11/main/conf.d/` prefixed with a number like ``01`` or upper and with a ``.conf`` extension. This file will be loaded after all defaults and can override any parameter.
Sample configuration
--------------------
Here is an example to increase the default number of concurrent connection to the database:
:file:`/var/lib/postgresql/11/main/conf.d/10-custom-max-connection.conf`::
max_connections = 300
Apply the configuration
-----------------------
Run this command to reload postgres configuration::
xivo-dcomp reload-db
It will not restart db container despite the message *"Killing xivo_db_1"*.
Files path summary table
========================
+------------------------+-------------------------------------+-------------------------------------------------------------------------------------------------------+
| File | Path | Comment |
+========================+=====================================+=======================================================================================================+
| postgresql.conf | /var/lib/postgresql/11/main/ | Please, do not edit this file but use overriding mechanism explained in :ref:`database_configuration` |
+------------------------+-------------------------------------+-------------------------------------------------------------------------------------------------------+
| conf.d files | /var/lib/postgresql/11/main/conf.d/ | Files are handled in Lexicographical order |
+------------------------+-------------------------------------+-------------------------------------------------------------------------------------------------------+
| pg_hba.conf | /var/lib/postgresql/11/main/ | Configure connection authorization in this file |
+------------------------+-------------------------------------+-------------------------------------------------------------------------------------------------------+
| postgresql-11-main.log | /var/log/postgresql/ | Database log file. |
+------------------------+-------------------------------------+-------------------------------------------------------------------------------------------------------+
Connections to database and replication schema
==============================================
This schema shows required database connections between different types of servers.
These connections must be authorized in ``pg_hba.conf`` file. It is being done automatically or it is described in installation or upgrade documentation.
It also shows how asterisk database is replicated. Only configuration tables are replicated between asterisk databases
and only event tables (cel and queue_log) are replicated to stats database.
.. figure:: images/db_connections.png
:scale: 100%
......@@ -171,8 +171,7 @@ In section **pool**, modify the options::
range 172.30.8.10 172.30.8.200;
.. warning:: XiVO only answers to DHCP requests from :ref:`supported devices <devices>`. In case of
.. warning:: XiVO only answers to DHCP requests from `supported devices <https://documentation.xivo.solutions/projects/devices/en/latest/>`_. In case of
you need to address other equipment, use the option *allow unknown-clients;* in the
:file:`/etc/dhcp/dhcpd_sites/` files
......
......@@ -28,7 +28,7 @@ Authority (CA).
The default certificate is untrusted
====================================
------------------------------------
To make the HTTP client accept this certificate, you have two choices:
......@@ -37,17 +37,39 @@ To make the HTTP client accept this certificate, you have two choices:
* replace the self-signed certificate with your own trusted certificate.
.. _regenerating_certificate:
Regenerating the default certificate
------------------------------------
.. warning:: If you use your own certificate, you should NOT replace it by the default certificate.
1. Regenerate the default certificate by this command::
openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 \
-config "/usr/share/xivo-config/x509/openssl-x509.conf" \
-keyout "/usr/share/xivo-certs/server.key" \
-out "/usr/share/xivo-certs/server.crt"
2. Change ownership and permissions::
chown root:www-data "/usr/share/xivo-certs/server.key" "/usr/share/xivo-certs/server.crt"
chmod 640 "/usr/share/xivo-certs/server.key" "/usr/share/xivo-certs/server.crt"
3. Restart all XiVO services by running ``xivo-service restart all``.
Use your own certificate
========================
For this, follow these steps:
1. Replace the following files with your own private key/certificate pair:
#. Replace the following files with your own private key/certificate pair:
* Private key: :file:`/usr/share/xivo-certs/server.key`
* Certificate: :file:`/usr/share/xivo-certs/server.crt`
* Private key: :file:`/usr/share/xivo-certs/server.key`
* Certificate: :file:`/usr/share/xivo-certs/server.crt`
2. Change the hostname of XiVO for each XiVO component: the different processes of XiVO heavily use
#. Change the hostname of XiVO for each XiVO component: the different processes of XiVO heavily use
HTTPS for internal communication, and for these connection to establish successfully, all
hostnames used must match the Common Name (CN) of your certificate. Basically, you must replace
all occurrences of ``localhost`` (the default hostname) with your CN in the :ref:`configuration of the
......@@ -72,15 +94,35 @@ For this, follow these steps:
ln -s "/etc/xivo/custom/custom-certificate.yml" "$config_dir/010-custom-certificate.yml"
done
Also, you must replace ``localhost`` in the definition of your directories in the web interface
under :menuselection:`Configuration --> Directories`.
#. Also, you must replace ``localhost``, in the definition of your directories in the web interface under :menuselection:`Configuration --> Directories`, by the hostname matching the CN of your certificate.
3. If your certificate is not self-signed, and you obtained it from a third-party CA that is trusted
#. Then, when done, you must re-save, the CTI Directories definition:
* Go to :menuselection:`Services --> CTI Server --> Directories --> Definitions`
* Edit each directory to re-select the new URI
* And save it
#. If your certificate is not self-signed, and you obtained it from a third-party CA that is trusted
by your system, you must enable the system-based certificate verification. By default,
certificate verification is set to consider ``/usr/share/xivo-certs/server.crt`` as the only CA
certificate.
The options are the following:
First you need to install the debian ``ca-certificates`` package::
apt-get install ca-certificates
If one of the CA (or intermediate CA) of your certificate is not present in the CA shipped by the
``ca-certificates`` package you will need to add it manually:
* Create the following dir if not present::
mkdir /usr/local/share/ca-certificates/
* Copy inside this directory the certificate of the missing CA in a ``.crt`` file
* And finally upload ca-certificates configuration::
update-ca-certificates
Then to activate the certificat verification, the options are the following:
* Consul: ``verify: True``
* Other XiVO services: ``verify_certificate: True``
......@@ -104,10 +146,10 @@ For this, follow these steps:
machine, however, this is dangerous when XiVO services are separated by an untrusted network,
such as the Internet.
4. Ensure your CN resolves to a valid IP address with either:
#. Ensure your CN resolves to a valid IP address with:
* a DNS entry
* an entry in :file:`/etc/hosts` resolving your CN to 127.0.0.1. Note that :file:`/etc/hosts`
* and an entry in :file:`/etc/hosts` resolving your CN to 127.0.0.1. Note that :file:`/etc/hosts`
will be rewritten occasionally by xivo-sysconfd. To make the change persistent, you can:
#. modify :file:`/usr/share/xivo-sysconfd/templates/resolvconf/hosts` instead (which will be
......@@ -116,6 +158,9 @@ For this, follow these steps:
modification to :file:`/usr/share/xivo-sysconfd/templates/resolvconf/hosts` after each
``xivo-upgrade``.
5. Restart all XiVO services::
#. Your X.509 certificate must have ``subjectAltName`` defined. See the example at `cacert.org <http://wiki.cacert.org/FAQ/subjectAltName>`_
or detailed documentation at `ietf.org <https://tools.ietf.org/html/rfc3280>`_.
#. Restart all XiVO services::
xivo-service restart all
......@@ -22,7 +22,15 @@ verbose debugging is required. Using this option in production would produce VER
* Number of archived files: 15
* Rotation frequence: Daily
postgresql
----------
* File location: :file:`/var/log/postgresql-11-main.log`
* Rotate configuration: :file:`/etc/logrotate.d/postgresql`
* Number of archived files: 15
* Rotation frequence: Daily
xivo-agentd
-----------
......
......@@ -4,31 +4,55 @@
Nginx
*****
XiVO use nginx as a web server and reverse proxy.
XiVO uses nginx docker container as a web server and reverse proxy.
In its default configuration, the nginx server listens on port TCP/80 and TCP/443 and allows these
services to be used:
* web interface (xivo-web-interface)
* web interface (webi container)
* API documentation (xivo-swagger-doc)
Starting from XiVO 16.13, an administrator can easily modify the configuration to allow
Administrator can modify the configuration to allow
additional services to be used (e.g. xivo-auth or xivo-confd).
To do so, an administrator only has to create a symbolic link inside the
:file:`/etc/nginx/locations/http-enabled` directory to the corresponding file in the
:file:`/etc/nginx/locations/http-available` directory, and then reload nginx with
``systemctl reload nginx``. A similar operation must be done for HTTPS.
``/etc/init.d/nginx reload``. A similar operation must be done for HTTPS.
For example, to enable all the available services::
Temporary changes
-----------------
You can modify nginx container to test a custom configuration.
These changes will be reverted when nginx container is recreated - e.g. during next upgrade.
Enter the nginx container::
xivo-dcomp exec nginx bash
Then, for example, you can enable all the available services::
ln -sf /etc/nginx/locations/http-available/* /etc/nginx/locations/http-enabled
ln -sf /etc/nginx/locations/https-available/* /etc/nginx/locations/https-enabled
systemctl reload nginx
/etc/init.d/nginx reload
To disable all the services other than the web interface::
rm /etc/nginx/locations/http-enabled/* /etc/nginx/locations/https-enabled/*
ln -s /etc/nginx/locations/http-available/xivo-web-interface /etc/nginx/locations/http-enabled
ln -s /etc/nginx/locations/https-available/xivo-web-interface /etc/nginx/locations/https-enabled
systemctl reload nginx
/etc/init.d/nginx reload
Permanent changes
-----------------
Save your configuration files to ``/etc/xivo-nginx/locations/``
Mount your configuration files to nginx container by editing :file:`/etc/docker/xivo/docker-xivo.yml`::
nginx:
...
volumes:
- /etc/xivo-nginx/locations/http-location-file:/etc/nginx/locations/http/location-file
- /etc/xivo-nginx/locations/https-location-file:/etc/nginx/locations/https/location-file
...
.. _system_proxy:
*******************
Proxy Configuration
*******************
......@@ -5,36 +7,88 @@ Proxy Configuration
If you use XiVO behind an HTTP proxy, you must do a couple of manipulations for
it to work correctly.
.. warning:: We do not recomend to use ``http_proxy`` environment variable. It may
break some services.
Instead you should configure the proxy on a per service basis as described
below.
System Applications
===================
Installation and upgrade operations use different tools for which the proxy must be configured if any.
apt
===
---
.. important:: This is needed because apt is used for installation and upgrade
Create the :file:`/etc/apt/apt.conf.d/90proxy` file with the following content::
Acquire::http::Proxy "http://domain\username:password@proxyip:proxyport";
curl
----
provd
=====
.. important:: This is needed because ``curl`` is used during installation and upgrade
Create the :file:`~/.curlrc` file with the following content::
proxy = http://proxyip:proxyport
proxy-user = "username:password"
docker
------
.. important:: This is needed because docker images will be downloaded during installation or upgrade
When upgrading or installing XiVO it will attempt to download docker images.
For the proxy configuration, you need to create a systemd configuration file.
See Docker documentation: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
Proxy information is set via the :menuselection:`Configuration --> Provisioning --> General`
page.
wget
----
.. important:: This step is needed because this tool is used by xivo-upgrade script and install scripts
Create the :file:`~/.wgetrc` file with the following content::
use_proxy=yes
http_proxy=http://username:password@proxyip:proxyport
XiVO Services
=============
Several XiVO services needs also the proxy to be configured, if any.
dhcp-update
===========
-----------
*This step is needed if you use the DHCP server of the XiVO. Otherwise the DHCP configuration won't be correct.*
.. important:: This is needed if you use the DHCP server of the XiVO. Otherwise the DHCP configuration won't be correct. It must be set before the wizard is run.
Proxy information is set via the :file:`/etc/xivo/dhcpd-update.conf` file.
Edit the file and look for the ``[proxy]`` section.
provd
-----
.. note:: This is needed to download plugins
Proxy information is set via the :menuselection:`Configuration --> Provisioning --> General`
page.
xivo-fetchfw
============
------------
*This step is not needed if you don't use xivo-fetchfw.*
.. note:: This is needed to download firmwares
Proxy information is set via the :file:`/etc/xivo/xivo-fetchfw.conf` file.
......
......@@ -8,9 +8,11 @@ System
DHCP Server <dhcp/dhcp>
Mail <mail/mail>
Network <network/network>
Database <database/database>
backup_restore
cli_tools/cli_tools
https_certificate
asterisk_http
configuration_files
consul
log_files
......@@ -26,4 +28,5 @@ System
xivo-dird-phoned <xivo-dird-phoned>
xivo-purge-db <purge_logs>
xivo-service <service>
xivo-upgrade <xivo_upgrade_script>
xivo-sysconfd <xivo-sysconfd>
#################
*****************
NGINX - proxy web
#################
*****************
Basic check
===========
......
*********
Reporting
=========
*********
xivo_replic does not replicate call data
----------------------------------------
========================================
After experiencing a 'no space left on device' and restarting containers, it can sometimes happen that the data from XiVO is not replicated anymore. Container *xivocc_replic_1* logs show the following error::
......@@ -34,3 +35,66 @@ Error is caused by a lock in liquibase db. Follow the below steps in order to fi
xivocc-dcomp start xivo_stats
Now, if xivo_stats is stuck in exit (126), try a *docker rm -v {xivo_stats contener id}* followed by a *xivocc-dcomp up -d*.
Totem panels (Elastic, Logstash and Kibana)
===========================================
To debug the ELK stack bear in mind the :ref:`totem_data_flow`.
Logs
----
* Logstash::
xivocc-dcomp logs -tf --tail=10 logstash
* Elasticsearch::
xivocc-dcomp logs -tf --tail=10 elasticsearch
* Kibana::
xivocc-dcomp logs -tf --tail=10 kibana
When looking at logstash logs you should normally see:
* every minute the SQL request being run:
.. code-block:: none
logstash_1 | 2019-09-18T11:59:00.475644639Z [2019-09-18T13:59:00,475][INFO ][logstash.inputs.jdbc ] (0.016828s) SELECT count(*) AS "count" FROM (select
logstash_1 | 2019-09-18T11:59:00.475688759Z ql.id as id,
logstash_1 | 2019-09-18T11:59:00.475694836Z cast(time as timestamp) as queuetime,
logstash_1 | 2019-09-18T11:59:00.475698712Z ql.callid,
...
logstash_1 | 2019-09-18T11:59:00.475757232Z from
logstash_1 | 2019-09-18T11:59:00.475760377Z queue_log as ql
...
logstash_1 | 2019-09-18T11:59:00.475782243Z where
logstash_1 | 2019-09-18T11:59:00.475785317Z ql.id > 20503
logstash_1 | 2019-09-18T11:59:00.475788795Z order by ql.id asc) AS "t1" LIMIT 1
* in the SQL query you should see the *where condition* ``ql.id > SOME_ID`` changing
.. code-block:: none
:emphasize-lines: 10
logstash_1 | 2019-09-18T12:00:00.475644639Z [2019-09-18T14:00:00,475][INFO ][logstash.inputs.jdbc ] (0.016828s) SELECT count(*) AS "count" FROM (select
logstash_1 | 2019-09-18T12:00:00.475688759Z ql.id as id,
logstash_1 | 2019-09-18T12:00:00.475694836Z cast(time as timestamp) as queuetime,
logstash_1 | 2019-09-18T12:00:00.475698712Z ql.callid,
...
logstash_1 | 2019-09-18T12:00:00.475757232Z from
logstash_1 | 2019-09-18T12:00:00.475760377Z queue_log as ql
...
logstash_1 | 2019-09-18T12:00:00.475782243Z where
logstash_1 | 2019-09-18T12:00:00.475785317Z ql.id > 20602
logstash_1 | 2019-09-18T12:00:00.475788795Z order by ql.id asc) AS "t1" LIMIT 1
How can I know if data is sent to Elasticsearch
-----------------------------------------------
See :ref:`totem_check_status` section.
**********
PostgreSQL
==========
**********
Container keeps on restarting after upgrade
-------------------------------------------
===========================================
After upgrading Docker it can sometimes happen that the container *xivocc_pgxivocc_1* gets stuck in restarting mode. Logs show the following error
......
.. _troubleshooting:
***************
Troubleshooting
===============
***************
Transfers using DTMF
--------------------
====================
When transfering a call using DTMF (\*1) you get an *invalid extension* error when dialing the
extension.
......@@ -29,7 +30,7 @@ to be able to transfer the called person to another extension.
.. _fax-detection:
Fax detection
-------------
=============
XiVO **does not currently support Fax detection**. The following describe a workaround to use this
feature. The behavior is to answer all incoming (external) call, wait for a number of seconds (4 in
......@@ -77,7 +78,7 @@ this example) : if a fax is detected, receive it otherwise route the call normal
.. _berofos-integration-with-pbx:
Berofos Integration with PBX
----------------------------
============================
You can use a Berofos failover switch to secure the ISDN provider lines
when installing a XiVO in front of an existing PBX.
......@@ -161,7 +162,7 @@ The following describes how to configure your XiVO and your Berofos.
Upgrading from XiVO 1.2.3
--------------------------
==========================
#. There is an issue with ``xivo-libsccp`` and ``pf-xivo-base-config`` during an upgrade from 1.2.3::
......@@ -191,7 +192,7 @@ Upgrading from XiVO 1.2.3
.. _cti-ami-proxy:
CTI server is unexpectedly terminating
--------------------------------------
======================================
If you observes that your CTI server is sometimes unexpectedly terminating with the following
message in :file:`/var/log/xivo-ctid.log`::
......@@ -236,7 +237,7 @@ To disable the ami-proxy::
Agents receiving two ACD calls
------------------------------
==============================
.. warning:: Procedure was removed since bug was fixed in asterisk version shipped in 2017.LTS1 (2017.03)
......@@ -244,7 +245,7 @@ Agents receiving two ACD calls
.. _postgresql_localization_errors:
PostgreSQL localization errors
------------------------------
==============================
The database and the underlying `database cluster`_ used by XiVO is sensitive to the system locale
configuration. The locale used by the database and the database cluster is set when XiVO is
......@@ -269,7 +270,7 @@ When working with locale and PostgreSQL, there's a few useful commands and thing
Database cluster is not starting
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--------------------------------
If the database cluster doesn't start and you have the following errors in your log file::
......@@ -292,7 +293,7 @@ Once this is done, restart your database cluster.
Can't connect to the database
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-----------------------------
If the database cluster is up but you get the following error when trying to connect to the
``asterisk`` database::
......@@ -310,13 +311,13 @@ two choices to fix this issue:
Error during the upgrade
^^^^^^^^^^^^^^^^^^^^^^^^
------------------------
Then you are mostly in one of the cases described above. Check your log file.
Error while restoring a database backup
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
---------------------------------------
If during a database restore, you get the following error::
......@@ -339,7 +340,7 @@ your system. You have two choices to fix this issue:
Error during master-slave replication
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-------------------------------------
Then the slave database is most likely not using an UTF-8 encoding. You'll need to
:ref:`recreate the database using a different locale <postgres-change-locale>`
......@@ -348,7 +349,7 @@ Then the slave database is most likely not using an UTF-8 encoding. You'll need
.. _postgres-change-locale:
Changing the locale (LC_COLLATE and LC_CTYPE) of the database
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-------------------------------------------------------------
If you have decided to change the locale of your database, you must:
......@@ -380,7 +381,7 @@ For more information, consult the `official documentation on PostgreSQL localiza
Originate a call from the Asterisk console
------------------------------------------
==========================================
It is sometimes useful to ring a phone from the asterisk console. For example, if you want
to call the ``1234`` extension in context ``default``::
......@@ -388,7 +389,7 @@ to call the ``1234`` extension in context ``default``::
channel originate Local/1234@default extension 42@xivo-callme
WebRTC
------
======
* `http.conf` - asterisk's webserver must accept connection from outside, the listen address must be updated, for the sake of
simplicity let's use 0.0.0.0, you can also pick an address of one of the network interfaces:
......
###################################
***********************************
Xuc & Xucmgt (CC & UC applications)
###################################
Basic checks
============
***********************************
XUC overview page
-----------------
=================
XUC overview page available at @XUC_IP:PORT, usually @SERVER_IP:8090. You have to check if the "Internal configuration cache database"
contains agents, queues etc.
XUC sample page
---------------
===============
XUC sample page available at @XUC_IP:PORT/sample, usually @SERVER_IP:8090/sample. You can use this page to check user login and other
API functions. CCManager, agent and assistant web use functions available on the sample page.
UC Assistant
=============
XUC Internal Metrics
====================
Internal metrics are also available - see :ref:`xuc_jmx_metrics` page.
Favorites
---------
.. toctree::
:maxdepth: 2
:hidden:
With *XiVO PBX* < 15.18 (without xivo-dird) one has to configure xuc with the runtime parameter ``xivo.useDird=false`` : with this parameter set, one
can't add Favorites (though the star to add a Favorite is visible).
jmx
Agent states after XUC restart
==============================
Please see the note in :ref:`restarting <agent_states_after_xuc_restart>` XUC server with active calls.
.. _xuc_jmx_metrics:
********************
XUC Internal Metrics
********************
.. contents::
Introduction
============
The XUC process exposes some metrics to troubleshoot or monitor the health of the process. Some of these metrics were previously exposed in a sub-page of the XUC overview page. The metrics are not exposed using the JMX technology available in java.
Configuration
=============
Enable JMX
----------
JMX is enabled by default in java but only available on the local machine running the process. Moreover as we are using docker, it's only available inside the docker container itself. To make it available from the outside of the container and host running the XUC process, you need to explicitely configure it to do so.
In the following configuration, replace
* JMX_PORT with the port number where you want to expose the JMX
* JMX_HOST by the docker host IP address (not the container one but the IP of the server running docker)
Edit your docker compose file (/etc/docker/compose/docker-xivocc.yml) and change the configuration of the xuc container:
::
xuc:
[...]
ports:
- JMX_PORT:JMX_PORT
[...]
environment:
- JAVA_OPTS=-Xms512m -Xmx1024m -DtechMetrics.jmxReporter=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=JMX_PORT -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=JMX_HOST -Dcom.sun.management.jmxremote.rmi.port=JMX_PORT
[...]
For example, if we have JMX_PORT=15701 and JMX_HOST=192.168.228.100, you should set
::
xuc:
[...]
ports:
- 15701:15701
[...]
environment:
- JAVA_OPTS=-Xms512m -Xmx1024m -DtechMetrics.jmxReporter=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=15701 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.228.100 -Dcom.sun.management.jmxremote.rmi.port=15701
[...]
Then restart the XUC process with the new configuration by running the command ``xivocc-dcomp up -d xuc``
Explore JMX
-----------
Once restarted you can then use tools to explore the metrics: jconsole, visualvm with MBeans plugin, eclipse,... For example, here are the steps to configure visualvm and explore the JMX metrics:
* Download and install visualvm https://visualvm.github.io/
* Enable MBeans plugin
.. figure:: jmx-plugins.png
:scale: 90%
* Add remote host
.. figure:: jmx-config.png
:scale: 90%
* Double click on process under the newly added host
* Click on the MBeans tab
* Explore tree
.. figure:: jmx-tree.png
:scale: 50%
Expose JMX through REST
-----------------------
Alternatively you could integrate a JMX plugin to your running process which allows to gather JMX metrics over HTTP. You need to download jolokia JVM agent from their website: https://jolokia.org/ and transfer the jar file on the server hosting the XUC container (for example in ``/etc/docker/jolokia/jolokia-jvm-1.6.2-agent.jar``).
Then you should change your docker compose configuration for the xuc process in ``docker-xivocc.yml``:
::
xuc:
[...]
ports:
- JMX_HTTP_PORT:JMX_HTTP_PORT
[...]
environment:
- JAVA_OPTS=-Xms512m -Xmx1024m -DtechMetrics.jmxReporter=true -javaagent:/opt/jolokia/jolokia-jvm-1.6.2-agent.jar=port=JMX_HTTP_PORT,host=JMX_HTTP_HOST
[...]
volumes:
- /etc/docker/jolokia:/opt/jolokia
Then restart the XUC process with the new configuration by running the command ``xivocc-dcomp up -d xuc``. The JMX metrics are now available over HTTP, see jolokia website for help on available endpoints: https://jolokia.org/documentation.html
Here are some example url to test:
* List all jmx metrics available: ``curl http://JMX_HTTP_HOST:JMX_HTTP_PORT/jolokia/list``
* Get metrics of a specific service: ``curl http://JMX_HTTP_HOST:JMX_HTTP_PORT/jolokia/read/services.calltracking:type=AsteriskGraphTracker``
Metrics description
===================
Historical metrics
------------------
These metrics were previously exposed in a sub-page of the XUC overview page.
* Xuc.CtiLink.*: Information on the link per user between XUC and ctid on the XiVO PBX
* Xuc.CtiRouter.totalClients: Total number of client connected to the XUC
* Xuc.CtiRouter.<username>.nbOfClients: Number of client connected to the XUC with the given <username>
* Xuc.global.ami.failures: Number of failure/lost connection to the asterisk AMI
New metrics
-----------
* services.CtiRouter.<username>CtiRouter: Information on the currently connected <username>
* services.calltracking.AsteriskGraphTracker
* GraphSize: Size of the call graph
* LoopDetected: Number of call loop detected
* Notifications: Number of Notifications published internally
* Watchers: Number of object monitoring the graph
* services.calltracking.ChannelTracker
* HangupEvents: Number of Hangup received since the process started
* NewChannelEvents: Number of channel created since the process started
* Notifications: Number of Notifications published internally
* Watchers: Number of object monitoring the channels
* services.calltracking.ConferenceTracker
* Conferences: Number of conferences
* Participants: Number of participants
* services.calltracking.DevicesTracker.Devices: Number of monitored device
* services.calltracking.SipDeviceTracker.<SIP_PEER_NAME>: Information about the SIP peer (Phone device)
* Calls: Number of active calls
* ChannelEvent: Number of channel event received
* PartyInformation: Number of event received from remote party
* PathsFromChannel: Number of event received from the AsteriskGraphTracker
* services.calltracking.TrunkDeviceTracker.<TRUNK_NAME>: Information about the trunk, same information as in SipDeviceTracker
* services.calltracking.CustomDeviceTracker.<CUSTOM_NAME>: Information about the custom device, same information as in SipDeviceTracker
* services.calltracking.UnknownDeviceTracker.<CUSTOM_NAME>: Information about other asterisk device, same information as in SipDeviceTracker
Other JVM metrics
-----------------
You may also find these metrics interesting when troubleshooting the process:
* java.lang.Memory.HeapMemoryUsage: Information about the java heap memory
* java.lang.GarbageCollector: Information about the java garbage collector process
......@@ -32,7 +32,7 @@ the notion of a primary and backup telephony server.
* Trunk registration timeout (``expiry``) should be less than 300 seconds (5 minutes)
* The slave must have **no** provisioning plugins installed.
The HA solution is guaranteed to work correctly with :ref:`the following devices <devices>`.
The HA solution is guaranteed to work correctly with `the following devices <https://documentation.xivo.solutions/projects/devices/en/latest/>`_.
Quick Summary
......@@ -61,9 +61,6 @@ First thing to do is to :ref:`install 2 XiVO <installation>`.
they both are running the same version of XiVO. Otherwise, the replication might not work
properly.
.. warning:: If your XiVO is interconnected with a XiVO CC, you **MUST** re-configure postres to accept
connections from XiVO CC - see :ref:`PostgreSQL configuration section <xivo_pbx_configuration>`
You must configure the :abbr:`HA (High Availability)` in the Web interface
(:menuselection:`Configuration --> Management --> High Availability` page).
......@@ -71,8 +68,12 @@ You can configure the master and slave in whatever order you want.
You must also run ``xivo-sync -i`` on the master to setup file synchronization. Running ``xivo-sync
-i`` will create a passwordless SSH key on the master, stored under the :file:`/root/.ssh` directory,
and will add it to the :file:`/root/.ssh/authorized_keys` file on the slave. The following directories
will then be rsync'ed every hour:
and will add it to the :file:`/root/.ssh/authorized_keys` file on the slave.
.. note:: If you want to try the ssh logging as advised by the ssh-copy-id script, you must select
the new key to be used by ssh: ``ssh -i /root/.ssh/xivo_id_rsa root@<slave_ip>``
The following directories will then be rsync'ed every hour:
* /etc/asterisk/extensions_extra.d
* /etc/xivo/asterisk
......@@ -160,24 +161,41 @@ Replication can be started manually by running the replication scripts on the ma
xivo-sync
The replication does not copy the full XiVO configuration of the master. Notably, these
are excluded:
are **excluded**:
* All the network configuration **except DHCP configuration** (i.e. everything under the
:menuselection:`Configuration --> Network --> {Interfaces, Resolver, Mail}` sections)
* All the support configuration (i.e. everything under the
:menuselection:`Configuration --> Support` section)
* Call logs
* Call center statistics
* Certificates
* HA settings
* Provisioning configuration
* Voicemail messages
Less importantly, these are also excluded:
These event data are also excluded:
* Queue logs
* CELs
.. _ha_interconnection_with_cc:
Interconnection with XiVO CC
----------------------------
Queue logs and CELs are not replicated from the master node to the slave. Instead, both servers have their own event data.
Thanks to it you can install DB Replic on slave and run it in a special HA mode to replicate only queue logs and CELs to XiVO CC:
* Edit the ``/etc/docker/xivo/custom.env`` file on slave:
* Set ``REPORTING_DB_HOST`` address
* Set ``ELASTICSEARCH`` address
* Set ``IS_HA_SLAVE=true``
* Create log directory ``/var/log/xivo-db-replication`` with owner ``daemon:daemon``
* Install the configuration package: ``apt-get install xivocc-docker-components``
* Enable DB Replic: ``touch /var/lib/xivo/xc_enabled``
* Start DB Replic: ``xivo-service start``
* Refresh monitoring: ``/usr/sbin/xivo-monitoring-update``
XiVO Client
-----------
......
......@@ -5,7 +5,7 @@ XiVOcc Administration
*********************
Start, stop or restart containers
---------------------------------
=================================
Using the `xivocc-dcomp` script, you can control the run of the XiVO CC components:
......@@ -19,10 +19,16 @@ List of commands:
* ``stop`` - stop containers
* ``restart`` - restart containers
If you don't enter container name, the command applies on all containers. Use container names from this :ref:`list <list_of_containers>`.
If you don't enter container name, the command applies on all containers.
Use container names without the ``xivocc_`` prefix and ``_1`` suffix.
.. _agent_states_after_xuc_restart:
.. warning:: Restarting xuc server with active calls may result in some agent's having incorrect state after the restart. Hang-up of such call will return agent into correct state.
Show status
-----------
===========
.. code-block:: bash
......@@ -31,7 +37,7 @@ Show status
.. _admin_version:
Show containers and images versions
-----------------------------------
===================================
.. note:: Introduced in 2017.03.03 release.
......@@ -63,35 +69,32 @@ For example :
# xivocc-dcomp version
NAMES VERSION
xivocc_nginx_1
xivocc_xuc_1 2017.03.03
xivocc_recording_server_1 2017.03.03
xivocc_xucmgt_1 2017.03.03
xivocc_config_mgt_1 2017.03.02
xivocc_pack_reporting_1 2017.03.02
xivocc_spagobi_1 2017.03.02
xivocc_xivo_stats_1 2017.03.02
xivocc_xivo_replic_1 2017.03.02
xivocc_pgxivocc_1
xivocc_nginx_1 2019.10.00
xivocc_spagobi_1 2019.10.00
xivocc_xuc_1 2019.10.00
xivocc_logstash_1 2019.10.00
xivocc_kibana_1
xivocc_elasticsearch_1
xivocc_fingerboard_1
xivocc_xucmgt_1 2019.10.01
xivocc_xivo_stats_1 2019.10.00
xivocc_recording_server_1 2019.10.00
xivocc_pack_reporting_1 2019.10.00
xivocc_pgxivocc_1
xivocc_recording_rsync_1
xivocc_kibana_volumes_1
This only applies to the following images:
* config_mgt
* nginx
* pack_reporting
* logstash
* recording
* spagobi
* xivo_replic
* xivo_stats
* xuc
* xucmgt
.. note:: Labels were in fact introduced in 2017.03.02 but in this version you had to use docker commands to display them:
.. note:: You can also use docker commands to display information about containers or images:
* List all running containers with the exact version of application
......@@ -128,7 +131,7 @@ This only applies to the following images:
Log
---
===
The log of each container can be found in the `/var/log/xivocc` directory.
Currently (it may change) the structure looks like this :
......@@ -136,12 +139,11 @@ Currently (it may change) the structure looks like this :
.. code-block:: sh
/var/log/xivocc:
β”œβ”€β”€ config-mgt
β”‚Β Β  └── config-mgt.log
β”œβ”€β”€ purge-reporting-database.log
β”œβ”€β”€ recording-server
β”‚Β Β  β”œβ”€β”€ downloads.log
β”‚Β Β  └── recording-server.log
β”‚Β Β  β”œβ”€β”€ recording-server.log
β”‚Β Β  └── access.csv
β”œβ”€β”€ spagobi
β”‚Β Β  β”œβ”€β”€ Quartz.log
β”‚Β Β  β”œβ”€β”€ SpagoBIBirtReportEngine.log
......@@ -152,8 +154,6 @@ Currently (it may change) the structure looks like this :
β”‚Β Β  β”œβ”€β”€ SpagoBIQbeEngine.log
β”‚Β Β  └── SpagoBITalendEngine.log
β”œβ”€β”€ specific-stats.log
β”œβ”€β”€ xivo-db-replication
β”‚Β Β  └── xivo-db-replication.log
β”œβ”€β”€ xivo-full-stats
β”‚Β Β  └── xivo-full-stats.log
β”œβ”€β”€ xuc
......@@ -164,7 +164,7 @@ Currently (it may change) the structure looks like this :
Backup
------
======
You may backup your databases by using a similar command as below, make sure you have enough space on disk.
......@@ -181,7 +181,7 @@ You may backup your databases by using a similar command as below, make sure you
Restore
-------
=======
You may restore a backup using a similar command (to be adapted)
......
......@@ -4,6 +4,9 @@
CC Agent configuration
**********************
.. contents::
.. _agent_recording:
Recording
......@@ -34,6 +37,84 @@ You can also use ``SHOW_QUEUE_CONTROLS`` environment variable in :file:`/etc/doc
:scale: 90%
.. _agent_configuration-activity_failed_dst:
Activity's Failed Destination Configuration
===========================================
An agent can see and change the sound file played to the caller when the Activity is temporarily closed [#]_.
For this to work the XiVO Administrator needs to:
#. :ref:`import sound files in the XiVO PBX with the queue name prefix <agent_configuration-activity_failed_dst-soundfiles>`,
#. :ref:`configure the default queue <agent_configuration-activity_failed_dst-dfltqueue>`,
#. :ref:`give the rights to the XiVO User <agent_configuration-activity_failed_dst-rights>`.
.. [#] Temporarily closed, here, means when no agent is logged in.
More precisely when the call is sent to the *Fail* destination (see :menuselection:`Services --> Call Center --> Queues`
in queue configuration, tab :menuselection:`No Answer` and *Fail* section).
A call is sent to the *Fail* destination according to the :guilabel:`Join an empty queue` and :guilabel:`Remove callers if there are no agents` parameters
in the :menuselection:`Advanced` tab of the queue.
.. _agent_configuration-activity_failed_dst-soundfiles:
1. Import sound files in the *XiVO PBX*
---------------------------------------
To see the sound files, a XiVO Administrator must import them with the queue name prefix as described below:
* Given the queue *Sales* with its :guilabel:`Name` being ``sales``,
* Given I want to have two messages available for this queue:
* :file:`closed_during_afternoon` (*'We are closed this afternoon ...'*)
* :file:`in_a_meeting` (*'Currently in a meeting ...'*)
* Then, as a XiVO Administrator I **MUST** import these sound files **with the prefix** ``sales_``. For each file, do:
* Go to :menuselection:`Services --> IPBX --> IPBX Services --> Audio files`
* Click to **Add** a file
* :guilabel:`File name`: select the file on your disk
* :guilabel:`Directory`: select **playback** directory (this is mandatory)
* When file is added, edit it and *prefix the file name* **with the queue name followed by an underscore**, in our exampe ``sales_``
Said differently the agent will be able to see and set all sound files prefixed with the queue name.
.. _agent_configuration-activity_failed_dst-dfltqueue:
2. Configure the default queue for dissuasion
---------------------------------------------
You can configure a default queue for dissuasion by setting the queue name in ``defaultQueueDissuasion`` in application.conf.
This option once set, will show the queue in the dissuasion dropdown.
You can also use ``QUEUEDISSUASION_DEFAULT_QUEUE`` environment variable in :file:`/etc/docker/xivo/custom.env` file on the XiVO PBX and restart the services with ``xivo-dcomp up -d``.
.. _agent_configuration-activity_failed_dst-rights:
3. Give the rights to the XiVO User
-----------------------------------
To see/change the dissuasion destination via the CC Agent or CC Manager, a XiVO User must have a supervisor right with *Update dissuasion* access.
To do this a XiVO Administrator must connect to the configmgt (https://XIVO_IP/configmgt) and configure the user with:
* :guilabel:`Profile`: Supervisor
* :guilabel:`Access`: check the box *Update dissuasions*
* :guilabel:`Queues`: select the queues the user can see
See :ref:`profile_mgt`.
.. _hold_notification:
On hold notification
====================
You can configure ``notifyOnHold`` (in seconds)) in application.conf, this option once set, will trigger a popup and a system notification to user if he has a call on hold for a long time.
You can also use ``NOTIFY_ON_HOLD`` environment variable in :file:`/etc/docker/compose/custom.env` file.
Pause Cause and Status
======================
......@@ -79,19 +160,29 @@ It is possible to display customer information in an external web application us
* :menuselection:`Services > CTI Server > Sheets > Models`:
* Tab *General Settings*: Give a name
* Tab *Sheet*: You must define a sheet with two fields
* Tab *Sheet*: You must define a sheet with at least ``folderNumber`` and ``popupUrl`` fields set:
* ``folderNumber``
* ``folderNumber`` (MANDATORY)
* field type = ``text``
* It has to be defined. Can be calculated or use a default value not equal to "-"
* Note: You could leave "empty" using a whitespace (in hexadecimal: %20)
* ``popupUrl``
* ``popupUrl`` (MANDATORY)
* field type = ``text``
* The url to open when call arrives : i.e. http://mycrm.com/customerInfo?folder= the folder number will be automatically
appended at the end of the URL
* Additionally to the existing xivo variables, you can also use here the following variables(only available in Web Agent and Desktop Agent):
* ``{xuc-token}``: will be replaced by a token used for xuc websocket and rest api, for example ``http://mycrm.com/customerInfo?token={xuc-token}&folder=``
* ``{xuc-username}``: will be replaced by the username of the logged on user, for example ``http://mycrm.com/customerInfo?username={xuc-username}&folder=``
* ``multiTab`` (OPTIONAL)
* field type = ``text``
* set to the text ``true`` to open each popup in a new window.
* :menuselection:`Services > CTI Server > Sheets > Events`: Choose the right events for opening the URL (if you choose two events, url will opened twice etc.)
......@@ -103,6 +194,47 @@ Example : Using the caller number to open a customer info web page
.. figure:: example_xivo_sheet.png
:scale: 90%
.. _run_executable_sheet:
Run executable
==============
It is also possible to run an executable using Xivo :ref:`sheet <custom-call-form>` mecanism. This is only available in the desktop agent and desktop assistant.
* :menuselection:`Services > CTI Server > Sheets > Models`:
* Tab *General Settings*: Give a name
* Tab *Sheet*: You must define a sheet with at least ``runAsExecutable`` and ``popupUrl`` fields set:
* ``popupUrl`` (MANDATORY)
* field type = ``text``
* It should contain an executable name accessible by the client user (where the desktop application is) or a full executable path.
* ``runAsExecutable`` (MANDATORY)
* field type = ``text``
* Display value ``true``
* ``executableArgs`` (OPTIONAL)
* field type = ``text``
* set the argument for the executable.
* :menuselection:`Services > CTI Server > Sheets > Events`: Choose the right events for starting the application.
Example : Run the ``notify-send`` command on linux:
* Define ``popupUrl`` with a display value of ``notify-send``
* Define ``runAsExecutable`` with a display value of ``true``
* Define ``executableArgs`` with a display value of ``caller:{xivo-calleridnum}`` where the variable ``xivo-calleridnum`` will be replaced by the caller phone number.
.. figure:: example_xivo_sheet_exe.png
:scale: 90%
.. _login_pause_funckeys:
Login and Pause management using function keys
......@@ -131,7 +263,7 @@ Behavior
* The key blinks on Snom and Yealink phone sets. It doesn't blink on Polycom phone sets.
* To be able to terminate Wrapup via the key on Snom phones you must use correct version of plugin (see
:ref:`devices_releasenotes`).
`devices releasenotes <https://documentation.xivo.solutions/projects/devices/en/latest/devices/devices.html#plugins-release-notes>`_).
Configuration
......
#################################
*********************************
XiVOcc Applications Configuration
#################################