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

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

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

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

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

    @אבי-203 למה אתה צריך להעלות לשרת של מישהו אחר אם הקוד שלך כבר רץ על שרת?
    תשמור את הקובץ בתקיה אצלך בשרת, תפתח אנדפוינט לקבלת קובץ מתוך התקיה, ותשלח לינק לקובץ על גבי השרת שלך...

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

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

      @צדיק-תמים זה צפוי להיות בערך 20000 קבצי PDF
      לא מתלהב שישב אצלי בשרת, בשעה שיש לי בו פעילות אחרת חשובה.

      מעדיף שיהיה בשרת יעודי רק לזה.
      פניתי היום לכמה, יש מצב שזה לא דבר שבשגרה? אין שרת שאני יכול להעלות לו ב-API ולקבל במיידי URL?

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

        @אבי-203 ברור שיש, s3/bucket ועוד,
        אבל אם אני מבין נכון green-api עצמם מציעים API ייעודי לזה (הקבצים נמחקים אחרי 15 יום): https://green-api.org.il/en/docs/api/sending/UploadFile

        The method is designed to upload a file to the cloud storage, which can be sent using the sendFileByUrl method. It also allows you to avoid errors in receiving files from external storages and speed up sending messages, for example, in a mailing script.

        כמו כן יש להם מתודה לשליחה ישירות עם הקובץ מצורף בform data:
        https://green-api.org.il/en/docs/api/sending/SendFileByUpload

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

        אבי 203א תגובה 1 תגובה אחרונה
        0
        • אבי 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
                                • דף הבית
                                • קטגוריות
                                • פוסטים אחרונים
                                • משתמשים
                                • חיפוש
                                • חוקי הפורום