דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. שליחת קובץ PDF בוואטסאפ ב-API

שליחת קובץ PDF בוואטסאפ ב-API

מתוזמן נעוץ נעול הועבר תכנות
18 פוסטים 4 כותבים 500 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אבי 203א מנותק
    אבי 203א מנותק
    אבי 203
    השיב לצדיק תמים ב נערך לאחרונה על ידי
    #7

    @צדיק-תמים מעריך את ההשקעה.
    האמת שגם את זה לא הצלחתי כנראה אני מסתבך בפירמוט של זה לפני השליחה.
    בפועל 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));
    }
    
    
    צדיק תמיםצ תגובה 1 תגובה אחרונה
    0
    • צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      השיב לאבי 203 ב נערך לאחרונה על ידי צדיק תמים
      #8

      @אבי-203 לא פירטת מה הבעיה בשליחה, אבל יש שם קטע מיותר של bufferToStream וכן הפרמטר השלישי של form.append הוא אובייקט ולא סטרינג, תנסה ככה:

      form.append('file', pdfBuffer, { filename: 'ticket.pdf' });
      

      לגבי אחסון של הקבצי PDF שכמו שאני מבין אתה רוצה בכל מקרה ומחוץ לשרת, אני חושב שהמקובל זה s3 או google storage. שים לב לא לפתוח בשום אופן את הדלי לכל העולם

      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
      טיפים

      תגובה 1 תגובה אחרונה
      3
      • אבי 203א מנותק
        אבי 203א מנותק
        אבי 203
        כתב ב נערך לאחרונה על ידי
        #9

        אני מנסה להעלות ב s3 אף פעם לא יצא לי לעלות, אשמח לעזרה והדרכה בתשלום.

        תגובה 1 תגובה אחרונה
        0
        • A מנותק
          A מנותק
          aaron
          כתב ב נערך לאחרונה על ידי
          #10

          תפרק את הבעיה לשני חלקים, העלאה של קובץ לשרת שמספק קישור ישיר (של החברה הזאת או כל קישור ישיר אחר)
          ושליחה שלו.
          לדעתי תנסה קודם לוודא שאין לך בעיה בשלב השני, במידה וזה עובד תבדוק מה הקישור שאתה מקבל מהשלב הראשון והאם הוא תקין

          aaron.tchumim@gmail.com
          Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

          ווצאפ API - תיעוד שירות API לא רשמי.

          תגובה 1 תגובה אחרונה
          1
          • אבי 203א מנותק
            אבי 203א מנותק
            אבי 203
            כתב ב נערך לאחרונה על ידי אבי 203
            #11

            השלב השני עובד לי. כאשר יש לי לינק של קובץ זה נשלח נהדר.
            אני לא מוצא ידי ורגלי בהגדרות של S3. יש לי מדריך לקח לי זמן להבין שהוא של תצוגה ישנה... עברתי לתצוגה הישנה, וכנראה חסרים לי הגדרות.

            ח תגובה 1 תגובה אחרונה
            0
            • ח מנותק
              ח מנותק
              חוקר
              השיב לאבי 203 ב נערך לאחרונה על ידי
              #12

              @אבי-203 כתב בשליחת קובץ PDF בוואטסאפ ב-API:

              השלב השני עובד לי. כאשר יש לי לינק של קובץ זה נשלח נהדר.

              האם אתה חייב לאחסן את הקבצים שנשלחו?
              א"כ מה הבעיה שלך שבסיום השליחה אתה מוחק מיד את הקובץ, וא"כ תעשה זאת על השרת שלך

              אבי 203א תגובה 1 תגובה אחרונה
              1
              • אבי 203א מנותק
                אבי 203א מנותק
                אבי 203
                כתב ב נערך לאחרונה על ידי
                #13

                אם אני לא טועה, אם אני אמחק את הקבוץ והמשתמש לא הוריד את הקובץ מהואטסאפ אז זה כבר לא יהיה ניתן להורדה.

                ח תגובה 1 תגובה אחרונה
                0
                • ח מנותק
                  ח מנותק
                  חוקר
                  השיב לאבי 203 ב נערך לאחרונה על ידי
                  #14

                  @אבי-203 כתב בשליחת קובץ PDF בוואטסאפ ב-API:

                  אם אני לא טועה, אם אני אמחק את הקבוץ והמשתמש לא הוריד את הקובץ מהואטסאפ אז זה כבר לא יהיה ניתן להורדה.

                  א. תנסה..
                  ב. למיטב ידיעתי בכל מקרה של שליחה קובץ בוואטסאפ זה מועלה לשרתי וואצאפ וזמין להורדה למשתמש כשבועיים או חודש.
                  כמו בשליחה במכשיר גם את תשלח ותמחק מהמכשיר שלך עדיין המקבל יוכל להוריד את הקובץ

                  תגובה 1 תגובה אחרונה
                  1
                  • אבי 203א מנותק
                    אבי 203א מנותק
                    אבי 203
                    כתב ב נערך לאחרונה על ידי
                    #15
                    פוסט זה נמחק!
                    תגובה 1 תגובה אחרונה
                    0
                    • אבי 203א מנותק
                      אבי 203א מנותק
                      אבי 203
                      השיב לחוקר ב נערך לאחרונה על ידי
                      #16

                      @חוקר תודה גדולה עשיתי כך! זה עולה לשרת, מקבל URL, נשלח ואטסאפ, ונמחק מהשרת. ועדין זמין להורדה בואטסאפ למרות שטרם הורד.
                      מקווה שזה אכן נשאר להרבה זמן.

                      ח תגובה 1 תגובה אחרונה
                      1
                      • ח מנותק
                        ח מנותק
                        חוקר
                        השיב לאבי 203 ב נערך לאחרונה על ידי
                        #17

                        @אבי-203 כתב בשליחת קובץ PDF בוואטסאפ ב-API:

                        מקווה שזה אכן נשאר להרבה זמן.

                        למיטב ידיעתי זה לא משנה כלום מה שמחקת בשרת.
                        מתי הקמפיין? כמה זמן יש לך לוודא שזה זמין?
                        מה שכן, כך בחשבון שייתכן שמישהו ייזכר בדוחות של שנת המס עוד שנה שהוא צריך שליחה חוזרת של הקובץ, מה תעשה אז? השאלה אם מדובר בקבלות לצרכי מס.

                        תגובה 1 תגובה אחרונה
                        1
                        • אבי 203א מנותק
                          אבי 203א מנותק
                          אבי 203
                          כתב ב נערך לאחרונה על ידי
                          #18

                          לא כרטיסים לאירוע.עוד חודשיים בערך.

                          תגובה 1 תגובה אחרונה
                          1

                          בא תתחבר לדף היומי!
                          • התחברות

                          • אין לך חשבון עדיין? הרשמה

                          • התחברו או הירשמו כדי לחפש.
                          • פוסט ראשון
                            פוסט אחרון
                          0
                          • דף הבית
                          • קטגוריות
                          • פוסטים אחרונים
                          • משתמשים
                          • חיפוש
                          • חוקי הפורום