• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    1. דף הבית
    2. זאביק
    ז
    • פרופיל
    • עוקב אחרי 0
    • עוקבים 0
    • נושאים 18
    • פוסטים 89
    • הגבוה ביותר 29
    • שנוי במחלוקת 0
    • קבוצות 0

    זאביק

    @זאביק

    45
    מוניטין
    20
    צפיות בפרופיל
    89
    פוסטים
    0
    עוקבים
    0
    עוקב אחרי
    הצטרף ב- התחבר לאחרונה

    זאביק הפסק לעקוב עקוב

    הפוסטים הטובים ביותר שנוצרו על ידי זאביק

    • RE: קול ההקראה השתנה לפתע

      @יאנג-בוי דווקא לי ענו במייל כך:

      b2c3b64d-3ace-441b-ae94-1fad529ed035-תמונה.png

      ומזה שהשיבו לי "אין צפי לחזרה שלהם כרגע" היה נראה שזה פעולה יזומה, וזה לא באג, וזה לא בטיפול,

      אך כמובן שנשמח כולנו אם זה אכן יחזור לפעול!!

      (אולי יש לבטל את ה"נפתר" עד שהעניינים יתבהרו)

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

      @עידו @צבי-ד-צ @יב @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>
      
      

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: קול ההקראה השתנה לפתע

      @yankl כתב בקול ההקראה השתנה לפתע:

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

      לתועלת הרבים, מנסיון, יש לשים לב, לנקד "רק" את המילים שהוא "לא יודע" לקריין אותם כראוי "בלבד",

      כיון שאם מנקדים לו את כל הטקסט, זה גורם ליותר בעיות בקריינות מאשר ללא ניקוד, (כיון שבהרבה מילים, דווקא בגלל הניקוד הוא מקריין אותם בצורה מעוותת),

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

      פורסם בבאגים במערכת
      ז
      זאביק
    • RE: קול ההקראה השתנה לפתע

      בשורה טובה:

      נכון לשעות האחרונות,

      הקריין הישן חזר לפעולה!!!!!

      פורסם בבאגים במערכת
      ז
      זאביק
    • RE: ההקלטות נשמרות לי פעמיים

      @אA אז כנראה המערכת שלי משוכללת יותר מהמערכות של כולם... 🙂 🙂 🙂 בכל אופן תודה רבה!

      פורסם בשאלות ועזרה הדדית
      ז
      זאביק
    • RE: דוחות של קמפיינים (הודעות) שנשלחו מהמערכת

      @עץ-השדה @אA

      ושוב בדקתי את הרעיון הראשון של @עץ-השדה , וראיתי שזה אכן רעיון מצויין גם בשבילי,

      כיון שראיתי בכמה בדיקות שעשיתי (ותתקנו אותי אם זה לא מדוייק), שיש הבדל אם ההגדרה בשלוחה היא שהלקוח חוסם עצמו ברשי"ת (שאז הלקוח נחסם בכל הרשי"ת הקיימות במערכת, והמנהל לא יכול להתערב אח"כ ולבטל את החסימה בשום צורה שהיא), ובין אם בשלוחה מוגדר שהלקוח מוחק עצמו מהרשי"ת (שאז המנהל יכול להחזיר את הלקוח שוב פעם, אפי' לרשי"ת הספציפית שנמחק משם),
      (בתיעוד של ימות המשיח לא הוזכר חילוק בעניין, אבל מכמה נסיונות שעשיתי זה מה שיצא לי בינתיים),

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: השיחה מתנתקת באמצע הקלטה

      @אבו הבעייה מוכרת גם בחברות תוכן אחרות, (שאינם קשורות לימות המשיח)
      במקרים רבים, הבעייה נפתרת אחרי שמגדירים בטלפון שיהיה רק על דור 3 (ולא דור 4) בדוק ומנוסה!!
      תבדוק אם גם אצלך זה יפתור את הבעייה, ותעדכן את כולם לתועלת הרבים!!

      פורסם בבאגים במערכת
      ז
      זאביק
    • RE: פקודה שתעתיק מרשימת תפוצה 1 לרשימת תפוצה 2

      @מושי-גרינוואלד
      להלן הקוד:
      אני משתמש בו בקביעות, וזה חוסך לי זמן רב!!

      https://f2.freeivr.co.il/post/143857

      פורסם בשאלות ועזרה הדדית
      ז
      זאביק
    • RE: דוחות של קמפיינים (הודעות) שנשלחו מהמערכת

      @אA אני אגדיר remove_and_delete=yes
      ואבקש מהשרות לקוחות שיגדירו לי את הקמפיין כשיחה חוזרת כפי הרעיון של @עץ-השדה והכל יבוא על מקומו בשלום בס"ד

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: קול ההקראה השתנה לפתע

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

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

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

      פורסם בבאגים במערכת
      ז
      זאביק

    פוסטים אחרונים שנוצרו על ידי זאביק

    • RE: פקודה שתעתיק מרשימת תפוצה 1 לרשימת תפוצה 2

      @עידו כתב בפקודה שתעתיק מרשימת תפוצה 1 לרשימת תפוצה 2:

      @מושי-גרינוואלד תחפש בשרשורים אחרונים, יש קוד מוכן ומאוד יפה

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

      פורסם בשאלות ועזרה הדדית
      ז
      זאביק
    • RE: פקודה שתעתיק מרשימת תפוצה 1 לרשימת תפוצה 2

      @מושי-גרינוואלד
      להלן הקוד:
      אני משתמש בו בקביעות, וזה חוסך לי זמן רב!!

      https://f2.freeivr.co.il/post/143857

      פורסם בשאלות ועזרה הדדית
      ז
      זאביק
    • RE: פתרון לבאג של הקראת "ביוני" בקריין החדש

      @אביי-ורבא @מ-מ-פליישער

      תודה רבה על כל הסיוע,

      (למעשה, בינתיים הקריין הישן חזר לקריין כהוגן)

      תודה רבה!!

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: קול ההקראה השתנה לפתע

      בשורה טובה:

      נכון לשעות האחרונות,

      הקריין הישן חזר לפעולה!!!!!

      פורסם בבאגים במערכת
      ז
      זאביק
    • RE: פתרון לבאג של הקראת "ביוני" בקריין החדש

      @אביי-ורבא כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

      ותעלה לכאן את הפלט שתראה בקונסול

      גם את זה עדיין אינני יודע כיצד לבצע...

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: פתרון לבאג של הקראת "ביוני" בקריין החדש

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: פתרון לבאג של הקראת "ביוני" בקריין החדש

      @אביי-ורבא

      @אביי-ורבא כתב בפתרון לבאג של הקראת "ביוני" בקריין החדש:

      לא צריך את ההיפוך, מספיק לשנות את optionsDate,

      ניסיתי לשנות כפי שכתבת בהודעה האחרונה, ולא היה תקין, (לא בפונקציית TEXT ולא ב DATE)

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: פתרון לבאג של הקראת "ביוני" בקריין החדש

      @מ-מ-פליישער

      למעשה הקוד שלי כעת נראה כך (כלומר הקטע הרלוונטי מתוך קוד ארוך מאוד):

              //date to string
              const date = new Date(result.evictionDate);
              const optionsDate = { year: 'numeric', month: 'long', day: 'numeric' };
      
      
      
                { type: "text", data: "בתאריך" },
                { type: "text", data: date.toLocaleDateString("iw-IL", optionsDate) },
      
      
      
      
      
      

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

      תודה רבה!!!

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: פתרון לבאג של הקראת "ביוני" בקריין החדש

      @מ-מ-פליישער יש לי את כל סוגי התאריכים, ולאו דווקא 14 ביוני

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: פתרון לבאג של הקראת "ביוני" בקריין החדש

      @מ-מ-פליישער תסתכל בספוילר שכתבתי שם,
      תודה רבה!!

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק