Pular para o conteúdo
Decoding Chat API

Voz

O Decoding Chat opera sua camada de voz sobre o LiveKit. O Gateway principal aloca a sessão em um canal de voz e entrega uma credencial de acesso. O cliente apresenta essa credencial ao servidor de mídia, e todas as faixas (tracks) de áudio e vídeo trafegam através da conexão aberta diretamente lá. Microfone, câmera e compartilhamento de tela são fontes de faixas na mesma conexão; portanto, iniciar uma transmissão ao vivo (Go Live) não abre novas conexões adicionais.

Consulte Comandos do cliente e Eventos do Gateway para o protocolo de alocação.

SuperfícieO que éReferência
Canal de voz de servidorCanal do tipo 2, com suporte a mensagens, pins e modo lentoCanais
Chamada privadaO equivalente a um canal de voz para mensagens diretas (DM) e DMs em grupoChamadas
Transmissão Go Live1Compartilhamento de tela publicado como faixa extra na conexão de voz existenteTransmissões
Som de entrada2Um clipe curto anunciado aos participantes já conectados ao canal de vozSons de entrada
Compartilhamento de atividade de vozDefine se amigos podem visualizar em qual canal de voz você estáConfigurações do usuário

1 Transmitir tela não abre uma segunda conexão e não gera nova credencial

2 A única superfície de voz que não transmite faixas contínuas de mídia

A mídia de áudio e vídeo nunca passa pela API HTTP. Nenhuma rota HTTP retorna faixas de áudio/vídeo, credenciais de conexão de mídia ou chaves criptográficas de ponta a ponta.

O Decoding Chat roda a mídia sobre LiveKit e não publica protocolo de sinalização próprio de baixo nível. O cliente conecta no endpoint indicado no evento Voice Server Update, apresenta o token de concessão recebido e comunica-se utilizando o protocolo LiveKit a partir de então.

ConceitoValor
Nome da sala, canal de voz de servidorguild_{guild_id}_channel_{channel_id}
Nome da sala, chamada privadadm_channel_{channel_id}
Identidade do participanteuser_{user_id}_{connection_id}

A concessão (grant) tem validade de 600 segundos.

Cada sala representa um canal de voz, e cada participante representa uma conexão de voz. Um membro conectado por múltiplos dispositivos possui múltiplos participantes na mesma sala.

A concessão define também quais fontes a conexão pode publicar: a permissão SPEAK autoriza a faixa de microfone, e STREAM autoriza tanto a câmera quanto o compartilhamento de tela. Conexões ensurdecidas pelo servidor não podem publicar nem receber áudio.

Uma implantação pode operar sem o serviço de voz habilitado. O documento de descoberta informa isso em features.voice_enabled.

Quando features.voice_enabled for falso, o Decoding Chat não emite credenciais de mídia e requisições de alocação de voz são recusadas com VOICE_TOKEN_FAILED.

O comando Voice State Update declara onde a sessão deseja se posicionar, informando guild_id, channel_id, connection_id, além de self_mute, self_deaf, self_video e self_stream. channel_id: null desconecta, e chamadas diretas usam guild_id: null.

Formato do comandoResultado
channel_id sem connection_idAbre uma nova conexão
channel_id com connection_idAtualiza ou move a conexão informada
channel_id: null com connection_id (em servidor)Desconecta aquela conexão
channel_id: null sem connection_id (em servidor)Recusado com VOICE_MISSING_CONNECTION_ID
channel_id: null sem connection_id (em chamada direta)Desconecta todas as participações de voz da sessão

O servidor responde com Voice State Update para todas as sessões que podem visualizar o canal e Voice Server Update exclusivamente para a sessão solicitante.

Canais de voz em servidores armazenam bitrate, user_limit, voice_connection_limit e rtc_region no objeto de canal.

Canais novos iniciam com bitrate: 64000 (limite padrão 96000, expansível até 384000 via recursos de servidor). Chamadas diretas rodam sempre a 64000.

PermissãoEfeito na voz
VIEW_CHANNEL e CONNECTAmbas são obrigatórias para conectar ao canal de voz
SPEAKPublicar áudio de microfone
STREAMPublicar vídeo de câmera e transmissões de tela
MUTE_MEMBERSMutar participantes como moderador
DEAFEN_MEMBERSEnsurdecer participantes como moderador
MOVE_MEMBERSMover participantes para outros canais ou desconectá-los
UPDATE_RTC_REGIONAlterar a região RTC do canal

A permissão ADMINISTRATOR concede todas as permissões acima.

Moderação de voz (mutar, ensurdecer, mover ou desconectar membros) é uma operação realizada via API HTTP através de Modificar membro do servidor.

LimiteRecusa
user_limitVOICE_CHANNEL_FULL
voice_connection_limitVOICE_CONNECTION_LIMIT_REACHED
25 membros com câmera ligadaVOICE_CAMERA_USER_LIMIT

Membros temporariamente silenciados (communication_disabled_until no futuro) recebem VOICE_MEMBER_TIMED_OUT. Contas não reivindicadas recebem VOICE_UNCLAIMED_ACCOUNT em chamadas 1:1 e canais de servidores de terceiros.

O compartilhamento de tela publica faixas de vídeo e áudio do sistema diretamente na conexão LiveKit já existente do participante. O publicador ativa a transmissão definindo self_stream: true via Voice State Update.

A chave da transmissão (stream key) possui o formato {guild_id}:{channel_id}:{connection_id} em servidores e dm:{channel_id}:{connection_id} em chamadas privadas.

Um som de entrada é um clipe curto executado para os participantes conectados ao canal de voz quando um usuário entra. Cada usuário pode manter até 8 clipes pessoais (100 a 5.200 ms, formatos mp3, ogg, m4a ou wav).

Ao tocar, o Decoding Chat emite o evento ENTRANCE_SOUND_PLAY contendo a URL do clipe na CDN, e cada cliente o reproduz localmente.