From 5e7447f1d855cc8a2b382de35e7a07c1164d2657 Mon Sep 17 00:00:00 2001 From: Rodribm10 Date: Sat, 25 Apr 2026 06:27:28 -0300 Subject: [PATCH] fix(wuzapi): troca /chat/send/file por /chat/send/document pra PDF MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wuzapi (asternic) atual usa /chat/send/document pra arquivos. O endpoint /chat/send/file não existe (404), então PDF nunca chegava — propagado como ECONNRESET pelo proxy. Mantém os antigos como fallback. Também trata Errno::ECONNRESET como ConnectionError no http handler pra ativar a cadeia de fallback se voltar a acontecer. Co-Authored-By: Claude Opus 4.7 (1M context) --- app/services/wuzapi/client.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/services/wuzapi/client.rb b/app/services/wuzapi/client.rb index f5c4d6837..7e369f5a1 100644 --- a/app/services/wuzapi/client.rb +++ b/app/services/wuzapi/client.rb @@ -57,12 +57,14 @@ class Wuzapi::Client # rubocop:disable Metrics/ClassLength def send_file(user_token, phone_number, base64_data, filename) payload = { 'Phone' => phone_number, 'Body' => base64_data, 'Filename' => filename } + # Wuzapi usa `/chat/send/document` pra PDFs/arquivos. As versões antigas + # tinham `/chat/send/file` — mantém como fallback pra compat. request( :post, - '/chat/send/file', + '/chat/send/document', payload, user_auth_headers(user_token), - fallback_paths: ['/send/file'], + fallback_paths: ['/send/document', '/chat/send/file', '/send/file'], allow_base_fallback: true ) end @@ -224,7 +226,9 @@ class Wuzapi::Client # rubocop:disable Metrics/ClassLength begin http.request(request_obj) - rescue SocketError, Errno::ECONNREFUSED, Errno::EHOSTUNREACH, Errno::ENETUNREACH, Net::OpenTimeout, Net::ReadTimeout => e + rescue SocketError, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::EHOSTUNREACH, Errno::ENETUNREACH, Net::OpenTimeout, Net::ReadTimeout => e + # ECONNRESET surge quando proxy intermediário corta antes do servidor + # responder — tratar como ConnectionError pra ativar fallback de path/base. raise ConnectionError, "Could not connect to Wuzapi: #{e.message}" end end