...
 
Commits (102)
......@@ -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">CALLISTO 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>
......@@ -58,3 +58,15 @@ Files path summary table
+------------------------+-------------------------------------+-------------------------------------------------------------------------------------------------------+
| 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
......
......@@ -64,12 +64,12 @@ 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
......@@ -94,10 +94,15 @@ 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.
......@@ -141,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
......@@ -153,9 +158,9 @@ For this, follow these steps:
modification to :file:`/usr/share/xivo-sysconfd/templates/resolvconf/hosts` after each
``xivo-upgrade``.
5. Your X.509 certificate must have ``subjectAltName`` defined. See the example at `cacert.org <http://wiki.cacert.org/FAQ/subjectAltName>`_
#. 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>`_.
6. Restart all XiVO services::
#. Restart all XiVO services::
xivo-service restart all
......@@ -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
*******************
......@@ -10,43 +12,47 @@ it to work correctly.
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
----
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 because ``curl`` is used during installation and upgrade
Proxy information is set via the :file:`/etc/xivo/dhcpd-update.conf` file.
Create the :file:`~/.curlrc` file with the following content::
Edit the file and look for the ``[proxy]`` section.
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
provd
=====
Proxy information is set via the :menuselection:`Configuration --> Provisioning --> General`
page.
wget
====
----
*This step is needed because this tool is used by xivo-upgrade script.*
.. 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::
......@@ -54,10 +60,35 @@ Create the :file:`~/.wgetrc` file with the following content::
http_proxy=http://username:password@proxyip:proxyport
XiVO Services
=============
Several XiVO services needs also the proxy to be configured, if any.
dhcp-update
-----------
.. 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,7 +8,7 @@ System
DHCP Server <dhcp/dhcp>
Mail <mail/mail>
Network <network/network>
database
Database <database/database>
backup_restore
cli_tools/cli_tools
https_certificate
......
#################
*****************
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::
......
**********
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.
XUC Internal Metrics
====================
Internal metrics are also available - see :ref:`xuc_jmx_metrics` page.
.. toctree::
:maxdepth: 2
:hidden:
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
......@@ -161,15 +161,12 @@ 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
......
......@@ -4,6 +4,9 @@
CC Agent configuration
**********************
.. contents::
.. _agent_recording:
Recording
......@@ -33,6 +36,77 @@ You can also use ``SHOW_QUEUE_CONTROLS`` environment variable in :file:`/etc/doc
.. figure:: ccagent_activities.png
: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
......@@ -189,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
......
......@@ -2,93 +2,29 @@
Reporting
*********
.. _totem_panels:
Totem Panels
============
Data replication can take some time if there are a lot of data in xivo cel and queue log tables. You may check xivo-db-replication log files (/var/log/xivocc/xivo-db-replication.log).
Totem panels use the ELK stack.
Preconfigured panels are available on http://@IP/kibana/#/dashboard/file/queues.json et http://@IP/kibana/#/dashboard/file/agents.json to be able to save this panels in elasticsearch database you have
to sign on on request user admin/Kibana
Data (the ``queue_log`` table) is replicated:
Defaut data persistance in totem panels is 7 days, you may change this default
by defining ELASTICTTL environment variables in xivo-replic section, see below for an example of how to
keep 15 days.
* from the *XiVO PBX* to the *XiVO CC* with the ``db_replic`` service (see logs in XiVO in :file:`/var/log/xivo-db-replication/xivo-db-replication.log`)
* from the database of the *XiVO CC* to Elasticsearch with Logstash
.. code-block:: ini
xivo_replic:
image: xivoxc/xivo-db-replication:latest
.. _totem_panels_configuration:
links:
- pgxivocc:db
- elasticsearch:elasticsearch
Import Default Configuration and Demo Dashboards
------------------------------------------------
environment:
- JAVA_OPTS=-Xms256m -Xmx256m
- XIVO_HOST=192.168.250.11
- ELASTICTTL=15
...
Preconfigured panels are available on https://gitlab.com/xivocc/sample_reports/blob/master/kibana-set/kibana.json.
You have to download the file and import it to Kibana. To import them go to :menuselection:`Kibana management --> Saved objects`` menu.
Then use Import menu and select the :file:`kibana.json` file.
Then you'll be able to open sample dashboards in the Dashboard menu.
Disable Totem Panels
^^^^^^^^^^^^^^^^^^^^
If you do not use pannels and elasticsearch, it is possible to disable then.
You need to edit the docker-xivocc.yml file.
**First**, in `xivo_replic` section:
* remove or comment the elasticsearch link,
* add elasticsearch as en `extra_host` on 127.0.0.1
* and add the `DISABLEELASTIC=true` environment variable
.. code-block:: ini
xivo_replic:
image: xivoxc/xivo-db-replication:latest
links:
- pgxivocc:db
#- elasticsearch:elasticsearch
extra_hosts:
- "elasticsearch:127.0.0.1"
environment:
- JAVA_OPTS=-Xms256m -Xmx256m
- XIVO_HOST=192.168.250.11
- DISABLEELASTIC=true
...
**Secondly**, remove the `elasticsearch` and `kibana_volumes` sections,
**Thirdly**, in `nginx` section:
* remove or comment the elasticsearch link,
* add elasticsearch as en `extra_host` on 127.0.0.1
* remove or comment the kibana_volumes
.. code-block:: ini
nginx:
image: xivoxc/xivoxc_nginx:latest
ports:
- 80:80
links:
#- elasticsearch
- xuc
- xucmgt
extra_hosts:
- "xivo_host:192.168.250.11"
- "elasticsearch:127.0.0.1"
volumes_from:
#- kibana_volumes
- fingerboard
...
......@@ -9,4 +9,10 @@ Web / Desktop Application
Disabling WebRTC
================
WebRTC can be disabled globally by setting the ``DISABLE_WEBRTC`` environment varibale to ``true`` in :file:`/etc/docker/compose/custom.env` file.
WebRTC can be disabled globally by setting the ``DISABLE_WEBRTC`` environment variable to ``true`` in :file:`/etc/docker/compose/custom.env` file.
Call history management
=======================
The call history can be managed by setting the ``CALL_HISTORY_BY_DAYS`` environment variable to a specific number of days in :file:`/etc/docker/compose/custom.env` file.
......@@ -8,7 +8,7 @@ API and SDK
xuc/index
third_party/index
recording/index
rest_api/rest_api
config/index
rest_api/rest_api
subroutine
queue_log
This diff is collapsed.
#########################
Recording server REST Api
#########################
*************************
Recording server REST API
*************************
This section describes the Recording server API.
......
.. _rest-api:
*************
XiVO REST Api
XiVO REST API
*************
The XiVO REST APIs are the privileged way to programmatically interact with XiVO.
......
=======================
***********************
Third Party Integration
=======================
***********************
Third party web application integration is possible inside the XucMgt Agent application. Upon each call, you can display a custom panel next to the agent interface:
......@@ -8,7 +8,7 @@ Third party web application integration is possible inside the XucMgt Agent appl
:scale: 60%
Workflow
--------
========
When a call is ringing on the agent phone, the Application will call the external web service (see :ref:`xucmgt_3rd_configuration` below). The web service response will dictate the behaviour of the integration. For example, if the speficied action is to open the application when the call is hung up, a new panel will be created and opened inside the agent interface, showing the content specified by the web service response. (see :ref:`xucmgt_3rd_api` for available options).
......@@ -20,7 +20,7 @@ When the work is complete in the integrated application, the application must po
.. _xucmgt_3rd_configuration:
Configuration
-------------
=============
You need to specify the third party application web service url to integrate this application inside the XucMgt Agent interface. This can be done by giving a value to the ``THIRD_PARTY_URL`` environment variable
in the :file:`/etc/docker/compose/custom.env` file ::
......@@ -33,7 +33,7 @@ The speficied URL must be accessible from the client browser (i.e. the end user
.. _xucmgt_3rd_api:
Web Service API
---------------
===============
The Web Service url specified in the ::ref:`xucmgt_3rd_configuration` must conforms to the following behaviour.
......@@ -110,7 +110,7 @@ or::
.. _xucmgt_3rd_complete:
Completion
----------
==========
Once the work is complete inside the third party application, it should post a completion message (``closeThirdParty``) to the application using the `Web Messaging API`_.
......
.. conferences_api:
.. _conferences_api:
***************
Conferences API
......
.. developers_guide:
.. _developers_guide:
****************
Developers Guide
......
.. flashtext_api:
.. _flashtext_api:
FlashText
=========
*************
FlashText API
*************
Allows user to send a text message to an other connected user, this message is delivered only
if the destination user is connected. When destination user is not connected, the message is lost.
......@@ -10,13 +11,13 @@ A sample of implementation is available in app/assets/javascripts/pages/sampleFl
and app/views/sample/sampleFlashText.scala.html
Handler
-------
=======
* Handler on : Cti.MessageType.FLASHTEXTEVENT
Command
-------
=======
Cti.sendFlashTextMessage(username, sequence_number, testmessage)
......@@ -27,7 +28,7 @@ Example :
Cti.sendFlashTextMessage("user", 24, "This is my message");
Messages received
-----------------
=================
* FlashTextUserMessage
......
.. javascriptapi:
.. _javascriptapi:
###########
***********
Description
###########
***********
Login and Authentication
......@@ -211,7 +211,7 @@ Format
| | system data XIVO\_ or data attached |
| | to the call key beginning by USR\_ |
+--------------+----------------------------------------+
|username | Can be the username cti of called |
| username | Can be the username cti of called |
| | number, it's only defined when the |
| | called user is an internal user |
+--------------+----------------------------------------+
......@@ -260,6 +260,23 @@ The response to this command is formatted as follows:
}
}
Phone Hint Status Events
------------------------
You can subscribe to PhoneHintStatusEvents using `Cti.subscribeToPhoneHints`_, allowing you to monitor state of the phone line with a given number.
PhoneHintStatusEvents has the following format:
::
{
"msgType":"PhoneHintStatusEvent",
"ctiMessage":{
"number":"1005","status":0
}
}
The phone hint status code can be resolved to a name using the `Cti.PhoneStatus` object in the `cti.js`. E.g.,
the status 0 from the example above stands for "AVAILABLE".
Voice Mail Status Update
------------------------
......@@ -282,10 +299,15 @@ User Right Profile
::
{"msgType":"RightProfile","ctiMessage":{"profile":"Supervisor"}}
{"msgType":"RightProfile","ctiMessage":{"profile":"Supervisor", "rights":["dissuasion","recording"]}}
This message is sent upon connection to the xuc websocket. The profile can be one of: "Supervisor", "Admin", "NoRight".
The rights property contains an array with additional rights:
* "recording": User has access to recording management settings on queues
* "dissuasion": User has access to dissuasion management settings on queues
Queue Statistics
......@@ -403,7 +425,7 @@ Agent State Event
::
{"name":"AgentLogin","agentId":19,"phoneNb":"1000","since":1423839787,"queues":[8,14,170,4,1],"cause":""}
{"name":"AgentLogin","agentId":19,"phoneNb":"1000","since":1423839787,"queues":[8,14,170,4,1]}
* AgentReady
......@@ -421,19 +443,19 @@ Agent State Event
::
{"name":"AgentOnWrapup","agentId":19,"phoneNb":"1000","since":2,"queues":[8,14,170,4,1],"cause":"available"}
{"name":"AgentOnWrapup","agentId":19,"phoneNb":"1000","since":2,"queues":[8,14,170,4,1]}
* AgentRinging
::
{"name":"AgentRinging","agentId":19,"phoneNb":"1000","since":0,"queues":[8,14,170,4,1],"cause":"available"}
{"name":"AgentRinging","agentId":19,"phoneNb":"1000","since":0,"queues":[8,14,170,4,1]}
* AgentDialing
::
{"name":"AgentDialing","agentId":19,"phoneNb":"1000","since":0,"queues":[8,14,170,4,1],"cause":"available"}
{"name":"AgentDialing","agentId":19,"phoneNb":"1000","since":0,"queues":[8,14,170,4,1]}
* AgentOnCall
......@@ -441,7 +463,7 @@ Agent State Event
{"msgType":"AgentStateEvent","ctiMessage":
{"name":"AgentOnCall","agentId":19,"phoneNb":"1000","since":0,"queues":[8,14,170,4,1],
"cause":"available","acd":false,"direction":"Incoming","callType":"External","monitorState":"ACTIVE"}}
"acd":false,"direction":"Incoming","callType":"External","monitorState":"ACTIVE"}}
......@@ -449,7 +471,7 @@ Agent State Event
::
{"name":"AgentLoggedOut","agentId":19,"phoneNb":"1000","since":0,"queues":[8,14,170,4,1],"cause":"available"}
{"name":"AgentLoggedOut","agentId":19,"phoneNb":"1000","since":0,"queues":[8,14,170,4,1]}
Agent Error
......@@ -748,14 +770,19 @@ Cti.logoutAgent(agentId)
------------------------
Un log an agent
Cti.pauseAgent(agentId)
-----------------------
Change agent state to pause
Cti.pauseAgent(agentId, reason)
-------------------------------
Change agent state to pause.
* `agentId`: Id of the agent to set state for. Can be omitted to change current loggedin agent state.
* `reason`: Optional string to label the kind of pause to set.
Cti.unpauseAgent(agentId)
-------------------------
Change agent state to ready
* `agentId`: Id of the agent to set state for. Can be omitted to change current loggedin agent state.
Cti.listenAgent(agentId)
------------------------
Listen to an agent
......@@ -911,8 +938,6 @@ Request a list of configuration objects, objectType can be :
Triggers handlers QUEUELIST, AGENTLIST, QUEUEMEMBERLIST.
Subscribes to configuration modification changes, handlers QUEUECONFIG, AGENTCONFIG, QUEUEMEMBER can also be called
.. _Cti.getCurrentCallsPhoneEvents:
Cti.getConferenceRooms()
------------------------
Request the list of conference rooms. Also receive event when the list is updated.
......@@ -947,10 +972,30 @@ Request the list of conference rooms. Also receive event when the list is update
}
]
.. _Cti.getCurrentCallsPhoneEvents:
Cti.getCurrentCallsPhoneEvents()
--------------------------------
Request PhoneEvents for current device calls. See `Phone Events`_ for answer description.
.. _Cti.subscribeToPhoneHints:
Cti.subscribeToPhoneHints(phoneNumbers)
---------------------------------------
* phoneNumbers (Array of string): list of phone numbers to subscribe
Subscribe to PhoneHintStatusEvents for a list of phone numbers. You will get an initial event with the current
Phone Hint Status (see `Phone Hint Status Events`_ for details) for every subscribed phone number and then a new
`Phone Hint Status Events`_ for every change to the phone number state. After the Xuc server restart it may happen
that the current phone state is unknown, in which case you will not get the initial event, only the first event update.
You can repeat the command to subscribe to more numbers. The subscription is valid for the current websocket and
can be cancelled either by closing the websocket, or by the `Cti.unsubscribeFromAllPhoneHints()`_ command.
Cti.unsubscribeFromAllPhoneHints()
----------------------------------
This command allows you to cancel all previous subscription to phone hints.
Cti.setAgentQueue(agentId, queueId, penalty)
--------------------------------------------
* agentId (Integer) : id of agent, returned in message `Agent Configuration`_
......
.. restapi:
.. _restapi:
########
********
Rest API
########
********
General form
......
.. webrtc_api:
.. _webrtc_api:
**********
WebRTC API
......
.. web_socket_api:
.. _web_socket_api:
**************
Web Socket API
......
###############################
*******************************
Unified Communication Framework
###############################
*******************************
This framework is mainly provided by the xuc server. It provides
......
......@@ -2,13 +2,13 @@
.. _statistics:
####################
********************
Real Time Statistics
####################
********************
==============
Exposed by xuc
==============
Queue statistics
-----------------
......
......@@ -10,5 +10,5 @@ The reporting is composed of four packages: pack-reporting, xivo-full-stats, xiv
These packages will feed the tables of the xivo_stats database:
- xivo-db-replication feeds the tables cel and queue_log in real time, and the configuration tables (dialaction, linefeatures, etc...) every 5 minutes
- xivo-full-stats feeds in real time tha tables call_on_queue, call_data, stat_queue_periodic, stat_agent_periodic and agent_position
- xivo-full-stats feeds in real time the tables call_on_queue, call_data, stat_queue_periodic, stat_agent_periodic and agent_position
- xivo-reporting-db and pack-reporting work together to feed the tables stat_queue_specific, stat_agent_queue_specific and stat_agent_specific every 15 minutes
\ No newline at end of file
......@@ -62,7 +62,7 @@ master_doc = 'index'
# General information about the project.
project = u'XiVO Solutions'
copyright = u'2016-2017, Avencall'
copyright = u'2016-2019, Avencall'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
......
......@@ -89,7 +89,7 @@ mobile phone it would usually be `0xxxxxxxxx@default`.
Usage
-----
Tha agent has to login using the custom line, the standard ccagent features are available. However, due to external line
The agent has to login using the custom line, the standard ccagent features are available. However, due to external line
some phone control features are not available - the agent can't answer, put on hold or transfer calls from the ccagent
interface. On the XiVO side, please ensure that the call distributed to the agent is canceled if the agent doesn't answer
before the call is answered by for example the voicemail.
......@@ -141,6 +141,39 @@ A little badge displays the number of waiting calls in each activity. The sum of
.. figure:: ccagent-waiting-call.png
:scale: 80%
.. _agent_activity_failed_dst:
Activity's Failed Destination
-----------------------------
In XiVO, when an activity is exceptionnally closed, a sound file containing a message can be played to the caller.
From its *CC Agent* application, an agent who has access to the dissuasion can:
* see which sound file or default queue is currently configured
* select another sound file to be played
* select a default queue as a failed destination, instead of a sound file.
An agent can change the dissuasion if they have been granted access, it means if they have an administrator profile or a supervisor profile with the permission to change the dissuasion.
The agent profile can be set from the configmgt interface. See :ref:`profile_mgt` section.
.. note:: The sound files available for the activity and displayed to the agent and the default queue are to be set by an administrator of the XiVO.
See :ref:`agent_configuration-activity_failed_dst` section.
In the Activity view, when clicking the *Dissuasion* button, a menu appears with the list of the sound files or default queues available for a queue.
If one of the sound file or default queue is selected for this queue, it will be highlighted in orange and the circle icon will be checked.
.. figure:: ccagent-failed-destination-selected.png
:scale: 80%
If no sound file or default queue are selected for the queue, the circle icon won't be checked.
.. figure:: ccagent-failed-destination-of-a-queue-not-selected.png
:scale: 80%
The agent can change the selected sound file or default queue from the dropdown menu.
User directory search
=====================
......@@ -277,6 +310,20 @@ This view allows to manage callback request see :ref:`Processing Callbacks with
.. _agent_webrtc_ringing_device:
.. _agent_external_directory_feature:
External directory
==================
This feature open and close an external directory and works the same way as a new tab. It will add an additional book button on the left side of the search bar.
.. figure:: ccagent-external-directory.png
:scale: 70%
.. note:: It can be enabled in the remote configuration by passing an URL to the externalViewUrl property.
.. warning:: The opened webservice *must NOT* have the 'X-Frame-Options' to 'sameorigin', else the feature will not work.
WebRTC - Ringing device selection
=================================
......
......@@ -53,6 +53,28 @@ This diagram shows some aggregation about statistics collected from queue activi
4. Number of pending calls not answered yet
Queue details and configuration
===============================
By clicking on the name of the queue, a modal will appear.
Supervisors with no access to dissuasion will see some details about the queue.
Administrators and supervisors who have access to the dissuasion will see different tabs :
* One tab showing some information about the queue
* One tab to configure the dissuasion in case of an exceptional closing for this queue.
.. _ccmanager_activity_failed_dst:
Configuring the dissuasion for a queue
--------------------------------------
In the configuration tab, click on the title "Failed Destination".
A dropdown appears, showing the sound files and/or the queue that can be set up as a failed destination.
The failed destination can be changed from this dropdown.
.. figure:: ccmanager_configuring_dissuasion.png
:scale: 80%
To change the failed destination options for this queue, see :ref:`agent_configuration-activity_failed_dst` section.
Editing Agent Configuration
===========================
......
......@@ -40,4 +40,3 @@ In XiVO, the contact center is implemented to fulfill the following objectives :
profile_mgt/profile_mgt
skillbasedrouting/skillbasedrouting
XiVOcc Reporting <pack_reporting/index>
XiVO Reporting <reporting/reporting>
......@@ -47,6 +47,8 @@ Profiles and their rights are summed up in the following table:
| No profile | No [3]_ | N.A. [2]_ | No | N.A. |
+----------------------+----------+--------------------------+----------+-------------------------------+
Also administrators and supervisors with "dissuasion" access right can change the exceptional closing dissuasion destination when logged in webagent or in the CCManager. see :ref:`agent_configuration-activity_failed_dst`.
.. [1] i.e. attributed queues to the user via the Config Mgt. Note also that agents groups should be attributed accordingly.
.. [2] Not Applicable
.. [3] Depending on the :ref:`ccmanager-security` configuration
......
This diff is collapsed.
This diff is collapsed.
.. _devices:
*******
Devices
*******
In XiVO, there are two kind of devices:
.. toctree::
:maxdepth: 1
official_devices
community_devices
The officially supported devices will be supported across upgrades and phone features are guaranteed
to be supported on the latest version.
The community supported devices are only supported by the community. In other words, maintenance,
bug, corrections and features are developed by members of the XiVO community. XiVO does not
officially endorse support for these devices.
The next topics lists the officially and community supported devices. For each vendor, a table shows
the various features supported by XiVO. Here's an example:
+--------------------------------------------+---------+---------+--------------+
| | Model X | Model Y | Model Z |
+============================================+=========+=========+==============+
| Provisioning | Y | Y | Y |
+--------------------------------------------+---------+---------+--------------+
| H-A | Y | Y | Y |
+--------------------------------------------+---------+---------+--------------+
| Directory XIVO | N | Y | Y |
+--------------------------------------------+---------+---------+--------------+
| Funckeys | 0 | 2 | 8 |
+--------------------------------------------+---------+---------+--------------+
| | **Supported programmable keys** |
+--------------------------------------------+---------+---------+--------------+
| User with supervision function | Y | Y | Y |
+--------------------------------------------+---------+---------+--------------+
The rows have the following meaning:
Provisioning
Is the device supported by the :ref:`auto-provisioning <provisioning>` system ?
H-A
Is the device supported by the :ref:`high availability <high-availability>` system ?
Directory XiVO
Is the device supported by the :ref:`remote directory <remote-directory>` ? In other word, is it
possible to consult the XiVO's remote directory from the device ?
Funckeys
How many function keys can be configured on the device from the XiVO web interface ?
The number of function keys that can be configured on a device is not necessarily the same as
the number of physical function keys the device has. For example, an Aastra 6757i has 12 physical
keys but you can configure 30 function keys because of the page system.
Inside a table, the following legend is used:
* Y = Yes / Supported
* N = No / Not supported
* NT = Not tested
* NYT = Not yet tested
Each table also contains a section about the supported function keys. In that section, the following
legend can also be used:
* FK = Funckey
* SK = SoftKey
* HK = HardKey
* MN = Menu
Function keys work using the extensions in :menuselection:`Services --> Extensions`. It is important
to enable the function keys you want to use. Also, the enable transfer option in the user
configuration services tab must be enabled to use transfer function keys.
.. _devices_releasenotes:
Plugins release notes
=====================
xivo-aastra-3.3.1-SP4-HF9
-------------------------
.. note:: Replaces xivo-aastra-3.3.1-SP4 plugin
:v1.8: Download links for firmwares update for Aastra/Mitel phones.
:v1.7: Firmware update for Aastra/Mitel phones.
Particularly these new firmwares support forwarding of Multiple Spanning Tree Protocol (MSTP) messages from the LAN port to the PC port.
This ensures issues regarding network loops are not created.
xivo-aastra-4.3.0
-----------------
.. note:: Replaces xivo-aastra-4.1.0 plugin
:v1.8: Download links for firmwares update for Aastra/Mitel phones.
:v1.7: Firmware update for Aastra/Mitel phones.
Particularly these new firmwares support forwarding of Multiple Spanning Tree Protocol (MSTP) messages from the LAN port to the PC port.
This ensures issues regarding network loops are not created.
xivo-cisco-spa8000-6.1.11
-------------------------
:v1.1: Fix download of firmware with procedure :ref:`Cisco SPA8000 download firmware <cisco-spa8000-fw-download>`.
xivo-patton-6.10
----------------
:v1.1: Plugin added which provision FXS patton gateways (SN411X and SN43XX)
xivo-patton-SN4120-6.10
-----------------------
:v1.2: Fix plugin installation (install rule for SN4120 firmware was wrong)
:v1.1: Plugin added which provision BRI patton gateway (SN4120)
xivo-polycom-4.0.11
-------------------
.. note:: Replaces xivo-polycom-4.0.9 plugin: *this plugin is required* for Polycom devices with MAC address in the range 64167F (instead of 0004F2)
:v2.2: fix URL for Updater file download
:v2.1: DND feature disabled
:v1.9: integrate XiVOCC required template configuration
xivo-polycom-5.4.3
------------------
:v2.1: DND feature disabled