Você é um engenheiro backend sênior. Implemente suporte a **URL dinâmica em botão de template WhatsApp via Infobip**. --- # 🎯 OBJETIVO Permitir que templates com botão de URL no formato: https://onsms.com/r/{{1}} recebam dinamicamente o valor final do link no envio da mensagem. --- # ⚠️ REGRA IMPORTANTE * O domínio/base da URL é FIXO no template * Apenas o valor final ({{1}}) pode ser dinâmico * Esse valor deve ser enviado no botão via API Infobip --- # 🧩 ENTRADA (WEBHOOK HUBSPOT) O webhook pode receber: ```json { "portalId": "123456", "onsms_template": "tpl_123", "phone": "+558399999999", "var_1": "João", "btn_url": "abc123" } ``` --- # 🧠 IMPLEMENTAÇÃO ## 1. CAPTURAR PARÂMETRO DO BOTÃO No handler do webhook: ```js const buttonParam = req.body.btn_url ``` --- ## 2. VALIDAR ```js if (!buttonParam) { throw new Error("Missing btn_url parameter") } ``` --- ## 3. ENVIAR PARA INFOBIP Atualizar envio: ```js async function sendViaProvider({ from, to, templateId, params, buttonParam }) { return axios.post( "https://xxxxx.api.infobip.com/whatsapp/1/message/template", { messages: [ { from, to, content: { templateName: templateId, templateData: { body: { placeholders: params }, buttons: [ { type: "URL", parameter: buttonParam } ] } } } ] }, { headers: { Authorization: "App YOUR_API_KEY", "Content-Type": "application/json" } } ) } ``` --- ## 4. INTEGRAR NO WEBHOOK ```js await sendViaProvider({ from: sender.number, to: phone, templateId: template.providerTemplateId, params, buttonParam }) ``` --- # 🚀 RESULTADO ESPERADO Se o template for: https://onsms.com/r/{{1}} E o envio: ```json "btn_url": "abc123" ``` O usuário receberá: https://onsms.com/r/abc123 --- # ⚠️ REGRAS IMPORTANTES * Nunca permitir URL completa no btn_url * Apenas IDs/tokens (ex: abc123) * O backend deve controlar o redirecionamento * Não alterar o template após aprovação --- # 💡 BOA PRÁTICA Padronizar sempre: https://onsms.com/r/{{1}}