diff --git a/index.js b/index.js index 663103e..214eb52 100644 --- a/index.js +++ b/index.js @@ -127,39 +127,49 @@ app.post('/sendInteractiveImage', async (req, res) => { } try { - // 1) Lire l’image en Buffer + // 1) Lire l’image const imagePath = path.join(__dirname, 'public', 'logo-merlo-cs-FR.jpg'); const imageBuffer = fs.readFileSync(imagePath); - // 2) Envoyer un message interactif AVEC MEDIA - await sock.sendMessage( - `${phone}@s.whatsapp.net`, - { - // on passe le Buffer directement (pas d'objet url) - image: imageBuffer, - caption: caption || 'Description par défaut', - title: title || 'Titre par défaut', - subtitle: subtitle || 'Sous-titre', - footer: footer || 'Pied de page', - media: true, // active l’en-tête média - interactiveButtons: [ - { - name: 'cta_url', - buttonParamsJson: JSON.stringify({ - display_text: '📄 Proposition', - url: 'https://merlo-ch.com/uploads/proposition/f_p_250505_0000136_00008_EB00001909.pdf' - }) - }, - { - name: 'cta_url', - buttonParamsJson: JSON.stringify({ - display_text: '🔧 Spécifications', - url: 'https://merlo-ch.com/uploads/proposition/d_p_250505_0000136_00008_EB00001909.pdf' - }) - } - ] - } + // 2) Préparer le média (upload automatique) + const prepared = await prepareWAMessageMedia( + { image: imageBuffer }, + { upload: sock.waUploadToServer } ); + + // 3) Construire le message interactif « button » + const interactiveMsg = { + interactive: { + type: 'button', + header: { + type: 'IMAGE', + image: prepared.image // <-- le buffer uploadé + }, + body: { + text: caption || 'Description par défaut' + }, + footer: { + text: footer || 'Pied de page' + }, + action: { + buttons: [ + { + type: 'url', + title: '📄 Proposition', + url: 'https://merlo-ch.com/uploads/proposition/f_p_250505_0000136_00008_EB00001909.pdf' + }, + { + type: 'url', + title: '🔧 Spécifications', + url: 'https://merlo-ch.com/uploads/proposition/d_p_250505_0000136_00008_EB00001909.pdf' + } + ] + } + } + }; + + // 4) Envoi + await sock.sendMessage(`${phone}@s.whatsapp.net`, interactiveMsg); return res.json({ success: true }); } catch (e) {