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 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) => {

View File

@ -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"
}
}