diff --git a/index.js b/index.js index 2867091..fc6b947 100644 --- a/index.js +++ b/index.js @@ -3,6 +3,8 @@ const qrcode = require('qrcode'); const path = require('path'); const fs = require('fs'); const NodeCache = require('node-cache'); +const mime = require('mime-types'); + const { default: makeWASocket, useMultiFileAuthState, @@ -490,6 +492,8 @@ app.post('/testViewOnce', async (req, res) => { res.status(500).json({ error: e.message }); } }); + + app.post('/testHeaderImage', async (req, res) => { const { phone } = req.body; @@ -500,71 +504,55 @@ app.post('/testHeaderImage', async (req, res) => { const jid = `${phone}@s.whatsapp.net`; try { - let msg = generateWAMessageFromContent(jid, { + // 1. Charger l'image locale + const imagePath = path.join(__dirname, 'public/logo-merlo-cs-FR.jpg'); + const imageBuffer = fs.readFileSync(imagePath); + + // 2. Préparer le média (image) + const media = await sock.prepareMessageMedia( + { image: imageBuffer }, + { upload: sock.waUploadToServer } + ); + + // 3. Créer le message interactif avec image dans le header + const msg = generateWAMessageFromContent(jid, { viewOnceMessage: { message: { - "messageContextInfo": { - "deviceListMetadata": {}, - "deviceListMetadataVersion": 2 - }, - interactiveMessage: proto.Message.InteractiveMessage.create({ - body: proto.Message.InteractiveMessage.Body.create({ - text: "Fizzxy Dev" - }), - footer: proto.Message.InteractiveMessage.Footer.create({ - text: "Bot" - }), - header: proto.Message.InteractiveMessage.Header.create({ - title: "Igna", - subtitle: "test", - hasMediaAttachment: false - }), - nativeFlowMessage: proto.Message.InteractiveMessage.NativeFlowMessage.create({ - buttons: [ - { - "name": "single_select", - "buttonParamsJson": "{\"title\":\"title\",\"sections\":[{\".menu\":\".play dj webito\",\"highlight_label\":\"label\",\"rows\":[{\"header\":\"header\",\"title\":\"title\",\"description\":\"description\",\"id\":\"id\"},{\"header\":\"header\",\"title\":\"title\",\"description\":\"description\",\"id\":\"id\"}]}]}" - }, - { - "name": "cta_reply", - "buttonParamsJson": "{\"display_text\":\"quick_reply\",\"id\":\"message\"}" - }, - { - "name": "cta_url", - "buttonParamsJson": "{\"display_text\":\"url\",\"url\":\"https://www.google.com\",\"merchant_url\":\"https://www.google.com\"}" - }, - { - "name": "cta_call", - "buttonParamsJson": "{\"display_text\":\"call\",\"id\":\"message\"}" - }, - { - "name": "cta_copy", - "buttonParamsJson": "{\"display_text\":\"copy\",\"id\":\"123456789\",\"copy_code\":\"message\"}" - }, - { - "name": "cta_reminder", - "buttonParamsJson": "{\"display_text\":\"Recordatorio\",\"id\":\"message\"}" - }, - { - "name": "cta_cancel_reminder", - "buttonParamsJson": "{\"display_text\":\"cta_cancel_reminder\",\"id\":\"message\"}" - }, - { - "name": "address_message", - "buttonParamsJson": "{\"display_text\":\"address_message\",\"id\":\"message\"}" - }, - { - "name": "send_location", - "buttonParamsJson": "" - } - ], - }) + messageContextInfo: { + deviceListMetadata: {}, + deviceListMetadataVersion: 2 + }, + interactiveMessage: proto.Message.InteractiveMessage.create({ + body: proto.Message.InteractiveMessage.Body.create({ + text: "Fizzxy Dev" + }), + footer: proto.Message.InteractiveMessage.Footer.create({ + text: "Bot" + }), + header: proto.Message.InteractiveMessage.Header.create({ + hasMediaAttachment: true, + imageMessage: media.imageMessage, + title: "Logo Merlo", + subtitle: "Header avec image" + }), + nativeFlowMessage: proto.Message.InteractiveMessage.NativeFlowMessage.create({ + buttons: [ + { + name: "cta_url", + buttonParamsJson: JSON.stringify({ + display_text: "Google", + url: "https://www.google.com", + merchant_url: "https://www.google.com" + }) + } + ] }) + }) } } - }, {}) - - console.log(msg.message); + }, {}); + + // 4. Envoyer le message await sock.relayMessage(jid, msg.message, { messageId: msg.key.id }); res.json({ success: true }); @@ -576,6 +564,7 @@ app.post('/testHeaderImage', async (req, res) => { + // 5) 404 et gestion des erreurs app.use((req, res) => res.status(404).json({ error: 'Ressource introuvable' })); app.use((err, req, res, next) => { diff --git a/package.json b/package.json index e9d8771..8afd9ad 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "express": "^4.18.4", "qrcode": "^1.5.1", "sharp": "^0.33.0", - "node-cache": "^5.1.2" + "node-cache": "^5.1.2", + "mime-types": "^2.1.35" + } }