Compare commits

...

1 Commits

Author SHA1 Message Date
TSO
56fbcd1c41 [IMP] discuss: add documentation for discuss RTC 2025-04-02 10:44:43 +02:00
21 changed files with 311 additions and 2 deletions

View File

@@ -162,13 +162,13 @@ upper-right corner of the database header.
.. seealso::
- :doc:`discuss/team_communication`
- :doc:`/applications/essentials/activities`
- :doc:`discuss/ice_servers`
- :doc:`discuss/calls`
- :doc:`discuss/chatter`
.. toctree::
:titlesonly:
discuss/team_communication
discuss/ice_servers
discuss/calls
discuss/chatter
discuss/canned_responses

View File

@@ -0,0 +1,123 @@
=====
Calls
=====
The Discuss calls feature enables real-time voice and video communication within Odoo. This
functionality allows team members to collaborate in real time, share screens, and conduct meetings
directly from the Odoo interface.
Starting a call
===============
You can initiate a call from different places in Odoo:
From a Discuss channel
----------------------
1. Open the **Discuss** app.
2. Select a channel from the sidebar.
3. Click the :icon:`fa-phone` :guilabel:`(phone)` icon in the top-right corner to start a call
or the :icon:`fa-video-camera` :guilabel:`(video camera)` icon to start directly with the camera.
.. image:: calls/discuss-call.png
:align: center
:alt: Start a call from a Discuss channel
From a chat window
------------------
(this includes live chat)
1. Click on a chat window.
2. Click the :icon:`fa-phone` :guilabel:`(phone)` icon or the :icon:`fa-video-camera`
:guilabel:`(video camera)` icon in the top-right corner of the chat window.
.. image:: calls/chat-window-call.png
:align: center
:alt: Start a call from a chat window
Receiving a call
================
When someone starts a call in a direct message or group chat:
1. An invitation notification appears in the upper-right corner of your screen.
2. You can:
- Click :guilabel:`Accept` to join with audio only
- Click :guilabel:`Accept with camera` to join with video
- Click :guilabel:`Preview my camera` to check your video before accepting
- Click :guilabel:`Refuse` to decline the call
Call settings
=============
.. image:: calls/call-settings.png
:align: center
:alt: Settings button in the top right of the Discuss app
.. image:: calls/call-settings-menu.png
:align: center
:alt: Settings menu
Audio Settings
--------------
- **Input Device**: Select the microphone to use.
- **Voice Detection**: Select this option to activate your microphone only when you speak.
- **Voice Detection Sensitivity**: Adjust the sensitivity of the voice detection, the lower the value,
the more sensitive the detection.
- **Push-to-Talk**: Activate this option to use the push-to-talk feature.
- **Push-To-Talk Key**: Select the key to use for push-to-talk.
- **Delay after releasing push-to-talk**: Set the delay before the microphone is muted after releasing
the push-to-talk key.
.. note::
`The Push-to-Talk extension <https://chromewebstore.google.com/detail/discuss-push-to-talk/mdiacebcbkmjjlpclnbcgiepgifcnpmg>`_
is available in Chrome to enable this functionality when not focused on the Odoo tab.
Video Settings
--------------
- **Show video participants only**: Activate to only display the videos of the call (the participants
who do not have a video (screen share/webcam) will no longer be visible in the call.
- ** Blur video background**: Toggle the video background blurring feature, for which the
sensitivity (how precisely the shape of your head/body is matched) and the intensity (how intense
the blur is) can be adjusted.
Technical Settings
------------------
- **Log RTC Events**: Activate to enable logging of RTC events in the browser's console (verbose)
and in the internal file logger.
.. note::
Errors are always logged, even when the setting is off.
Advanced features
=================
For larger organizations or environments with specific network requirements:
- **SFU server**: For improved performance in calls with many participants.
See :doc:`calls/sfu_server` for configuration details.
- **ICE servers**: For calls between networks with restrictive firewalls.
See :doc:`calls/ice_servers` for configuration details.
Troubleshooting
===============
If you experience issues with calls, refer to the :doc:`calls/troubleshooting` guide for
diagnostic steps and solutions.
.. seealso::
- :doc:`calls/sfu_server`
- :doc:`calls/ice_servers`
- :doc:`calls/troubleshooting`
.. toctree::
:titlesonly:
calls/sfu_server
calls/ice_servers
calls/troubleshooting

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@@ -0,0 +1,58 @@
==========
SFU server
==========
In Odoo Discuss, the Selective Forwarding Unit (SFU) server enables efficient handling of calls with
many participants. Unlike peer-to-peer connections which can become resource-intensive with multiple
users, the SFU server receives media streams from each participant and selectively forwards them to
others, significantly improving call quality and scalability. Its sources can be found in the
`odoo/sfu repository <https://github.com/odoo/sfu>`_.
.. note::
In Odoo.sh and Odoo SaaS, the SFU servers are already provided. Adding your own in the
settings will override the default one.
What is a Selective Forwarding Unit (SFU)?
------------------------------------------
An SFU server is a type of media server that receives audio and video streams from each participant
in a call and selectively forwards them to other participants. This approach is more efficient than
peer-to-peer connections, especially in calls with many participants.
.. image:: sfu_server/sfu-diagram.png
:align: center
:alt: Diagram of p2p vs sfu connection layout
.. image:: sfu_server/sfu-graph-scaling.png
:align: center
:alt: Graph showing the bandwidth scaling of p2p vs sfu
When to use an SFU server
-------------------------
Consider deploying an SFU server when:
- Your organization conducts calls with more than 5-10 participants
- You frequently use video in calls with multiple participants
- Your users are distributed across different networks or locations
- You need to support users behind restrictive firewalls or complex NAT configurations
Without an SFU server, Odoo will fall back to peer-to-peer connections, which work well for smaller
calls but may lead to performance issues with larger groups.
Deployment
----------
Follow the instructions in the `odoo-SFU README
<https://github.com/odoo/sfu/blob/master/README.md>`_.
Connecting to Odoo
------------------
Once your SFU server is running, you need to configure your Odoo server to use it:
1. Go to :menuselection:`Settings --> General Settings --> Discuss`
2. Enter the URL of your SFU server in the :guilabel:`SFU Server URL` field
3. Enter the same AUTH_KEY value in the :guilabel:`SFU Server Key` field
4. Click :guilabel:`Save`

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View File

@@ -0,0 +1,128 @@
===============
Troubleshooting
===============
This guide will help you diagnose and resolve issues with Odoo Discuss calls. Follow the checklist
first, then use the diagnostic tools if needed.
Checklist
=========
Before exploring advanced troubleshooting options, verify these common issues:
- Is the issue related to a **user setting**?
- Has microphone and camera **access** been granted in the browser permissions?
- Are call participants missing from the view? Check if "Show video participants only" is enabled
in the call settings.
- Is the **browser up to date**?
- Check your browser's settings --> "about Chrome" or "about Firefox".
- Are there any network-limiting **browser extensions** installed?
- Is the **Odoo bus** operational?
- There should be a "connection lost" warning in the UI.
- Are you behind a strong **firewall, VPN, or asymmetric NAT**?
- If so, is a **TURN** or **SFU server** available to handle this network situation?
(on the SaaS and odoo.sh, TURN/SFU servers should already be provided).
Gathering diagnostic information
================================
When you encounter problems with Discuss calls, follow these steps to collect important
diagnostic data:
1. Enable **debug mode**
2. Activate RTC logging in the call settings
.. note::
Critical errors are always logged, even without RTC logging enabled. Note that the logging option
is not saved and must be activated after each page reload (to avoid forgetting it and using
memory and resources when not necessary).
Diagnostic information sources
==============================
Source 1: Console command
-------------------------
Enter this code in your browser's console (CTRL+Shift+I):
.. code-block:: javascript
const rtc = odoo.__WOWL_DEBUG__.root.env.services["mail.store"].rtc;
rtc.state.channel?.rtcSessions.map((session) => ({
name: session.name,
id: session.id,
session: { ...session },
consumers: rtc.sfuClient?._consumers.get(session.id),
peer: rtc.p2pService?.peers.get(session.id),
}));
This command provides a list of all sessions in your current call, showing important information for
each participant, such as the state of the Media elements, of the streams, of the connection to each
peer, of the connection to the sfu,...
This is particularly useful for examining participants with connection issues.
.. image:: troubleshooting/command-output.png
:align: center
:alt: Console output showing a list of session data for call participants
Source 2: Context menu
----------------------
Check connection status through the participant options menu:
1. While in a call, hover over a participant's video
2. Click the **context menu** button that appears in the top-right corner
The menu shows connection details for:
- Yourself when connected to the SFU
- Other participants when you have a peer-to-peer connection with them
.. image:: troubleshooting/context-menu-button.png
:align: center
:alt: The context menu button appears when hovering over a participant video
.. image:: troubleshooting/context-menu.png
:align: center
:alt: The context menu shows connection details for the participant
.. warning::
In a peer-to-peer connection, if the ICE connection is stuck at "new", it typically indicates the
absence of TURN servers, which are needed to traverse certain types of NATs and firewalls.
Source 3: Logs
--------------
Detailed logs that contain information on the state of calls and the technical events/errors.
Browser console
~~~~~~~~~~~~~~~
Access through your browser's developer tools:
.. image:: troubleshooting/devtools-console.png
:align: center
:alt: Browser developer tools console showing RTC-related log entries
Downloaded logs
~~~~~~~~~~~~~~~
Obtain logs for the calls that were recorded during the **last 24 hours**.
User information in the logs are **anonymized**.
The amount of information contained in the logs depends on the "log RTC events" settings mentioned
above. If the setting is not activated, the logs will only contain errors.
1. Go to Discuss settings
2. Click the "Download logs" button
.. image:: troubleshooting/rtc-logs.png
:align: center
:alt: RTC logs download button in Discuss settings
.. note::
All tabs log to the same file (which can be downloaded from any other tab)
and are stored for 24h.
You can send these logs in a support ticket or analyze them with the
`RTC Log Viewer <https://thanhdodeurodoo.github.io/rtc-log-viewer/>`_.

Binary file not shown.

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB