feat:增加documnetMessagee、audioMessage消息解析

main
LiaoYijun 7 months ago
parent aa1ef98b8f
commit f5a0a58a19

@ -66,8 +66,12 @@ const getFileExtension = mimeType => {
return '.bmp'; return '.bmp';
case 'image/webp': case 'image/webp':
return '.webp'; return '.webp';
case 'audio/mpeg':
return '.mp3';
case 'audio/ogg; codecs=opus':
return '.opus';
default: default:
return '-unknown'; return '.unknown';
} }
} }

@ -135,6 +135,13 @@ const createWhatsApp = async phone => {
} }
}; };
const saveMediaFile = async (original, fileName) => {
const mediaBuffer = await downloadMediaMessage(
original, 'buffer', {}, { logger, reuploadRequest: waSocket.updateMediaMessage, },
);
await writeFile(fileName, mediaBuffer);
};
const parseTextMessage = original => { const parseTextMessage = original => {
const text = original.message?.conversation; const text = original.message?.conversation;
return { return {
@ -184,11 +191,8 @@ const createWhatsApp = async phone => {
const parseImageMessage = async original => { const parseImageMessage = async original => {
const imageMessage = original.message.imageMessage; const imageMessage = original.message.imageMessage;
const fileExtension = getFileExtension(imageMessage.mimetype); const fileExtension = getFileExtension(imageMessage.mimetype);
const imageBuffer = await downloadMediaMessage(
original, 'buffer', {}, { logger, reuploadRequest: waSocket.updateMediaMessage, },
);
const imageFilename = './temp/image_' + whatsAppNo + '_' + original.key.id + fileExtension; const imageFilename = './temp/image_' + whatsAppNo + '_' + original.key.id + fileExtension;
await writeFile(imageFilename, imageBuffer); await saveMediaFile(original, imageFilename);
return { return {
type: 'image', type: 'image',
@ -202,14 +206,27 @@ const createWhatsApp = async phone => {
}; };
}; };
const parseAudioMessage = async original => {
const audioMessage = original.message.audioMessage;
const fileExtension = getFileExtension(audioMessage.mimetype);
const audioFilename = './temp/audio_' + whatsAppNo + '_' + original.key.id + fileExtension;
await saveMediaFile(original, audioFilename);
return {
type: 'audio',
audio: {
mimetype: audioMessage.mimetype,
sha256: uint8ArrayToBase64(audioMessage.fileSha256),
filePath: audioFilename,
link_original: audioMessage.url,
},
};
};
const parseDocumentMessage = async original => { const parseDocumentMessage = async original => {
const documentMessage = original.message.documentMessage || original.message.documentWithCaptionMessage.message.documentMessage; const documentMessage = original.message.documentMessage || original.message.documentWithCaptionMessage.message.documentMessage;
// Extract to inner function const documentFilename = './temp/file_' + whatsAppNo + '_' + original.key.id + '_' + documentMessage.fileName;
const mediaBuffer = await downloadMediaMessage( await saveMediaFile(original, documentFilename);
original, 'buffer', {}, { logger, reuploadRequest: waSocket.updateMediaMessage, },
);
const documentFilename = './temp/doc_' + whatsAppNo + '_' + original.key.id + '_' + documentMessage.fileName;
await writeFile(documentFilename, mediaBuffer);
return { return {
type: 'document', type: 'document',
@ -257,6 +274,8 @@ const createWhatsApp = async phone => {
if (original.message?.documentMessage || original.message?.documentWithCaptionMessage) return parseDocumentMessage; if (original.message?.documentMessage || original.message?.documentWithCaptionMessage) return parseDocumentMessage;
if (original.message?.audioMessage) return parseAudioMessage;
if (original.message?.templateMessage) return parseTemplateMessage; if (original.message?.templateMessage) return parseTemplateMessage;
return null; return null;

Loading…
Cancel
Save