forked from clairton/unoapi-cloud
-
Notifications
You must be signed in to change notification settings - Fork 3
voip offer investigation handoff
wiki-bot edited this page Mar 30, 2026
·
1 revision
Investigação pausada em 2026-03-29.
Objetivo:
- fazer o
unoapi-voipaceitarofferde chamada recebida vindo da Uno/Baileys
Situação real:
- eventos de chamada (
incoming_call,call_ended, etc.) funcionam - vários tipos de signaling menores também cruzam
- o
offerchega aounoapi-voip - o wasm entra em
handleIncomingSignalingOffer(...) - mas falha no parse com
status=70004
Sem resultado promissor final até aqui.
O erro atual não está mais em:
raw e2eparticipant keyspeer metadataencoptmetadatarelay- attrs óbvios como
joinable,caller_pn,caller_country_code
O que ficou provado em runtime:
- para variantes estruturalmente boas, os logs internos do wasm mostram:
handleIncomingSignalingOffer from platform 2 version 2.26.10.74handle_incoming_xmpp_offer failed to parse offer, status=70004wa_call_handle_incoming_xmpp_offer() status 70004
E não aparecem:
process_offer: No raw e2e in offerFailed to get peer metadata from offerUnsupported keygen ver %d
Conclusão:
- o gargalo atual está antes de
process_offer - o boundary crítico é:
handle_incoming_xmpp_offerparse_xmpp_offerconvert_xmpp_msg_to_offer_msg
Uno:
VoIP service:
Baileys fork:
Mapa do wasm e da stack:
Esse arquivo é a referência principal para retomar.
Em client_baileys / client_voip:
- logging da árvore real do
offer - logging de framing e payload strategy
- envio de múltiplas variantes de
offerviapayloadBase64/campos extras
Em w3nder_adapter:
- variantes experimentais de
offer offer payload selection diagnosticsoffer payload variant resultoffer payload attempt summary-
recentWasmLogspor variante
raw_call_root_wapraw_call_offer_root_minimal_wapraw_call_offer_root_enriched_wapraw_call_offer_root_pruned_wapraw_call_root_wap_root_list_08raw_call_root_wap_strip_leading_null
raw_decrypted_call_frameraw_offer_child_wapraw_offer_child_wap_strip_list_wrapperraw_offer_wap_no_prefixraw_decrypted_strip_first_byteraw_decrypted_inflate_after_first_byteraw_call_offer_enc_wapraw_offer_enc
raw_call_offer_root_no_encopt_wapraw_call_offer_root_no_metadata_wapraw_call_offer_root_no_encopt_no_metadata_wapraw_call_offer_root_no_relay_wapraw_call_offer_root_no_net_wapraw_call_offer_root_no_rte_wapraw_call_offer_root_core_relay_wap
raw_call_offer_root_caller_metadata_wapraw_call_offer_root_creator_device_wapraw_call_offer_root_caller_metadata_creator_device_wap
raw_call_offer_root_no_joinable_wapraw_call_offer_root_no_caller_pn_wapraw_call_offer_root_no_country_code_wapraw_call_offer_root_minimal_attrs_wap
Resultado:
- variantes “boas” passam do reader, mas morrem igual em
70004 - variantes ruins mostram
WAWapReader invalid list size - nenhuma abriu
callInfo
Exemplo típico visto na Uno:
-
rootAttrs:fromversionplatformidnotifyet
-
offerAttrs:call-idcall-creatorcaller_pnjoinablecaller_country_code
-
offerChildTags:audioaudiocapabilityencencoptmetadatanetrteuploadfieldstatvoip_settingsrelay
Strings/anchors importantes encontradas no whatsapp.wasm:
wa_call_handle_incoming_xmpp_offerhandle_incoming_xmpp_offerparse_xmpp_offerconvert_xmpp_msg_to_offer_msgrequired attribute 'enc' or 'dec' missing for offerhandle_incoming_xmpp_offer: invalid message headerprocess_offer: No raw e2e in offerFailed to get peer metadata from offercopy_call_id_and_creator_jid_to_ctxgenerate_raw_e2e_keyscall_update_participant_keysUnsupported keygen ver %dcaller_metadataHandle MESSAGE Offer call_id: %s (joinable: %s, has_video: %d, peer_platform: %d) with relay information (num_relays %d, transaction_id %d)
Leitura correta hoje:
- o parser não está aceitando o
offerreconstruído - a falha acontece antes das etapas de
process_offer
Durante os patches diretos na VPS, alguns erros de runtime apareceram e foram corrigidos:
ReferenceError: rawCallRootWapBytes is not definedReferenceError: enrichedRootAttrs is not definedReferenceError: rawCallOfferRootEnrichedWap is not definedReferenceError: recentWasmLogs is not definedReferenceError: rawCallOfferRootNoJoinableWapBytes is not defined
Ou seja:
- há bastante patch cirúrgico no runtime
- antes de retomar forte, vale limpar e sincronizar source/dist com calma
Host:
root@192.168.0.50
Containers:
unoapiunoapi-voip
Observação:
- houve vários patches diretos nos arquivos
distdentro da VPS - isso ajudou a investigar rápido, mas aumentou a fragilidade do estado atual
Evitar perder tempo repetindo:
- mutações pequenas de framing do root
- variantes removendo um filho opcional de cada vez sem nova evidência
- foco em
raw e2eenquanto o parser ainda falha antes - foco em
participant keysenquantoparse_xmpp_offerainda não passa
Se retomar depois, o caminho mais forte é:
- capturar um
offerreal aceito na borda exata do wasm de um cliente web real - comparar esse payload aceito com o payload que a Uno está entregando
Se isso não for possível, então:
- continuar RE no boundary:
handle_incoming_xmpp_offerparse_xmpp_offerconvert_xmpp_msg_to_offer_msg
- de preferência com ferramenta mais pesada sobre o binário
O que foi conseguido:
- delimitamos muito bem onde o
offerquebra - eliminamos um monte de hipóteses erradas
- construímos um mapa útil da stack e do wasm
O que não foi conseguido:
- fazer o wasm aceitar o
offer - encontrar ainda a representação binária exata que o parser espera