@צדיק-תמים מעריך את ההשקעה.
האמת שגם את זה לא הצלחתי כנראה אני מסתבך בפירמוט של זה לפני השליחה.
בפועל 15 יום זה באמת לא מספיק לי, אני צריך חודשיים בערך.
זה כמעט כל הקוד שלי, אני מרגיש שאיפה שהוא בפורמט הקובץ בהעלאה אני מקשקש בלי הבנה.
import wixData from 'wix-data';
export async function sendwatssap() {
let torem = {
"smsnumber": 0,
"semmale": "XXXXXXX",
"hir": "בני ברק",
"ctovet2": "XXXXXXXX",
"sem": "XXXXX",
"mail": "XXXXXX",
"phon": "XXXXXXXX",
"status": true,
"ctovet1": "הXXXXX 11",
"wat": "XXX",
"mishpaha": "XXX",
"ctovet": "XXXX 11",
},
cardsid= "a35c0f81-a4a5-4aa4-8a3b-42561d8e023d";
const results5 = await wixData.query("card").eq("torem", cardsid).limit(500).find({ suppressAuth: true })
const tozaot = results5.items;
let ards = []
await tozaot.forEach((item2) => {
let card = {
"imeg": item2.imeg,
"name": item2.sem,
"address": torem.ctovet2,
"phone": item2.phone,
"_id": item2._id,
"number": item2.ms,
"number2": item2.ms,
"sug": item2.sug,
}
ards.push(card)
})
const ticketsArray = ards
const emailAddress = torem.mail
const id = cardsid
const doc = await createTicket(ticketsArray)
const buffers = [];
doc.on('data', buffers.push.bind(buffers));
doc.on('end', () => {
const pdfData = Buffer.concat(buffers);
sendPdfWhatsApp(pdfData, '05XXXXXXX');
});
}
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
}
const FormData = require('form-data');
const fs = require('fs');
const { Readable } = require('stream');
const ID_INSTANCE = "7XXXXXXX8";
const API_TOKEN_INSTANCE = "cabXXXXXXXXXXXXXXXb5";
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(),
},
});
await sleep(6000);
console.log(666666666666666666666,uploadResponse);
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) {
try {
const pdfStream = bufferToStream(pdfBuffer);
await uploadPdfAndSendWhatsApp(pdfStream, phoneNumber);
} catch (error) {
console.error(error);
throw error;
}
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}