From 39189e2e42b6d1ef88c68a4baa0290447a0798c4 Mon Sep 17 00:00:00 2001 From: Rodrigo Borba Date: Sat, 3 Jan 2026 17:22:07 -0300 Subject: [PATCH] fix(wuzapi): update webhook events and url for automation --- app/services/wuzapi/provisioning_service.rb | 10 ++++++---- lib/wuzapi/client.rb | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/services/wuzapi/provisioning_service.rb b/app/services/wuzapi/provisioning_service.rb index de876a7..e4f50df 100644 --- a/app/services/wuzapi/provisioning_service.rb +++ b/app/services/wuzapi/provisioning_service.rb @@ -9,12 +9,12 @@ module Wuzapi def provision(name) user_token = SecureRandom.hex(32) response = @client.create_user(@admin_token, name, user_token) - + # Wuzapi returns the user object, or we assume success if no error raised. # The response structure depends on Wuzapi. Assuming it returns { "ID": "...", ... } or similar. # Based on plan, we just need to know it succeeded. # We return the generated data to be saved. - + { wuzapi_user_id: response['ID'] || response['id'], # Adjust based on actual response if known, strictly fallback wuzapi_user_token: user_token @@ -25,8 +25,10 @@ module Wuzapi # Host logic needs to come from GlobalConfig or Rails.application.routes # Ideally passed in or resolved. base_host = ENV.fetch('FRONTEND_URL', 'http://localhost:3000') - webhook_url = "#{base_host}/webhooks/wuzapi/#{inbox_id}?secret=#{webhook_secret}" - + inbox = Inbox.find(inbox_id) + phone_number = inbox.channel.phone_number.delete('+') + webhook_url = "#{base_host}/webhooks/whatsapp/#{phone_number}" + @client.set_webhook(user_token, webhook_url) end end diff --git a/lib/wuzapi/client.rb b/lib/wuzapi/client.rb index 93f4480..4f30934 100644 --- a/lib/wuzapi/client.rb +++ b/lib/wuzapi/client.rb @@ -62,7 +62,7 @@ module Wuzapi def set_webhook(user_token, webhook_url) # Wuzapi expects key 'webhook' per documentation. - payload = { 'webhook' => webhook_url, 'events' => ['All'] } + payload = { 'webhook' => webhook_url, 'events' => %w[Message ReadReceipt Presence HistorySync ChatPresence] } request(:post, '/webhook', payload, user_auth_headers(user_token)) end