אני משתמש בשירות
https://green-api.org.il/en/docs/api/sending/SendFileByUrl/
לשליחת ואטסאפ בAPI אני רוצה לשלוח קובץ PDF שאני יוצר בשרת, URL קובץ נשלח לי טוב, אבל כאשר אני יוצר את הקובץ לא נשלח הבנתי שצריך להעלות לשרת זמני, יש משהו שהם מציעים ביצעתי משהו, אבל זה נכשל לי, כנראה אני שולח בפורמט הלא נכון.
זה בערך הקוד שלי, אשמח לעזרה.
תודה רבה.
export async function createTicket(cardItems) {
const rubik = await
fetch('https://fonts.gstatic.com/s/rubik/v14/iJWZBXyIfDnIV5PNhY1KTN7Z-Yh-B4i1Uw.woff').then(res
=> res.buffer());
// const barcode128 = await
fetch('https://fonts.gstatic.com/s/librebarcode128/v16/cIfnMbdUsUoiW3O_hVviCwVjuLtXeJ_D.woff').then(res
=> res.buffer());
const doc = new PDFDocument({ autoFirstPage: false });
for (const cardItem of cardItems) {
// barcode128
await writeTicket(doc, cardItem, { rubik, });
}
doc.end();
return doc
}
let pdfStream = await createTicket(cardItems)
sendPdfWhatsApp(pdfStream, '0500000000')
const FormData = require('form-data');
const fs = require('fs');
const { Readable } = require('stream');
const ID_INSTANCE = "71XXXXXXXXXX";
const API_TOKEN_INSTANCE =
"cab7d122fff64a~~~~~~~~~04c80b5";
async function uploadPdfAndSendWhatsApp(pdfStream, phoneNumber) {
try {
// שלב 1: העלאת הקובץ ל-Green-API
const form = new FormData();
form.append('file', pdfStream, 'ticket.pdf'); // הוספת ה-PDF לטופס
const uploadResponse = await
axios.post(`https://media.green-api.com/waInstance${ID_INSTANCE}/uploadFile/${API_TOKEN_INSTANCE}`,
form, {
headers: {
...form.getHeaders(),
},
});
const urlFile = uploadResponse.data.urlFile;
console.log(12121212,urlFile);
// שלב 2: שליחת ה-URL בוואטסאפ
const sendResponse = await
axios.post(`https://api.green-api.com/waInstance${ID_INSTANCE}/sendFileByUrl/${API_TOKEN_INSTANCE}`,
{
chatId: `${phoneNumber}@c.us`,
urlFile: urlFile,
fileName: 'ticket.pdf',
}, {
headers: {
'Content-Type': 'application/json'
},
});
console.log(sendResponse.data);
return sendResponse.data;
} catch (error) {
console.error(error);
throw error;
}
}
// יצירת Readable Stream מתוך ה-PDF
function bufferToStream(buffer) {
const stream = new Readable();
stream.push(buffer);
stream.push(null); // אינדיקציה על סוף הזרם
return stream;
}
// המרה של ה-PDF ל-Stream ושליחה
async function sendPdfWhatsApp(pdfBuffer, phoneNumber) {
const pdfStream = bufferToStream(pdfBuffer);
await uploadPdfAndSendWhatsApp(pdfStream, phoneNumber);
}