.. _uc-assistant: ************ UC Assistant ************ .. note:: This section describes the feature of the UC Assistant application. It is available as a web application from your Web Browser. It is also available as a *desktop application* with these additionnal features: * show OS integrated notifications when receiving call * get keyboard shortcut to answer/hangup and make call using :ref:`Select2Call feature ` * :ref:`handle callto: and tel: links ` * open when machine startups * close in tray To install the *desktop application*, see :ref:`the desktop application installation ` page. **What is the XiVO UC Assistant ?** The *XiVO UC Assistant* is a Web application that enables a user to: * search contacts and show their presence, phone status * make calls through physical phone or using WebRTC * transfer incoming or outgoing calls * access voicemail * enable call forwarding and *Do Not Disturb* (aka DND) * show history of calls * chat between XiVO users also using UC assistant WebRTC ====== .. _webrtc_requirements: Requirements ------------ You can use WebRTC with *XiVO UC* or *XiVO CC* in the following environment: * LAN network (currently no support for WAN environment without using :ref:`xivo_edge`), * with the: * *UC Assistant* or *CC Agent* with Chrome browser version **85** or later * or *Desktop Application* * PC Configured with a microphone and headphones/speakers. WebRTC Features --------------- The *UC Assistant*, *CC Agent* and *Switchboard* can be used by users with WebRTC configuration, without physical phone. For configuration and requirements, see :ref:`webrtc_requirements`. `*55` (echo test) ~~~~~~~~~~~~~~~~~ To test your microphone and speaker, you may call the echo test application. After a welcome message, the application will echo everything what you speak. 1. Dial the `*55` number. 2. You should hear the "Echo" announcement. 3. After the announcement, you will hear back everything you say. If you hear what you are saying it means that your microphone and speakers are working. 4. Press `#` or hangup to exit the echo test application. .. _headset_call_control: Headset call control (WebHID) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. important:: * This feature works only with **Poly, Jabra and Yealink headsets** supporting **WebHID** on the constructor website for now. You can contact the company to talk about additional brands support. * Your headset **must be up to date**, and the update can be done through their respective brand software. * The Linux support is not guaranteed and is discussed at the end of this section .. warning:: * **Plantronics** headset: *Plantronics Hub* application **MUST** be uninstalled for this feature to work (it can be replaced by the *Poly Lens* application). * **Jabra** headset: in *Jabra Direct* application, the option ``Call control with softphone`` in *Device settings --> Softphone* menu **MUST** be enabled. To enable it, go in the application menu, then click on the headset call control button. A popup will open so you can pick your headset in the list. Note that **only devices from the supported brands will be displayed in the list**. +-----------------------------------------+--------------------------------------+ | Enabling on UC Assistant | Enabling on CCAgent & POPC | +-----------------------------------------+--------------------------------------+ | .. figure:: webrtc/menu_ucassistant.gif | .. figure:: webrtc/menu_ccagent.gif | +-----------------------------------------+--------------------------------------+ When enabled, the headset call control allows an user to answer and hangup using his headset, either in the web assistant or in the desktop application. You need to have your headset **connected using it's dongle** (or through an usb cable). **The feature does not work through direct bluetooth**. When the headset is correctly connected to your application, you will have a visual hint displayed at the top of your application (green blinking / headset). +---------------------------------------------+------------------------------------------------+ | Headset control hint on UC Assistant | Headset control hint on CC Agent & POPC | +---------------------------------------------+------------------------------------------------+ | .. figure:: webrtc/blinking_ucassistant.png | .. figure:: webrtc/blinking_ccagent.gif | | :scale: 55% | :scale: 80% | +---------------------------------------------+------------------------------------------------+ Depending on the case, pushing the phone action button or the play/pause button of your headset (often placed at the center of an earpiece) should do the followings actions : * if your softphone is ringing, you will answer * if you are in a call or a conference, you will hangup .. note:: If the last headset you used is still connected the next time you use your application, then headset call control will be **re-enabled automatically**. To try this feature on Linux, you will need to have at least read/write permission over your hidraw driver. Here is a way to do it: .. code:: bash echo 'KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0666"' | sudo tee /etc/udev/rules.d/99-hidraw-readonly.rules sudo udevadm control --reload-rules sudo udevadm trigger Please note that, although there are generic drivers for Plantronics and Jabra devices in the Linux kernel (3.19 for Plantronics and 4.16 for Jabra), these devices appear to function quite differently when used on Linux compared to Windows. Therefore, we cannot guarantee that the headset will behave as expected on Linux. You could try some device-specific drivers if made available by these brands, provided they support call control on Linux. .. _webrtc_input_output_device: Input/Output Audio Device ~~~~~~~~~~~~~~~~~~~~~~~~~ Audio device for input (microphone) or output (speaker) can be chosen within the application configuration: .. figure:: webrtc/webrtc_input_output_audio_device_selection.png :scale: 100% .. _webrtc_secondary_ringing_device: Secondary Ringing Device ~~~~~~~~~~~~~~~~~~~~~~~~ When receiving a call, your computer will play a ringing sound to notify you. By default, this sound is played on the audio device selected in the audio configuration menu. In order to play the ringing sound on another audio device, you can configure it in the **Secondary ringing device** section. .. figure:: webrtc/webrtc_secondary_ringing_device_selection.png :scale: 100% For example, if your headset is set as the default audio device for calls, you can configure your speakers as the *Secondary ringing device* to ensure you hear incoming call notifications even when you're not wearing your headset. - Ensures you never miss an incoming call notification. - Allows flexibility in choosing where the ringing sound is played. - Ideal for setups with multiple audio devices (e.g., headset and computer speakers). .. _webrtc_testing_audio_device: Testing Audio Devices ~~~~~~~~~~~~~~~~~~~~~ Audio devices can directly be tested from the configuration menu to ensure they are working properly: **Testing Output Devices** For both the main output device and the secondary ringing device, test the audio by clicking the test button. This will play the configured ringtone on the selected device to verify it is working correctly. **Testing Input Device (Microphone)** For the microphone, test it by clicking the test button. This will: - Display a volume meter showing the microphone input level - Play back your voice so you can hear yourself speaking - Allow you to verify that your microphone is working and properly configured .. figure:: webrtc/webrtc_test_input_output_device.png :scale: 100% This is particularly useful before making calls to ensure your audio setup is functioning as expected. .. _webrtc_ringtone_selection: Ringing Sound ~~~~~~~~~~~~~ You can also choose to change your ringtone sound, both those options are available in the respective menu of the UCAssistant, CCAgent, and Switchboard, on the top right corner. .. figure:: webrtc/webrtc_ringtone_selection.png :scale: 100% This feature is only available when using a WebRTC line. .. _webrtc_mute_self: Mute your microphone ~~~~~~~~~~~~~~~~~~~~ Being a webrtc user allows you to mute your microphone while being in a call with somebody. Clicking this button again will unmute the microphone. Clicking directly on the volume meter will have the same effect as clicking on the mute button. The little microphone icon in the volume meter will change according to your mute state. On UC Assistant : .. figure:: webrtc/ucassistant-call-mute.png On CC Agent and Switchboard : .. figure:: webrtc/ccagent-call-mute.png .. _webrtc_volume_indication: Volume indication ~~~~~~~~~~~~~~~~~ .. figure:: webrtc/volume_meter.png Two progress bars show the volume level of the speaker and the microphone. It certifies that the audio flow has been sent. .. _webrtc_sound_detection: Sound detection ~~~~~~~~~~~~~~~ .. figure:: webrtc/microphone_not_working.png During the first five seconds of your call, if the application detect that there is no sound coming from your microphone, a small message will appear. .. _webrtc_quality_detection: Call quality detection ~~~~~~~~~~~~~~~~~~~~~~ .. figure:: webrtc/webrtc_audio_quality_issue_msg.png If the call quality can be impacted by some network issues or server configuration issues, a small message will appear. The message will stay up to 10 seconds after the audio quality is back to normal. The advanced statistics in the "show details" section and the play icon colors are updated live. .. figure:: webrtc/webrtc_audio_quality_issue_msg_details.png The current treshold are as following : Quality goes to medium when something is higher than : - Jitter: 50 ms - Packet losts: 10% - Round trip time: 150 ms Quality goes to bad when something is higher than : - Jitter: 100 ms - Packet losts: 20% - Round trip time: 300 ms .. _webrtc_quality_detection_logging: Call quality server-side feedbacks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ If the quality of a call goes wrong, a live statistics feedback will be sent to the server. There will also be an automatic feedback at the end of each call, giving informations on the point where the call quality was at it's worst state. For more informations on those logs - see :ref:`webrtc_quality_logging`. Live feedbacks ^^^^^^^^^^^^^^ Live audio quality measurement is taken every 2 seconds. If the quality is bad enough compared to the treshold, they are visible on the user interface as a small yellow message, and are also visible in the browser console. The statistics that are calculated using those measurements are done using the segment of time inbetween the last measurement and the new one, so it will be the last 2 seconds of the call for each measurement. The quality feedbacks are sent in xuc server logs only when it deteriorate enough to match the medium or bad quality treshold, and they respect a pause of at least 20 seconds inbetween each one to prevent flooding logs. For more informations on those logs - see :ref:`webrtc_quality_logging`. End of call report ^^^^^^^^^^^^^^^^^^ The quality report at the end of each call is always sent to the xuc server logs even if the call went well. The statistics that are present in this end of call report are equals to the worst numbers found during the call. For example, if at some point the user had a spike of 20% packet loss during a few seconds but the rest of the call went well, the report will state that the packet loss spike was 20%. It is the same with jitter and RTT. It's not an average, it's always the highest detected statistic. For more informations on those logs - see :ref:`webrtc_quality_logging`. Upload and download directions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The upload direction is the direction from the user point of view (local outbound flow) sending data to the server (remote inbound flow). The download direction is the direction from the server point of view (remote outbound flow) sending data to the user (local inbound flow) .. _webrtc_codec: Opus Codec ~~~~~~~~~~ By default WebRTC line uses the Opus codec. It enhances the audio quality of calls with a lower bitrate (around 20kbps with the current configuration compared to 64kbps for alaw codec). Limitations ----------- Known limitation are : * Voice may not be able to hear if your computer have more than 4 network interfaces up at the same time (this can happen if you use virtualization) .. note:: | To check if you have more than 4 network interfaces you can type following command: | ``ls /sys/class/net`` | Then just use: | ``ifdown `` | This will switch off network interface not required to make your call. Additional chrome WebRTC-specific options ----------------------------------------- There are various additional settings used in the code. They are used to improve audio quality by enabling or disabling chrome WebRTC-specific flags. .. note:: | These options are not customisable. They are set in the code. **Chrome currently supports these audio quality options :** * **Automatic gain control** : Adjust voice sound level to make it linear, lowering sound level when the user speaks too loudly. * **Echo cancellation** : Detect and delete echo coming from the playback of the user's own voice. * **Noise suppression** : Cancel background noises coming from the user's environment. * **Highpass filter** : Filters out low frequencies noises (like microphone background buzzing permanent sound). * **Audio mirroring** : Reflect sound coming from different directions into a focus point (similar to a parabola). * **Typing noise detection** : Detect and delete keypress sounds. **The current production code is set as follows :** * googAutoGainControl is set to *false* * googAutoGainControl2 is set to *false* * googEchoCancellation is set to *true* * googEchoCancellation2 is set to *true* * googNoiseSuppression is set to *false* * googNoiseSuppression2 is set to *false* * googHighpassFilter is set to *false* * googAudioMirroring is set to *false* * googTypingNoiseDetection is set to *true* .. note:: | This flag used to be valid but is now deprecated : | - Ducking : Reduce an audio signal by the presence of another signal (multiple people talking at the same time). Login ===== To login, you must have a user configured on the *XiVO PBX* with: * CTI Login enabled, * Login, password and profile configured * A configured line with a number .. warning:: If a user tries to login without a line, an error message is displayed and user is redirected to the login page (this applies also to :ref:`desktop-application` ) .. figure:: errornoline.png :scale: 80% .. note:: Automatic login keeps you signed in until you log out. .. _uc_assistant_search: Search ====== You can use the search section to lookup for people in the company, results will display all information known for the user. .. figure:: search.png :scale: 100% The DND (Do Not Disturb) status of each user is displayed in the search results. When a user has DND enabled, a red icon appears next to their avatar. .. figure:: search_dnd.png :scale: 100% On the line of the user, you will see the following actions : * start call : will call the default phone number * start chat conversation (if it is a XiVO user) * start video call (if the video calls are available for this user) * send an email (if user has an email) When clicking on the line, a contact modal opens displaying detailed information about the selected user. .. _contact-modal: Contact modal -------------- This modal is composed of a `Header`_ and three main sections `Contacts`_, `General`_ and `Location`_ Their content is filled with what is defined in the selected :ref:`display_filter` and the selected :ref:`directories`. .. figure:: contactSheet.png :scale: 100% Header ~~~~~~ Displays the name and up to two optionnal text fields (user's role/function...) Contacts ~~~~~~~~ Contains up to 5 configurable numbers/callables and supports to display only 1 email. You will be able to: * display all the phone numbers available for this user * start call by clicking on the phone icon * copy the phone number into your clipboard by clicking on the copy icon. * display the user's email address if he has one. * copy the user email into your clipboard by clicking on the copy icon * start writing an email by clicking on the email (it will open the user's configured email client) .. note:: By default only the email destination is pre-filled but you can also pre-fill the email *subject* and *body* via a template - see :ref:`email_template_configuration` General ~~~~~~~ Contains up to 5 configurable text fields to display further information Location ~~~~~~~~ Contains up to 2 configurable text fields to display further information .. note:: Note that *General* and *Location* sections will be folded if no fields are filled in. .. figure:: contactSheet_foldedSection.png :scale: 100% .. important:: Integration: to enable this feature, you must configure the directories in the *XiVO PBX* as described in :ref:`directories` and :ref:`dird-integration-views`. Forwarding Calls and DND ======================== From UC Assistant you can activate *Do Not Disturb* to block all incoming calls or forward call to any another number just by clicking on action button as seen on following screenshot: .. figure:: action.png :scale: 100% You can then change your settings and enable them. .. figure:: forward_dnd.png :scale: 100% Action possibles are : * Enable DND * Disable DND * Edit call forwarding (for both unconditional or on missed call only) You know that all incoming calls will be rejected once you see the following logo in the header bar : .. figure:: forward_dnd_logo.png :scale: 100% All calls are forwarded once you see this following one : .. figure:: forward_logo.png :scale: 100% Finally, calls are forwarded only if you missed it when you see this one : .. figure:: forward_na_logo.png :scale: 100% .. note:: If calls are redirected, the forward number will be shown under your name. Besides, there is a precedence, if DND mode is enabled and also call forwarding, calls will be rejected. .. _uc_assistant_call_history: Call history ============ The call history tab lists all the recent calls you were part of. For each call, it displays the status (received, emitted...), the duration, as well as the time when the call happened. You also see the phone status of internal users. You can hover your mouse cursor on a call to add this phone to your contact, or call it. You can also click on it to unfold it and see the call(s) details. .. figure:: call_history.png :scale: 100% .. _uc_assistant_groups: Groups ====== Clik on the groups button to see the groups you belongs to. Groups must be configured in the *XiVO PBX* as described in :ref:`groups-configuration` .. figure:: groups.png :scale: 100% .. note:: Users can join or leave a group to start or stop receiving calls. If you want to prevent users from joining or leaving groups, you can disable this functionality. For more information, see :ref:`disable_group_leave` Favorites ========= Click on the star to add/remove a search result to your favorites. .. _uc-assistant_personalcontacts: Personal contacts ================= From top-right hamburger menu, it is possible to display additional actions to handle you personal contacts. You will be able to **create**, **delete all**, **import** and **export** personal contact that you will be either able to search from the toolbar or find them in *favorites* panel if starred. .. figure:: hamburger_menu.png :scale: 100% Create a personal contact ------------------------- Just fill wanted fields (such as name and number), click on star if you want this contact to be displayed in *favorites* panel. .. warning:: It is not possible to have twice the same personal contact, at least one field must differ. .. warning:: Every contact must have at least a name (either firstname or lastname) and a number (either number, mobile or other number). .. figure:: add_pc.png :scale: 75% It's also possible to create a personal contact from call history by hovering a call item and so have pre-filled fields. Edit a personal contact ----------------------- To edit a personal contact, you should search it first, and a pencil icon will be displayed on the user line as in the following screen: .. figure:: edit_pc.png :scale: 100% Once clicked, you are redirected to edition pane where you just fill wanted fields. Delete a personal contact ------------------------- To delete a personal contact, you should edit it first, then you just need to click on trashcan icon : .. figure:: delete_pc.png :scale: 100% Once clicked, you are invited to confirm or not the deletion of this contact. Import personal contacts ------------------------ From menu, you can upload a **.csv** file that contains all the data of your personal contacts. You can either use a file exported from this same interface or create yours. Here are the list of available attributes of a personal contact: * ``company`` * ``email`` * ``fax`` * ``firstname`` * ``lastname`` * ``mobile`` * ``number`` As an example here a csv file that can be imported .. code:: company,email,fax,firstname,lastname,mobile,number corp,jdoe@company.corp,3333,John,Doe,2222,1111 Reverse lookup -------------- By default, :ref:`reverse lookup ` is enabled for personal contact display on incoming calls. Configuration is set to display ``firstname`` and ``lastname`` if ``number`` or ``mobile`` matches an existing personal contact. Phone integration ================= The *UC Assistant* can integrate with the phone to : * Call / Hangup * Put on hold * Do direct or attended transfers - check :ref:`phone_integration_limitations` * Initiate 3-party conference - check :ref:`phone_integration_limitations` As these features are closely linked to the phone to work, you must check `supported phones for UC Assistant `_ and follow the :ref:`phone_integration_installation` page. Once, you're phone is properly configured and you are connected as a user, you know that your using SIP phone once you see the following logo in the header bar : .. figure:: fixed_logo.png :scale: 100% On hold notifications ===================== You can be notified if you forget a call in hold for a long time, see :ref:`configuration section `. .. figure:: user-hold-notification.png :scale: 90% .. _uc-assistant_conferences: Conferences =========== When joining a conference, either as an attendee or an organizer, the *UC Assistant* will display specific informations about the conference you are joining. .. note:: On WebRTC and Snom phones you can also do a device hosted three-party conference, in this section we describe features of the XiVO hosted conferences. .. figure:: conference_overview.png :scale: 60% Conference information: ----------------------- * The timer next to the conference name displays how long the conference has been running. * The first line displays the number of attendee. Conference actions: ------------------- As an attendee, you can only: * Exit a conference room by clicking the hangup button * Put the conference on hold. Other attendees will not hear any hold music (if you're on the same XiVO) but will not be able to hear you neither you will be able to hear the conference room. As an organizer, you will also be able to: * Mute/Unmute all other attendee in the conference room Attendees information: ---------------------- .. figure:: conference_attendees_muted.png :scale: 60% * Attendees name, number and timer are displayed below the conference name * Attendees are ordered by name with the exception of the first one which always reflect the current user * Conference organizer are displayed in green * When an attendee is muted, a slashed microphone icon will be displayed next to its name * When an attendee is talking, a green speaker will be displayed next to its name .. _uc-assistant_conferences_actions: Attendee action: ---------------- .. figure:: conference_attendee_mute_itself.png :scale: 60% **Participant** can : * Mute/Unmute itself. If the participant is muted and starts speaking, the microphone icon in the volume meter will blink in red as a reminder. This red warning only happens in audio conferences, not in normal phone calls. .. figure:: blinking-mic.png :scale: 60% * Include an ongoing secondary call to a conference via the include button. .. figure:: include_to_conf.png :scale: 80% **Organizer** can also: * Mute/Unmute any attendee * Kick out an attendee. A message will be played to the kicked out attendee before leaving the conference. * Invite a user to the conference. This can be done by clicking the *invite to conference* button in the user dropdown menu : * from the *favorites* tab, * or from the *search results*, by searching for a username. .. figure:: invite_to_conf_from_search_results.png :scale: 70% * The organizer can also invite a phone number to a conference via the additional call options. This option will be displayed after the organizer starts typing a phone number in the search bar. .. figure:: invite_to_conf_dropdown.png :scale: 80% .. _uc-assistant_chat: Instant Messaging ================= It is possible from the assistant to send chat messages and have private text conversation. It is possible to deactivate it if this feature is not suitable for your needs or if you have already an external chat application, see :ref:`webassistant_disable_chat`. There are two possible behaviors for handling messages: #. **No persistance** (default) : Each message is an *instant message* that can be sent to another user logged in. messages are not stored anywhere and will be discarded once you refresh the page or log out. #. **With persistence** : Can be enabled with :ref:`install_chat_backend`. This allows then * To send messages to offline users * To retrieve you conversation history with other parties * To receive notifications when you logs in if you have unread messages that has been received while you were disconnected. .. figure:: chat.png :scale: 80% When you send a message, you are notified if the message was sent successfully or if the message was not received because the recipient is not logged in. When you receive a message, you are notified with a orange badge on the message tabs. If you are using the desktop application, the electron tray icon also shows an orange badge. You will also have a notification from your web browser or a system notification if you are using the desktop application. You can send links in message, they will be clickable. You can also write emojis from your keyboard (e.g., `:smile:`). You can find here some `emojis exemple`_. .. _emojis exemple: https://www.webfx.com/tools/emoji-cheat-sheet/ .. _uc_chat_call: The conversation window also allows you to call a user on their internal phone number directly from the chat. To do so, you can click on the phone icon next to the name of the user you're chatting with. If the video calls are available on your XiVO, you can launch one by clicking on the camera. .. figure:: call-in-chat-uc.png :scale: 80% You can send a message from different places in the application : - From the contact line : .. figure:: chat_from_contact_line.png :scale: 80% - From an ongoing call : .. figure:: chat_from_ongoing_call.png :scale: 80% - from a conference call : .. figure:: chat_in_conferences.png :scale: 80% You are also able to list, at any time, all your ongoing conversation from the message tab : .. figure:: chat_list.png :scale: 80% External directory ================== This feature will add an additional book icon on the left side of the search bar. When clicking on this *book icon*, it will open (or close) the defined **external directory** (the *external directory* being a directory accessible via an URL). To enable it, see :ref:`configuration section `. .. note:: The search in the search bar will not search in this directory. But a search could be implemented in this external directory. The screenshot below shows an example: when clicking on the *book icon* the *external directory* is shown. Here this *external directory* was developped to list users per site. .. figure:: external_directory.png :scale: 70% .. _uc_logout: Logout ====== The logout button can be found after going in the top-right hamburger menu, which looks like the screenshot below : .. figure:: logout_button_configuration_menu.png :scale: 80% You will then be brought back to the login page. Meeting room ============ You can join an audio-video conference, called meeting room, which will open on the side of your application. See :ref:`meetingrooms` for more information. .. _mobile_web_switch: Using web and mobile applications together ========================================== .. note:: This section concerns **only WebRTC users**, not Unique Account or SIP phone users. After a user connects to the mobile application for the first time, a pop up notification will be sent on their UCAssistant. This is to inform the user that they will now receive calls on both mobile and web application. The user will be able to change this by clicking on the call management section : .. figure:: call_management_arrow.png :scale: 60% They can then choose if they want to receive calls on the mobile application, web application, or on both. .. figure:: mobile_or_web_app.png :scale: 60% .. figure:: mobile_app_calls.png :scale: 60% After a user uninstalled the mobile application, they can unpair the mobile app from the assistant by clicking on the chain icon next to the mobile option. .. figure:: unpair_mobile_app.png :scale: 60%