bitter-gold-53424
03/03/2026, 3:10 AMtall-airline-16756
03/03/2026, 3:10 AMtall-airline-16756
03/03/2026, 3:10 AMparticipant_connected / participant_disconnected, track_published / track_subscribed, room_metadata_changed, data_received, and other room‑level events exposed by the Room object’s event emitter.
• Event delivery depends on the participant being connected to the room (active network connection) and having the appropriate token grants (for example, subscribe/publish permissions to interact with tracks and receive related events).
• If the participant is an agent or automated participant, it can also listen for events using the job/context mechanism once it enters the room.
If you want, tell me:
• Which SDK you’re using (JS, iOS, Android, server SDK), and
• Whether the participant is a regular user or an automated agent,
and I’ll give exact code snippets or token permission guidance for that SDK.
Sources: Handling asynchronous metadata updates in LiveKit | LiveKit | server-sdk-ruby | livekit/livekit_composite | DeepWiki | Job lifecycle | LiveKit Documentation | server-sdk-kotlin | livekit/livekit_composite | DeepWiki | client-sdk-js | livekit/livekit_composite | DeepWikibitter-gold-53424
03/03/2026, 3:11 AMtall-airline-16756
03/03/2026, 3:12 AMtall-airline-16756
03/03/2026, 3:12 AMbitter-gold-53424
03/03/2026, 3:13 AMtall-airline-16756
03/03/2026, 3:13 AMbitter-gold-53424
03/03/2026, 3:15 AMForwardParticipant API. Forwarding allows you to share a participant's tracks with other rooms. For example, if you have a single ingress feed that you want simultaneously share to multiple rooms.
A forwarded participant's tracks are shared to destination rooms until the participant leaves the room or is removed from a destination room using RemoveParticipant.tall-airline-16756
03/03/2026, 3:16 AMRemoveParticipant dans une salle de destination.
Important : ceci est différent d’un transfert SIP (par ex. TransferSIPParticipant) qui déplace effectivement l’appelant — dans ce cas le participant quitte la salle et est connecté ailleurs (pas de présence simultanée).
Si vous voulez, je peux :
• Montrer un exemple d’appel API ForwardParticipant et comment les tracks apparaissent dans la room de destination (dites quel SDK ou langage vous utilisez), ou
• Proposer un flux pour répliquer l’état d’un participant (rôles, mute, metadata) dans les salles cibles si vous avez besoin que l’état soit cohérent dans chaque room.
Laquelle préférez-vous ?
Sources: How to set a fixed participant for agent audio processing | Company directory phone assistant | LiveKit Documentationbitter-gold-53424
03/03/2026, 3:17 AMtall-airline-16756
03/03/2026, 3:17 AMparticipant_connected, room_metadata_changed émis par la room de destination).
• Le participant forwardé conserve ses propres événements côté source (événements émis dans la room source).
• Si vous avez besoin que le participant « voie » ou réagisse aux événements d’une room de destination, il faut soit :
◦ connecter réellement le client dans la room de destination (rejoindre la room), soit
◦ implémenter un mécanisme serveur qui relaie les événements pertinents de la room de destination vers le participant (par ex. via une API ou un canal de data custom), soit
◦ créer un agent/bot présent dans la destination qui écoute les événements et exécute des actions ou envoie des messages au participant dans la source.
Si vous voulez, je peux :
• Montrer un schéma avec l’une de ces options (rejoin vs relais serveur vs agent) ; ou
• Proposer un exemple d’implémentation pour relayer des événements (quelle stack/SDK utilisez‑vous ?).
Laquelle préférez‑vous ?bitter-gold-53424
03/03/2026, 3:18 AMtall-airline-16756
03/03/2026, 3:18 AMbitter-gold-53424
03/03/2026, 3:43 AMtall-airline-16756
03/03/2026, 3:43 AMForwardParticipant. Le forward partage uniquement les pistes du participant vers d’autres rooms côté serveur ; le client qui publie les tracks reste connecté à la room source et ne reçoit pas nativement un événement “vous avez été forwardé” depuis LiveKit Cloud.
Options pour détecter ou informer le client qu’il a été forwardé
• Envoyer une notification côté application / serveur :
◦ Au moment où vous appelez ForwardParticipant, votre serveur peut aussi envoyer un message (via votre propre signaling, websocket, HTTP push, ou canal data) au client pour l’informer.
• Relais via un data channel côté LiveKit :
◦ Créez un data channel ou utilisez les messages data de LiveKit depuis la room source pour informer le participant que ses tracks sont partagées vers X rooms.
• Stocker/consulter un état serveur :
◦ Maintenez l’état de forwarding dans votre backend (par ex. quelles rooms reçoivent les tracks) et exposez une API que le client peut interroger pour vérifier s’il est forwardé.
• Agent/bot côté destination :
◦ Si besoin d’un flux inverse (par ex. confirmer réception côté destination), un bot présent dans la room de destination peut envoyer un accusé au serveur qui le relaie ensuite au client source.
• Recréation d’un événement personnalisé dans la room source :
◦ Après le forward, publiez un room_metadata ou un message data dans la room source indiquant le forwarding — tous les clients de la room qui écoutent verront cette mise à jour.
Recommandation pratique
• La méthode la plus simple et fiable est d’envoyer une notification directe depuis votre serveur au client au moment où vous effectuez l’appel ForwardParticipant. Cela garantit que le client est informé en temps réel sans dépendre d’événements internes à LiveKit.
Si vous voulez, je peux :
• Fournir un exemple d’implémentation pour votre stack (par ex. JS client + node server) montrant comment notifier le client au moment du forward, ou
• Proposer un pattern complet (backend state + notifications + audit) si vous avez besoin de suivre et d’afficher l’état de forwarding pour plusieurs participants.
Laquelle préférez‑vous ?