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

    חיפוש קובץ במערכת

    פורום מפתחים API
    9
    55
    1007
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • L
      Liy נערך לאחרונה על ידי

      @שמואל אמר בAPI - גישת מפתחים למערכות:

      בדיקה האם קובץ קיים

      יש אפשרות לחפש קובץ בכל המערכת?

      @eliyahu

      M E ש 3 תגובות תגובה אחרונה תגובה ציטוט 0
      • M
        MGM IVR @Liy נערך לאחרונה על ידי

        @Liy אמר בחיפוש קובץ במערכת:

        @שמואל אמר בAPI - גישת מפתחים למערכות:

        בדיקה האם קובץ קיים

        יש אפשרות לחפש קובץ בכל המערכת?

        @eliyahu

        תנסה לבנות איזה לולאה שתרוץ על הכל

        L תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • L
          Liy @MGM IVR נערך לאחרונה על ידי

          @MGM-IVR אמר בחיפוש קובץ במערכת:

          @Liy אמר בחיפוש קובץ במערכת:

          @שמואל אמר בAPI - גישת מפתחים למערכות:

          בדיקה האם קובץ קיים

          יש אפשרות לחפש קובץ בכל המערכת?

          @eliyahu

          תנסה לבנות איזה לולאה שתרוץ על הכל

          חיפשתי משהו מובנה...
          לא נורא.

          תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • E
            eliyahu ניהול @Liy נערך לאחרונה על ידי

            @Liy אמר בחיפוש קובץ במערכת:

            יש אפשרות לחפש קובץ בכל המערכת?
            @eliyahu

            מה יהיה עם התיוגים האלה?

            L 2 תגובות תגובה אחרונה תגובה ציטוט 2
            • L
              Liy @eliyahu נערך לאחרונה על ידי

              @eliyahu אמר בחיפוש קובץ במערכת:

              @Liy אמר בחיפוש קובץ במערכת:

              יש אפשרות לחפש קובץ בכל המערכת?
              @eliyahu

              מה יהיה עם התיוגים האלה?

              סליחה.

              תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • פ
                פיסטוק פרווה מומחה נערך לאחרונה על ידי

                בינתיים אין כזה דבר...
                רק אם יהיה api של הצגת כל הקבצים במערכת
                גם לולאה לא תעזור כי אתה לא יכול לדעת כמה שלוחות יש ולכן לא תוכל לדעת כמה לולאות לעשות...
                מקווה שימות יפתחו ב api של GetIVR2Dir את האפשרות להצגת כל הקבצים בכל השלוחות יחד...

                צ N M 3 תגובות תגובה אחרונה תגובה ציטוט 0
                • צ
                  צדיק תמים מומחה @פיסטוק פרווה נערך לאחרונה על ידי

                  @פיסטוק-פרווה אמר בחיפוש קובץ במערכת:

                  גם לולאה לא תעזור כי אתה לא יכול לדעת כמה שלוחות יש ולכן לא תוכל לדעת כמה לולאות לעשות...

                  לולאה רקורסיבית...

                  פ תגובה 1 תגובה אחרונה תגובה ציטוט 1
                  • פ
                    פיסטוק פרווה מומחה @צדיק תמים נערך לאחרונה על ידי

                    @צדיק-תמים
                    מה זה בדיוק? תן קישור למדריך...

                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • N
                      nyh @פיסטוק פרווה נערך לאחרונה על ידי

                      @פיסטוק-פרווה אמר בחיפוש קובץ במערכת:

                      גם לולאה לא תעזור כי אתה לא יכול לדעת כמה שלוחות יש ולכן לא תוכל לדעת כמה לולאות לעשות...

                      אם היית באמת יודע תיכנות היית יודע כמה.

                      צ תגובה 1 תגובה אחרונה תגובה ציטוט 1
                      • צ
                        צדיק תמים מומחה @nyh נערך לאחרונה על ידי צדיק תמים

                        @nyh אין דרך לדעת מראש, הדרך לעשות זאת עם רקרוסיביה (פונקציה שקוראת לעצמה בתנאי מסוים), או עם while עם תנאי עצירה מתאים.
                        המימוש בפועל שונה בכל שפה, וכיוון שכנראה השפה ש @פיסטוק-פרווה יודע היא רק PHP, אין לי אין לעזור עם דוגמה.

                        L ל 2 תגובות תגובה אחרונה תגובה ציטוט 0
                        • L
                          Liy @צדיק תמים נערך לאחרונה על ידי

                          @צדיק-תמים אמר בחיפוש קובץ במערכת:

                          וכיוון שכנראה השפה ש @פיסטוק-פרווה יודע היא רק PHP, אין לי אין לעזור עם דוגמה.

                          מי ששאל את השאלה זה אני...
                          JavaScript הכי טוב לי.

                          פ תגובה 1 תגובה אחרונה תגובה ציטוט 2
                          • L
                            Liy @eliyahu נערך לאחרונה על ידי Liy

                            @eliyahu אמר בחיפוש קובץ במערכת:

                            @Liy אמר בחיפוש קובץ במערכת:

                            יש אפשרות לחפש קובץ בכל המערכת?
                            @eliyahu

                            מה יהיה עם התיוגים האלה?

                            פתחתי עוד 2 פוסטים ואין מענה מהיר כמו אם הייתי מתייג אותך...

                            https://f2.freeivr.co.il/topic/9305/מה-ההבדל-בין-העלאת-והורדת-קבצי-שמע-לקמפיין-ל-ניהול-קבצי-קמפיין

                            https://f2.freeivr.co.il/topic/9306/פרמטרים-להפעלת-קמפיין

                            תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • M
                              MGM IVR @פיסטוק פרווה נערך לאחרונה על ידי

                              @פיסטוק-פרווה אמר בחיפוש קובץ במערכת:

                              בינתיים אין כזה דבר...
                              רק אם יהיה api של הצגת כל הקבצים במערכת
                              גם לולאה לא תעזור כי אתה לא יכול לדעת כמה שלוחות יש ולכן לא תוכל לדעת כמה לולאות לעשות...
                              מקווה שימות יפתחו ב api של GetIVR2Dir את האפשרות להצגת כל הקבצים בכל השלוחות יחד...

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

                              פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                              • פ
                                פיסטוק פרווה מומחה @MGM IVR נערך לאחרונה על ידי

                                @MGM-IVR
                                צריך לולאה מסוימת בשביל זה...

                                תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                • פ
                                  פיסטוק פרווה מומחה @Liy נערך לאחרונה על ידי

                                  @Liy
                                  גם לי...

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

                                    @Liy @פיסטוק-פרווה מימשתי משהו בשביל האתגר
                                    בעז"ה במוצ"ש נעלה לכאן

                                    M תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                    • M
                                      MGM IVR @צדיק תמים נערך לאחרונה על ידי

                                      @צדיק-תמים אמר בחיפוש קובץ במערכת:

                                      @Liy @פיסטוק-פרווה מימשתי משהו בשביל האתגר
                                      בעז"ה במוצ"ש נעלה לכאן

                                      מחכים...

                                      תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                      • ש
                                        שואל ברצינות @Liy נערך לאחרונה על ידי

                                        @Liy ידוע לי של- @111 היה דבר כזה בעבר,
                                        ב-JS הלולאה קצת יותר מורכבת כי צריך לעבוד עם promise ורק אז להריץ את הלולאה הפנימית בכל פעם.

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

                                          קבלת רשימת קבצים בתקיה (או תקיות)

                                          const axios = require('axios');
                                          axios.defaults.baseURL = 'https://www.call2all.co.il/ym/api/';
                                          const YEMOT_NUMBER = '0773130000';
                                          const YEMOT_PASSWORD = '123456';
                                          
                                          /**
                                           * @return {String} - The token
                                           */
                                          async function getToken() {
                                              const response = await axios.post('Login', {
                                                  username: YEMOT_NUMBER,
                                                  password: YEMOT_PASSWORD,
                                              });
                                              return response.data.token;
                                          }
                                          
                                          /**
                                           * @param {String} token - Yemot token
                                           * @param {String} path - folder path
                                           * @return {Promise<object>} - folder data
                                           */
                                          async function getFolder(path, token) {
                                              let response;
                                              response = await axios.get('GetIVR2Dir', { params: { token, path } });
                                              const { data } = response;
                                              if (data.responseStatus !== 'OK') throw new Error('Yemot error: ' + data.message);
                                              return data;
                                          }
                                          
                                          /**
                                           *
                                           * @param {Array|String} begin - Folder(s) to start from
                                           * @param {Array} exclusionsWords - Words to exclude folders that contain them
                                           * @param {String} token - Yemot token
                                           * @returns
                                           */
                                          async function getLists(begin, exclusionsWords, token = `${YEMOT_NUMBER}:${YEMOT_PASSWORD}`) {
                                              const lists = { files: [], dirs: [], ini: [] };
                                              let nextFolders = Array.from(begin);
                                              while (nextFolders.length) {
                                                  const promises = nextFolders.map((path) => {
                                                      return getFolder(path, token);
                                                  });
                                                  const responses = await Promise.all(promises);
                                                  let localNextFolders = [];
                                                  responses.forEach((folder) => {
                                                      lists.files.push(...folder.files);
                                                      lists.dirs.push(...folder.dirs);
                                                      lists.ini.push(...folder.ini);
                                                      const exclusionsRegex = new RegExp(exclusionsWords.join('|'), 'g');
                                                      const nextFoldersFiltered = folder.dirs.filter((dir) => !exclusionsRegex.test(dir.name)).map((path) => path.what);
                                                      localNextFolders = [...localNextFolders, ...nextFoldersFiltered];
                                                  });
                                                  nextFolders = localNextFolders;
                                              }
                                              return lists;
                                          }
                                          

                                          דוגמה למימוש - קבלת רשימת הקבצים מתקיות: 1, 2, הדפסת כמות התקיות, כמות קבצים, וכמות קבצי ini, ובנוסף הדפסה של רשימת נתיבי הקבצים ממוינים לפי הנתיב:

                                          (async () => {
                                              const token = await getToken();
                                              const lists = await getLists(['1', '2'], ['Log', 'Trash'], token);
                                              for (const listName in lists) {
                                                  if (Object.hasOwnProperty.call(lists, listName)) {
                                                      console.log(`${listName} count: ${lists[listName].length}`);
                                                  }
                                              }
                                              console.log(lists.files.map((file) => file.what).sort());
                                          })();
                                          

                                          כמובן שניתן

                                          • לסרוק תקיה אחת, כולל למשל את הראשי
                                          • לא להחריג את תקיות לוג וסל מחזור

                                          לא רואה סיבה לא להשתמש בטוקן אלא במספר מערכת וסיסמה, אבל אם לא מעבירים ארגומנט טוקן לפונקציה getLists היא משתמש במספר:סיסמה.

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

                                          L פ 2 תגובות תגובה אחרונה תגובה ציטוט 0
                                          • L
                                            Liy @צדיק תמים נערך לאחרונה על ידי

                                            @צדיק-תמים אמר בחיפוש קובץ במערכת:

                                            קבלת רשימת קבצים בתקיה (או תקיות)

                                            const axios = require('axios');
                                            axios.defaults.baseURL = 'https://www.call2all.co.il/ym/api/';
                                            const YEMOT_NUMBER = '0773130000';
                                            const YEMOT_PASSWORD = '123456';
                                            
                                            /**
                                             * @return {String} - The token
                                             */
                                            async function getToken() {
                                                const response = await axios.post('Login', {
                                                    username: YEMOT_NUMBER,
                                                    password: YEMOT_PASSWORD,
                                                });
                                                return response.data.token;
                                            }
                                            
                                            /**
                                             * @param {String} token - Yemot token
                                             * @param {String} path - folder path
                                             * @return {Promise<object>} - folder data
                                             */
                                            async function getFolder(path, token) {
                                                let response;
                                                response = await axios.get('GetIVR2Dir', { params: { token, path } });
                                                const { data } = response;
                                                if (data.responseStatus !== 'OK') throw new Error('Yemot error: ' + data.message);
                                                return data;
                                            }
                                            
                                            /**
                                             *
                                             * @param {Array|String} begin - Folder(s) to start from
                                             * @param {Array} exclusionsWords - Words to exclude folders that contain them
                                             * @param {String} token - Yemot token
                                             * @returns
                                             */
                                            async function getLists(begin, exclusionsWords, token = `${YEMOT_NUMBER}:${YEMOT_PASSWORD}`) {
                                                const lists = { files: [], dirs: [], ini: [] };
                                                let nextFolders = Array.from(begin);
                                                while (nextFolders.length) {
                                                    const promises = nextFolders.map((path) => {
                                                        return getFolder(path, token);
                                                    });
                                                    const responses = await Promise.all(promises);
                                                    let localNextFolders = [];
                                                    responses.forEach((folder) => {
                                                        lists.files.push(...folder.files);
                                                        lists.dirs.push(...folder.dirs);
                                                        lists.ini.push(...folder.ini);
                                                        const exclusionsRegex = new RegExp(exclusionsWords.join('|'), 'g');
                                                        const nextFoldersFiltered = folder.dirs.filter((dir) => !exclusionsRegex.test(dir.name)).map((path) => path.what);
                                                        localNextFolders = [...localNextFolders, ...nextFoldersFiltered];
                                                    });
                                                    nextFolders = localNextFolders;
                                                }
                                                return lists;
                                            }
                                            

                                            דוגמה למימוש - קבלת רשימת הקבצים מתקיות: 1, 2, הדפסת כמות התקיות, כמות קבצים, וכמות קבצי ini, ובנוסף הדפסה של רשימת נתיבי הקבצים ממוינים לפי הנתיב:

                                            (async () => {
                                                const token = await getToken();
                                                const lists = await getLists(['1', '2'], ['Log', 'Trash'], token);
                                                for (const listName in lists) {
                                                    if (Object.hasOwnProperty.call(lists, listName)) {
                                                        console.log(`${listName} count: ${lists[listName].length}`);
                                                    }
                                                }
                                                console.log(lists.files.map((file) => file.what).sort());
                                            })();
                                            

                                            כמובן שניתן

                                            • לסרוק תקיה אחת, כולל למשל את הראשי
                                            • לא להחריג את תקיות לוג וסל מחזור

                                            לא רואה סיבה לא להשתמש בטוקן אלא במספר מערכת וסיסמה, אבל אם לא מעבירים ארגומנט טוקן לפונקציה getLists היא משתמש במספר:סיסמה.

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

                                            הרעיון חמוד, במעבר מהיר על הקוד, הוא יכל להכתב קצת יותר קצת ומובן (סתם להערה כמובן).

                                            צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                            • פוסט ראשון
                                              פוסט אחרון