Skip to content

Chamadas de voz e vídeo em grupos - #570

Closed
JorisPortugal wants to merge 1 commit into
gabrielhhaber:mainfrom
JorisPortugal:feature/group-calls
Closed

JorisPortugal wants to merge 1 commit into
gabrielhhaber:mainfrom
JorisPortugal:feature/group-calls

Conversation

@JorisPortugal

Copy link
Copy Markdown
Contributor

O que muda

  • Os botões de chamada de voz e de vídeo passam a aparecer na conversa de um grupo e iniciam uma chamada para o grupo pelo mesmo caminho dos botões do WhatsApp Web (startWAWebVoipGroupCallFromChat, com CALL_FROM_UI.GROUP_CHAT_INFO e LOBBY_ENTRY_POINT_TYPE.GROUP_CHAT_INFO).
  • Uma chamada de grupo recebida toca, é anunciada pelo nome do grupo e pode ser atendida pelo mesmo caminho nativo acceptCall das chamadas individuais, com o mesmo botão, atalho global e monitor de áudio.
  • A chamada ativa é registada pelo JID do grupo, nunca pelo do participante que tocou ou falou, para que os eventos de estado de qualquer participante continuem a corresponder à chamada.
  • O vídeo pode ser ligado durante a chamada, como numa chamada individual.
  • A enumeração de câmeras passa a aceitar a listagem do FFmpeg incluído no WinZapp, que não imprime o cabeçalho DirectShow video devices e marca cada dispositivo com (video)/(audio). Sem isso, uma câmera real era reportada como No camera found e o vídeo saía apenas a receber.

API

  • Novo POST /api/:session/call/group/offer, que recebe groupJid e isVideo.
  • O endpoint passado ao _post_call_control é group/offer (sem duplicar o prefixo /call); há um teste de regressão para o 404 que isso causou durante o desenvolvimento.

Testes

  • tests/test_call_video.py e tests/test_call_video_device_settings.py
  • tests/test_call_video_upgrade.py e tests/test_call_hotkeys.py
  • tests/test_call_control_api_patch.py e tests/test_outgoing_call_teardown.py
  • tests/test_incoming_call_alert.py, tests/test_incoming_call_answer_without_video.py e tests/test_sync_voice_call_button.py
  • tests/test_changelogs_in_sync.py

Subconjunto executado após o commit: 163 passed, 4 skipped.

Notas

  • Testado ao vivo: chamada de voz de grupo de entrada e de saída, e ligar o vídeo durante a chamada.
  • Nenhuma string traduzível nova: os rótulos reutilizam chaves existentes.
  • Entradas de changelog adicionadas na secção V3.0.0.0 em todas as 7 línguas.
  • PR aberto como rascunho, como pede o CLAUDE.md; fica assim até à revisão.

Os botões de chamada da conversa de grupo agora iniciam uma chamada de voz
ou de vídeo pelo mesmo caminho dos botões do WhatsApp Web:
startWAWebVoipGroupCallFromChat, com CALL_FROM_UI.GROUP_CHAT_INFO e
LOBBY_ENTRY_POINT_TYPE.GROUP_CHAT_INFO. O patch do servidor expõe
POST /api/:session/call/group/offer; o endpoint passado é "group/offer",
sem duplicar o prefixo /call.

Uma oferta de grupo recebida passa a ser atendível pelo mesmo caminho
nativo acceptCall das chamadas individuais, com o mesmo botão, atalho
global e monitor de áudio. O registro da chamada ativa usa o JID do
grupo, nunca o do participante que tocou ou falou, para que os eventos
de estado de qualquer participante continuem a corresponder à chamada.

A enumeração de câmeras passa a aceitar a listagem do FFmpeg incluído no
WinZapp, que não imprime o cabeçalho "DirectShow video devices" e marca
cada dispositivo com (video)/(audio). Sem isso, uma câmera real era
reportada como "No camera found" e o vídeo saía apenas a receber.

Testes: tests/test_call_control_api_patch.py, test_call_hotkeys.py,
test_call_video.py, test_call_video_device_settings.py,
test_call_video_upgrade.py, test_incoming_call_alert.py,
test_incoming_call_answer_without_video.py, test_outgoing_call_teardown.py
e test_sync_voice_call_button.py.

Copy link
Copy Markdown
Owner

Obrigado, @JorisPortugal! Esta PR tinha conflito com a main (changelogs) e é de fork, então recriei a branch aqui com os seus commits preservados em #571. Fechando esta em favor dela.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants