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

    פקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y

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

      @עידו כל הכבוד!!
      עזרת לי (ומסתבר גם לרבים אחרים) מאוד!!
      תודה רבה!!

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

      ולכן ניסיתי להכין לינקים מדוייקים עבור מה שאני צריך בצורה כזו למשל:

      164XXXXXXXXXXXXXXXX.tfuza.php?token=079999999:123456&sourceTemplateId=250005&targetTemplateId=250006

      ועדיין הלינק לא מביא לי את התוצאה הרצוייה, אלא הוא מחזיר לי את השאילתה שיצרת,

      ואשמח אם תוכל לבטל את השאילתה הנ"ל, ושיקח את הפרמטרים ממה שאני שולח לו בלינק בלבד.

      ב. מעניין למה אצלי הטקסט בשאילתה משובש (מצו"ב)
      649dea54-a389-4205-bbfe-5c9cc8d335c9-תמונה.png

      @צבי-ד-צ כתב בפקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y:

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

      מסתבר שהיה שווה לחכות...

      תודה רבה והצלחה גדולה לכולם!!!

      C ע י 3 תגובות תגובה אחרונה תגובה ציטוט 0
      • C
        CUBASE @זאביק נערך לאחרונה על ידי CUBASE

        @זאביק כתב בפקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y:

        ב. מעניין למה אצלי הטקסט בשאילתה משובש (מצו"ב)

        כנראה שלא שמרת את הקובץ בפורמט UTF-8

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

          @זאביק אני מציע לך לקחת את הקוד ולשאול את gpt מה שאתה רוצה, אני כרגע לא יכול אפילו להסתכל על זה.

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

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

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

              @יב מה זה יועיל לי?
              לכאורה הכי טוב עבורי הוא, לטפל בקוד ש@עידו היקר הביא, ולהתאים אותו לקבלת הפרמטרים באמצעות לינק.

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

                @זאביק כתב בפקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y:

                164XXXXXXXXXXXXXXXX.tfuza.php?token=079999999:123456&sourceTemplateId=250005&targetTemplateId=250006

                זה מה שיועיל לך. במקום לכתוב ידנית את הנתיב, תגדיר משתנה.

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

                  @יב לא בדיוק הבנתי,
                  אני בין כך מגדיר ידנית פעם אחת בלבד, ושומר לי את כל הלינקים המדוייקים הנצרכים לי במחשב, ואח"כ אני לא צריך להגדיר שוב פעם כלום.

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

                    @CUBASE

                    @CUBASE כתב בפקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y:

                    ב. מעניין למה אצלי הטקסט בשאילתה משובש (מצו"ב)

                    כנראה שלא שמרת את הקובץ בפורמט UTF-8

                    צודק! תודה רבה!!!

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

                      @עידו @צבי-ד-צ @יב @CUBASE

                      לתועלת הרבים אני מעלה פה בס"ד קוד משודרג!!
                      הקוד כמובן מתבסס על הקוד הבסיסי ש @עידו היקר העלה פה!

                      ויש כאן 4 שידרוגים חשובים

                      1. בשאילתה יש אפשרות לקבוע איזו פעולה לעשות (להוסיף / לחסום /להחליף) - (שימו לב: פונקציית "מחיקה" כרגע לא פעילה, - אולי בהמשך אעלה בעז"ה תיקון לפונקצייה הזו).

                      2. בנוסף יש אפשרות בפעולה אחת לבחור כמה רשימות "מקור" (ללא הגבלה) וכן אפשר לבחור כמה רשימות "יעד" (ללא הגבלה), - ולבצע את העתקת כל המספרים שנשלפו מכל המקורות שנבחרו, לכל היעדים שנבחרו,
                        (שימו לב: אין אפשרות לפצל ביניהם, אלא הפעולה היא מכל המקורות לכל היעדים).

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

                      להלן מה שצריך להכניס לשלוחה

                      type=api
                      api_link=http://164XXXXXXXXXXXXXXXXtfuza.php
                      
                      
                      טוקן
                      api_add_0=token=0999999999:123456
                      
                      
                      
                      איזו פעולה לבצע
                      api_add_1=action=add
                      
                      4 אפשרויות:
                         להוסיף add /   למחוק remove  /לחסום block / להחליף את המספרים הישנים בחדשים replace
                      
                      
                      
                      רשימת מקור
                      api_add_2=source1=255510
                      
                      אפשר להוסיף מקורות ע"י source2  וכן הלאה
                      
                      
                      
                      רשימת יעד
                      api_add_3=target1=255739
                      
                      אפשר להוסיף יעדים ע"י target2 וכן הלאה 
                      
                      

                      (אפשר להשתיק את הודעת "אין מענה משרת API" - הפעולה מתבצעת בלי תשובה מהשרת)

                      1. מי שמשתמש הרבה פעמים בהעברות בין רשי"ת קבועות, - ואין לו זמן וכח למלא כל פעם את השאילתה מחדש, יכול ליצור לעצמו באופן חד פעמי לינק, שיבצע את הכל בלחיצה אחת,

                      הלינק צריך להיות כך:

                      .http://164XXXXXXXXXXXXXXXXtfuza.php?token=0799999999:123456&action=add&source1=11122&target1=22233

                      מצו"ב תמונה של השאילתה המעודכנת:

                      f1c1bfa4-30af-4818-be94-74eb7bfbe408-תמונה.png

                      וכמובן צריך שרת להכניס שם את הקוד, ולהלן הקוד המשודרג:

                      <?php
                      // משתנים עיקריים
                      $success = '';
                      $error = '';
                      $resultMsg = '';
                      $removedCount = 0;
                      $blockedCount = 0;
                      $transferredCount = 0;
                      
                      // קבלת פרמטרים מהמשתמש (GET/POST)
                      $request = array_merge($_GET, $_POST);
                      $action = $request['action'] ?? '';
                      $token = $request['token'] ?? '';
                      
                      // קבלת מקורות ויעדים כמערכים
                      $sources = [];
                      $targets = [];
                      
                      // תמיכה בפרמטרים בודדים או מערכים
                      foreach ($request as $key => $value) {
                          if (preg_match('/^source(\d+)$/', $key) && trim($value) !== '') {
                              $sources[] = trim($value);
                          }
                      }
                      if (isset($request['sources']) && is_array($request['sources'])) {
                          foreach ($request['sources'] as $src) {
                              if (trim($src) !== '') $sources[] = trim($src);
                          }
                      }
                      foreach ($request as $key => $value) {
                          if (preg_match('/^target(\d+)$/', $key) && trim($value) !== '') {
                              $targets[] = trim($value);
                          }
                      }
                      if (isset($request['targets']) && is_array($request['targets'])) {
                          foreach ($request['targets'] as $tgt) {
                              if (trim($tgt) !== '') $targets[] = trim($tgt);
                          }
                      }
                      
                      // ביצוע פעולה רק אם כל הנתונים קיימים
                      if ($_SERVER['REQUEST_METHOD'] === 'POST' || !empty($_GET)) {
                          if ($token && count($sources) > 0 && count($targets) > 0 && in_array($action, ['add','remove','block','replace'])) {
                              // פונקציית עזר לשליחת בקשה ל-API
                              function apiRequest($url, $data) {
                                  $curl = curl_init($url);
                                  curl_setopt_array($curl, [
                                      CURLOPT_RETURNTRANSFER => true,
                                      CURLOPT_POST => true,
                                      CURLOPT_POSTFIELDS => http_build_query($data),
                                  ]);
                                  $response = curl_exec($curl);
                                  curl_close($curl);
                                  return json_decode($response, true);
                              }
                              // שליפת כל המספרים מכל המקורות (ללא כפילויות), כולל rowid
                              $allNumbers = [];
                              foreach ($sources as $sourceId) {
                                  $getUrl = 'https://www.call2all.co.il/ym/api/GetTemplateEntries';
                                  $getResponse = apiRequest($getUrl, [
                                      'token' => $token,
                                      'templateId' => $sourceId,
                                  ]);
                                  if (isset($getResponse['entries'])) {
                                      foreach ($getResponse['entries'] as $entry) {
                                          $phone = $entry['phone'];
                                          $allNumbers[$phone] = [
                                              'phone' => $phone,
                                              'name' => $entry['name'] ?? '',
                                              'moreinfo' => $entry['moreinfo'] ?? '',
                                              'blocked' => $entry['blocked'] ? 1 : 0,
                                              'rowid' => $entry['rowid'] ?? '', // נוסיף את rowid
                                          ];
                                      }
                                  }
                              }
                              // ביצוע הפעולה שבחר המשתמש
                              if ($action === 'replace') {
                                  // אם נבחרה פעולה 'החלפה' - מנקים את כל המספרים מכל היעדים
                                  $clearUrl = 'https://www.call2all.co.il/ym/api/ClearTemplateEntries';
                                  foreach ($targets as $targetId) {
                                      apiRequest($clearUrl, [
                                          'token' => $token,
                                          'templateId' => $targetId,
                                      ]);
                                  }
                              }
                              if ($action === 'add' || $action === 'replace') {
                                  // אם נבחרה פעולה 'הוספה' או 'החלפה' - מוסיפים את כל המספרים מהמקורות לכל היעדים
                                  $updateUrl = 'https://www.call2all.co.il/ym/api/UpdateTemplateEntry';
                                  foreach ($targets as $targetId) {
                                      foreach ($allNumbers as $entry) {
                                          apiRequest($updateUrl, [
                                              'token' => $token,
                                              'templateId' => $targetId,
                                              'phone' => $entry['phone'],
                                              'name' => $entry['name'],
                                              'moreinfo' => $entry['moreinfo'],
                                              'blocked' => $entry['blocked'],
                                          ]);
                                          $transferredCount++;
                                      }
                                  }
                                  $resultMsg = "בוצעה הוספה של $transferredCount מספרים.";
                              } elseif ($action === 'remove') {
                                  // אם נבחרה פעולה 'מחיקה' - מוחקים את כל המספרים מהיעדים לפי rowid
                                  $deleteUrl = 'https://www.call2all.co.il/ym/api/UpdateTemplateEntries';
                                  foreach ($targets as $targetId) {
                                      $rowids = [];
                                      foreach ($allNumbers as $entry) {
                                          if (!empty($entry['rowid'])) {
                                              $rowids[] = $entry['rowid'];
                                          }
                                      }
                                      if (count($rowids) > 0) {
                                          apiRequest($deleteUrl, [
                                              'token' => $token,
                                              'templateId' => $targetId,
                                              'rowids' => implode('-', $rowids),
                                              'action' => 'delete',
                                          ]);
                                          $removedCount += count($rowids);
                                      }
                                  }
                                  $resultMsg = "בוצעה מחיקה של $removedCount מספרים.";
                              } elseif ($action === 'block') {
                                  // אם נבחרה פעולה 'חסימה' - חוסמים את כל המספרים בכל היעדים
                                  $blockUrl = 'https://www.call2all.co.il/ym/api/UpdateTemplateEntry';
                                  foreach ($targets as $targetId) {
                                      foreach ($allNumbers as $entry) {
                                          apiRequest($blockUrl, [
                                              'token' => $token,
                                              'templateId' => $targetId,
                                              'phone' => $entry['phone'],
                                              'name' => $entry['name'],
                                              'moreinfo' => $entry['moreinfo'],
                                              'blocked' => 1, // חסום
                                          ]);
                                          $blockedCount++;
                                      }
                                  }
                                  $resultMsg = "בוצעה חסימה של $blockedCount מספרים.";
                              }
                              // שמירת הודעת הצלחה
                              $success = $resultMsg;
                          } else {
                              // אם חסר נתון - הודעת שגיאה מתאימה
                              $error = "יש למלא טוקן, לפחות מקור אחד ולפחות יעד אחד, ולבחור פעולה";
                          }
                      }
                      ?>
                      <!DOCTYPE html>
                      <html lang="he">
                      <head>
                          <meta charset="UTF-8">
                          <title>ניהול רשימות תפוצה</title>
                          <style>
                              /* עיצוב בסיסי לטופס ולרכיבים */
                              body { font-family: sans-serif; direction: rtl; padding: 20px; max-width: 600px; margin: auto; }
                              label { display: block; margin-top: 10px; }
                              input[type="text"], input[type="number"] { width: 100%; padding: 8px; margin-top: 5px; }
                              button { margin-top: 20px; padding: 10px 20px; font-size: 16px; }
                              .msg { margin-top: 20px; font-weight: bold; }
                              select { width: 100%; padding: 8px; margin-top: 5px; }
                              .dynamic-list { margin-bottom: 10px; }
                              .dynamic-list input { width: 90%; display: inline-block; }
                              .dynamic-list button { width: 8%; display: inline-block; }
                          </style>
                          <script>
                          // פונקציה להוספת שדה מקור/יעד דינמית לטופס
                          // מוסיפה div עם שדה קלט וכפתור X להסרה
                          function addField(listId, inputName) {
                              var list = document.getElementById(listId);
                              var div = document.createElement('div');
                              div.className = 'dynamic-list';
                              div.innerHTML = '<input type="number" name="'+inputName+'[]" placeholder="הכנס מזהה"> <button type="button" onclick="this.parentNode.remove();">X</button>';
                              list.appendChild(div);
                          }
                          </script>
                      </head>
                      <body>
                      <h2>ניהול רשימות תפוצה</h2>
                      <form method="post">
                          <!-- שדה טוקן -->
                          <label>Token:
                              <input type="text" name="token" required>
                          </label>
                          <!-- שדות מקורות -->
                          <label>מקורות (ללא הגבלה):</label>
                          <div id="sources-list"></div>
                          <button type="button" onclick="addField('sources-list','sources')">הוסף מקור</button>
                          <!-- שדות יעדים -->
                          <label>יעדים (ללא הגבלה):</label>
                          <div id="targets-list"></div>
                          <button type="button" onclick="addField('targets-list','targets')">הוסף יעד</button>
                          <!-- בחירת פעולה -->
                          <label>פעולה:
                              <select name="action" required>
                                  <option value="">בחר פעולה</option>
                                  <option value="add">הוספה (העתקה)</option>
                                  <option value="remove">מחיקה</option>
                                  <option value="block">חסימה</option>
                                  <option value="replace">החלפה (ניקוי ואז הוספה)</option>
                              </select>
                          </label>
                          <button type="submit">בצע פעולה</button>
                      </form>
                      <?php if (!empty($error)): ?>
                          <!-- הודעת שגיאה אם יש -->
                          <div class="msg" style="color: red;"> <?= htmlspecialchars($error) ?> </div>
                      <?php elseif (!empty($success)): ?>
                          <!-- הודעת הצלחה אם יש -->
                          <div class="msg" style="color: green;"> <?= htmlspecialchars($success) ?> </div>
                      <?php endif; ?>
                      <script>
                      // הוספת שדה ראשון אוטומטית למקורות וליעדים בעת טעינת הדף
                      addField('sources-list','sources');
                      addField('targets-list','targets');
                      </script>
                      </body>
                      </html>
                      
                      

                      בהצלחה גדולה!!

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

                        @זאביק איך שדרגת אותו?

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

                          @עידו המשכתי לעבוד עליו באותה צורה שאתה יצרת אותו... (וכמובן בדקתי ותיקנתי את הקוד היכן שמצאתי שהוא טעה).

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