This commit is contained in:
julien 2025-05-07 10:49:05 +02:00
parent 7be6748f4a
commit 7b97c7321a
2 changed files with 52 additions and 61 deletions

109
index.js
View File

@ -3,6 +3,8 @@ const qrcode = require('qrcode');
const path = require('path'); const path = require('path');
const fs = require('fs'); const fs = require('fs');
const NodeCache = require('node-cache'); const NodeCache = require('node-cache');
const mime = require('mime-types');
const { const {
default: makeWASocket, default: makeWASocket,
useMultiFileAuthState, useMultiFileAuthState,
@ -490,6 +492,8 @@ app.post('/testViewOnce', async (req, res) => {
res.status(500).json({ error: e.message }); res.status(500).json({ error: e.message });
} }
}); });
app.post('/testHeaderImage', async (req, res) => { app.post('/testHeaderImage', async (req, res) => {
const { phone } = req.body; const { phone } = req.body;
@ -500,71 +504,55 @@ app.post('/testHeaderImage', async (req, res) => {
const jid = `${phone}@s.whatsapp.net`; const jid = `${phone}@s.whatsapp.net`;
try { 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: { viewOnceMessage: {
message: { message: {
"messageContextInfo": { messageContextInfo: {
"deviceListMetadata": {}, deviceListMetadata: {},
"deviceListMetadataVersion": 2 deviceListMetadataVersion: 2
}, },
interactiveMessage: proto.Message.InteractiveMessage.create({ interactiveMessage: proto.Message.InteractiveMessage.create({
body: proto.Message.InteractiveMessage.Body.create({ body: proto.Message.InteractiveMessage.Body.create({
text: "Fizzxy Dev" text: "Fizzxy Dev"
}), }),
footer: proto.Message.InteractiveMessage.Footer.create({ footer: proto.Message.InteractiveMessage.Footer.create({
text: "Bot" text: "Bot"
}), }),
header: proto.Message.InteractiveMessage.Header.create({ header: proto.Message.InteractiveMessage.Header.create({
title: "Igna", hasMediaAttachment: true,
subtitle: "test", imageMessage: media.imageMessage,
hasMediaAttachment: false title: "Logo Merlo",
}), subtitle: "Header avec image"
nativeFlowMessage: proto.Message.InteractiveMessage.NativeFlowMessage.create({ }),
buttons: [ 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_url",
}, buttonParamsJson: JSON.stringify({
{ display_text: "Google",
"name": "cta_reply", url: "https://www.google.com",
"buttonParamsJson": "{\"display_text\":\"quick_reply\",\"id\":\"message\"}" merchant_url: "https://www.google.com"
}, })
{ }
"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": ""
}
],
})
}) })
})
} }
} }
}, {}) }, {});
console.log(msg.message); // 4. Envoyer le message
await sock.relayMessage(jid, msg.message, { messageId: msg.key.id }); await sock.relayMessage(jid, msg.message, { messageId: msg.key.id });
res.json({ success: true }); res.json({ success: true });
@ -576,6 +564,7 @@ app.post('/testHeaderImage', async (req, res) => {
// 5) 404 et gestion des erreurs // 5) 404 et gestion des erreurs
app.use((req, res) => res.status(404).json({ error: 'Ressource introuvable' })); app.use((req, res) => res.status(404).json({ error: 'Ressource introuvable' }));
app.use((err, req, res, next) => { app.use((err, req, res, next) => {

View File

@ -13,7 +13,9 @@
"express": "^4.18.4", "express": "^4.18.4",
"qrcode": "^1.5.1", "qrcode": "^1.5.1",
"sharp": "^0.33.0", "sharp": "^0.33.0",
"node-cache": "^5.1.2" "node-cache": "^5.1.2",
"mime-types": "^2.1.35"
} }
} }