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

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

    • RE: ⚠️ עדכון בנוגע לתקלה במערכת הקבצים, ומתן אפשרות לשליחת קמפיינים ללא עלות במהלך השבוע הקרוב.

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

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

      פורסם בחדש במערכת
      ז
      זאביק
    • RE: ⚠️ עדכון בנוגע לתקלה במערכת הקבצים, ומתן אפשרות לשליחת קמפיינים ללא עלות במהלך השבוע הקרוב.

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

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

      לתועלת המשתמשים מצורף כאן קוד PHP להוספה מהירה של נקודות,
      וכך זה נראה:
      7965433f-8071-49dc-a536-776968ba1825-תמונה.png

      לתשומת לב:

      1. הקוד נבנה לצורך משתמשים שמזוהים (לגבי צבירת הנקודות) ע"י מספר סידורי,

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

      1. בפוקציית "בדיקת נקודות" חובה למלא שדה מזהה.

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

      3. אפשר כמובן גם להוריד נקודות למשתמש ע"י מינוס (לדוגמא: -100)

      4. חשוב מאוד!! יש לשים לב, שכאשר המשתמש מוסיף לעצמו נקודות דרך הטלפון, אזי הקובץ points_total.ini אינו מתעדכן באתר באופן מיידי בשינויים שנעשו ע"י הטלפון, אלא זה אורך לפעמים 5 דקות ולפעמים שעה (ואולי גם יותר), - ולכן חשוב לדעת שאם תבצעו הוספת נקודות דרך הדפדפן, השינויים יחולו רק לפי הנתונים שבקובץ points_total.ini שנמצא באותו רגע באתר, וכאמור לפעמים הוא לא מעודכן.

      כמדומה שאפשר לבדוק האם הקובץ כבר התעדכן בשינויים שנעשו ע"י הטלפון או עדיין לא, ע"י בדיקה האם הקובץ ini הנ"ל חדש יותר מהקובץ: points_total.ymgr שאז זה אומר שה ini כבר מעודכן - אבל אינני לוקח אחריות בעניין

      אפשר גם לעשות שלוחה מובנית מראש שתוסיף נקודות למשתמשים מרובים ע"פ בחירה, דוגמא בספויילר.

      type=api
      api_link=http://164.XXXXXXXX/hosafat_nekudot.php
      api_hangup_send=no
      
      
      
      title=לינק להוספת נקודות 
      
      api_end_goto=/ 
      
      טוקן
      api_add_0=token=07777777:123456
       
      נתיב
      api_add_1=filePath=ivr2:/Points/Split/points_total.ini
       
      
      מזון ונקיון 
      api_add_2=updates[id][0]=1
       
      סכום
      api_add_3=updates[points][0]=-764
      
      
      ביגוד 
      api_add_4=updates[id][1]=2
       
      סכום
      api_add_5=updates[points][1]=-188
      
      כלי בית, תחזוקה, צעצועים ושונות 
      api_add_6=updates[id][2]=3
       
      סכום
      api_add_7=updates[points][2]=-133
      
      שונות 
      api_add_8=updates[id][3]=4
       
      סכום
      api_add_9=updates[points][3]=-22
      
      
      
      

      להלן הקוד:

      <?php
      // --- הגדרת משתנים להודעות --- //
      $success = '';
      $error = '';
      
      // --- פונקציות API --- //
      
      function downloadFile($token, $filePath) {
          $apiUrl = 'https://www.call2all.co.il/ym/api/GetTextFile';
          $ch = curl_init($apiUrl);
          $postData = http_build_query([
              'token' => $token,
              'what'  => $filePath,
          ]);
      
          curl_setopt_array($ch, [
              CURLOPT_RETURNTRANSFER => true,
              CURLOPT_POST           => true,
              CURLOPT_POSTFIELDS     => $postData,
          ]);
      
          $response = curl_exec($ch);
          curl_close($ch);
      
          // ננסה לפרש את התשובה כ-JSON
          $data = json_decode($response, true);
      
          if (is_array($data) && isset($data['responseStatus'])) {
              if ($data['responseStatus'] !== 'OK') {
                  return [
                      'status'  => 'error',
                      'message' => 'שגיאה בהורדת הקובץ: ' . ($data['message'] ?? 'לא ידוע'),
                  ];
              }
      
              // כאן התוכן האמיתי של הקובץ (השורות digits-1-...)
              $contents = $data['contents'] ?? '';
      
              return [
                  'status'  => 'ok',
                  'content' => $contents,
              ];
          }
      
          // אם זו לא תשובת JSON – נחזיר כטקסט גולמי
          return [
              'status'  => 'ok',
              'content' => $response,
          ];
      }
      
      function uploadFile($token, $filePath, $content) {
          $apiUrl = 'https://www.call2all.co.il/ym/api/UploadTextFile';
          $ch = curl_init($apiUrl);
      
          $postData = http_build_query([
              'token'    => $token,
              'what'     => $filePath,
              'contents' => $content, // רק הטקסט של הקובץ
          ]);
      
          curl_setopt_array($ch, [
              CURLOPT_RETURNTRANSFER => true,
              CURLOPT_POST           => true,
              CURLOPT_POSTFIELDS     => $postData,
          ]);
      
          $response = curl_exec($ch);
          curl_close($ch);
      
          $data = json_decode($response, true);
          if (is_array($data) && isset($data['responseStatus']) && $data['responseStatus'] === 'OK') {
              return ['status' => 'ok'];
          }
      
          $msg = is_array($data) && isset($data['message']) ? $data['message'] : 'תגובה לא תקינה מהשרת';
          return ['status' => 'error', 'message' => 'שגיאה בהעלאת הקובץ: ' . $msg];
      }
      
      // --- לוגיקה ראשית --- //
      if ($_SERVER['REQUEST_METHOD'] === 'POST' || !empty($_GET)) {
          do {
              $source = $_SERVER['REQUEST_METHOD'] === 'POST' ? $_POST : $_GET;
      
              // פעולה: בדיקה / עדכון / איפוס נבחרים / איפוס הכל
              $action = $source['action'] ?? 'update';
      
              // פרמטרים
              $token    = trim($source['token'] ?? '');
              $filePath = trim($source['filePath'] ?? '');
              $updates  = $source['updates'] ?? null;
      
              if (empty($token) || empty($filePath)) {
                  $error = 'יש למלא TOKEN ונתיב קובץ.';
                  break;
              }
      
              // באקשנים שקשורים ל-IDים (update / reset_selected) אנחנו צריכים לפחות מזהה אחד
              if (in_array($action, ['update', 'reset_selected'], true)) {
                  if (empty($updates) || !is_array($updates['id'])) {
                      $error = 'יש להזין לפחות מזהה אחד.';
                      break;
                  }
              }
      
              $updateIds    = isset($updates['id']) ? $updates['id'] : [];
              $updatePoints = isset($updates['points']) ? $updates['points'] : [];
      
              // ולידציה בסיסית למזהים – רק כשיש IDs
              if (!empty($updateIds)) {
                  foreach ($updateIds as $id) {
                      $id = trim($id);
                      if ($id === '' || !is_numeric($id)) {
                          $error = 'נמצאו מזהים לא חוקיים. אנא בדוק את כל שדות ה-ID.';
                          break 2;
                      }
                  }
              }
      
              // לוגיקת עדכון
              $updatesToProcess = [];
              if ($action === 'update') {
                  if (!is_array($updatePoints) || count($updateIds) !== count($updatePoints)) {
                      $error = 'שגיאה פנימית: מספר המזהים אינו תואם למספר ערכי הנקודות.';
                      break;
                  }
      
                  foreach ($updateIds as $index => $id) {
                      $points = $updatePoints[$index] ?? '';
                      $id     = trim($id);
                      $points = trim($points);
      
                      if ($points === '' || !is_numeric($points)) {
                          $error = 'נמצאו ערכי נקודות לא חוקיים. אנא בדוק את כל השדות.';
                          break 2;
                      }
      
                      $updatesToProcess[$id] = ($updatesToProcess[$id] ?? 0) + (float)$points;
                  }
      
                  if (empty($updatesToProcess)) {
                      $error = 'לא נמצאו עדכונים חוקיים לעיבוד.';
                      break;
                  }
              }
      
              // 2. הורדת הקובץ
              $downloadResult = downloadFile($token, $filePath);
              if ($downloadResult['status'] === 'error') {
                  $error = $downloadResult['message'];
                  break;
              }
              $fileContent = $downloadResult['content'];
      
              $lines           = preg_split('/\r\n|\n|\r/', $fileContent);
              $newContentArray = [];
              $updatedIds      = [];
      
              // 3. מצבים שונים לפי action
              if ($action === 'reset_all') {
                  // איפוס כל המזהים לקובץ
                  foreach ($lines as $line) {
                      if (preg_match('/^(digits-\d+-points_total=)([-.0-9]+)$/', $line, $m)) {
                          $prefix = $m[1];
                          $newContentArray[] = $prefix . '0';
                      } else {
                          $newContentArray[] = $line;
                      }
                  }
      
                  $newContent   = implode("\n", $newContentArray);
                  $uploadResult = uploadFile($token, $filePath, $newContent);
                  if ($uploadResult['status'] === 'error') {
                      $error = $uploadResult['message'];
                      break;
                  }
      
                  $success = 'כל המזהים אופסו לנקודות 0.';
                  break;
              }
      
              if ($action === 'reset_selected') {
                  // איפוס רק למזהים שנבחרו
                  $idsToReset = array_map('trim', $updateIds);
                  $idsToReset = array_values(array_filter($idsToReset, 'strlen'));
                  $resetFound = [];
      
                  foreach ($lines as $line) {
                      if (preg_match('/^digits-(\d+)-points_total=([-.0-9]+)$/', $line, $m)) {
                          $currentId = $m[1];
                          $prefix    = "digits-{$currentId}-points_total=";
      
                          if (in_array($currentId, $idsToReset, true)) {
                              $newContentArray[] = $prefix . '0';
                              $resetFound[]      = $currentId;
                          } else {
                              $newContentArray[] = $line;
                          }
                      } else {
                          $newContentArray[] = $line;
                      }
                  }
      
                  $newContent   = implode("\n", $newContentArray);
                  $uploadResult = uploadFile($token, $filePath, $newContent);
                  if ($uploadResult['status'] === 'error') {
                      $error = $uploadResult['message'];
                      break;
                  }
      
                  if (!empty($resetFound)) {
                      $success = 'המזהים הבאים אופסו לנקודות 0: ' . implode(', ', $resetFound) . '.';
                  } else {
                      $error = 'אף אחד מהמזהים שבחרת לא נמצא בקובץ.';
                  }
                  break;
              }
      
              if ($action === 'check') {
                  // בדיקה בלבד – לא משנים את הקובץ
                  $statusMessages = [];
      
                  // אם לא הוזן אף מזהה – מציגים את כל המזהים מהקובץ
                  $hasAnyId = false;
                  foreach ($updateIds as $rawId) {
                      if (trim($rawId) !== '') {
                          $hasAnyId = true;
                          break;
                      }
                  }
      
                  if (!$hasAnyId) {
                      // כל המזהים
                      foreach ($lines as $line) {
                          if (preg_match('/^digits-(\d+)-points_total=([-.0-9]+)$/', $line, $m)) {
                              $id     = $m[1];
                              $points = $m[2];
                              $statusMessages[] = "מזהה {$id}: נקודות נוכחיות = {$points}";
                          }
                      }
      
                      if (!empty($statusMessages)) {
                          $success = implode(' | ', $statusMessages);
                      } else {
                          $error = 'לא נמצאו מזהים בקובץ.';
                      }
      
                      break;
                  }
      
                  // יש מזהים מסוימים – מציגים רק אותם
                  foreach ($updateIds as $id) {
                      $id     = trim($id);
                      if ($id === '') {
                          continue;
                      }
                      $found  = false;
                      $points = null;
      
                      foreach ($lines as $line) {
                          if (preg_match('/^digits-(' . preg_quote($id, '/') . ')-points_total=([-.0-9]+)$/', $line, $m)) {
                              $found  = true;
                              $points = $m[2];
                              break;
                          }
                      }
      
                      if ($found) {
                          $statusMessages[] = "מזהה {$id}: נקודות נוכחיות = {$points}";
                      } else {
                          $statusMessages[] = "מזהה {$id}: לא נמצא בקובץ.";
                      }
                  }
      
                  if (!empty($statusMessages)) {
                      $success = implode(' | ', $statusMessages);
                  } else {
                      $error = 'לא נמצאו מזהים חוקיים או תואמים בקובץ.';
                  }
      
                  break;
              }
      
              // action === 'update' – עדכון נקודות רגיל
              foreach ($lines as $line) {
                  if (preg_match('/^digits-(\d+)-points_total=/', $line, $matches)) {
                      $currentId = $matches[1];
      
                      if (isset($updatesToProcess[$currentId])) {
                          $pointsToAdd = $updatesToProcess[$currentId];
      
                          if (preg_match('/^(digits-\d+-points_total=)([-.0-9]+)$/', $line, $valueMatches)) {
                              $prefix       = $valueMatches[1];
                              $currentValue = $valueMatches[2];
                              $newValue     = (float)$currentValue + (float)$pointsToAdd;
                              $newContentArray[] = $prefix . $newValue;
                              $updatedIds[]      = $currentId;
                              unset($updatesToProcess[$currentId]);
                          } else {
                              $newContentArray[] = $line;
                          }
                          continue;
                      }
                  }
                  $newContentArray[] = $line;
              }
      
              $newContent   = implode("\n", $newContentArray);
              $uploadResult = uploadFile($token, $filePath, $newContent);
              if ($uploadResult['status'] === 'error') {
                  $error = $uploadResult['message'];
                  break;
              }
      
              $successMessage = '';
              if (!empty($updatedIds)) {
                  $successMessage = 'הקובץ עודכן. מזהים שעודכנו: ' . implode(', ', $updatedIds) . '.';
              }
      
              $errorMessage = '';
              if (!empty($updatesToProcess)) {
                  $notFoundIds  = array_keys($updatesToProcess);
                  $errorMessage = 'המזהים הבאים לא נמצאו בקובץ או שהפורמט שלהם שגוי: ' . implode(', ', $notFoundIds) . '.';
              }
      
              if (!empty($successMessage) && !empty($errorMessage)) {
                  $success = $successMessage . ' ' . $errorMessage;
              } elseif (!empty($successMessage)) {
                  $success = $successMessage;
              } else {
                  $error = $errorMessage ?: 'לא בוצעו עדכונים. ייתכן שהמזהים שהוזנו לא קיימים בקובץ.';
              }
      
          } while (false);
      }
      ?>
      <!DOCTYPE html>
      <html lang="he">
      <head>
          <meta charset="UTF-8">
          <title>ניהול נקודות בקובץ - ימות המשיח</title>
          <style>
              body { font-family: Arial, sans-serif; direction: rtl; padding: 20px; max-width: 700px; margin: auto; background-color: #f4f4f4; }
              h2 { text-align: center; color: #333; }
              form { background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 5px rgba(0,0,0,0.1); }
              label { display: block; margin-top: 15px; font-weight: bold; color: #555; }
              input[type="text"], input[type="number"] { width: 100%; padding: 10px; margin-top: 5px; border: 1px solid #ddd; border-radius: 4px; box-sizing: border-box; }
              button[type="submit"], button[type="button"] { padding: 10px 15px; font-size: 14px; border: none; border-radius: 4px; cursor: pointer; }
              .submit-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 20px; }
              .btn-check { background-color: #6c757d; color: #fff; flex: 1; }
              .btn-check:hover { background-color: #5a6268; }
              .btn-update { background-color: #007bff; color: #fff; flex: 1; }
              .btn-update:hover { background-color: #0056b3; }
              .btn-reset-selected { background-color: #ffc107; color: #212529; flex: 1; }
              .btn-reset-selected:hover { background-color: #e0a800; }
              .btn-reset-all { background-color: #dc3545; color: #fff; flex: 1; }
              .btn-reset-all:hover { background-color: #c82333; }
              .msg { margin-top: 20px; padding: 15px; border-radius: 4px; font-weight: bold; text-align: center; }
              .error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
              .success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
              .update-pair { display: flex; gap: 10px; margin-bottom: 10px; align-items: center; }
              .update-pair input { flex: 1; }
              #add-update-field { width: auto; padding: 8px 15px; font-size: 14px; background-color: #28a745; margin-top: 10px; border: none; border-radius: 4px; color: white; cursor: pointer; }
              #add-update-field:hover { background-color: #218838; }
              .remove-field { background-color: #dc3545; color: white; border: none; border-radius: 50%; width: 24px; height: 24px; cursor: pointer; font-weight: bold; line-height: 24px; text-align: center; padding: 0; }
              .remove-field:hover { background-color: #c82333; }
              small.hint { color: #777; display: block; margin-top: 4px; }
          </style>
          <script>
              document.addEventListener('DOMContentLoaded', function() {
                  const container = document.getElementById('update-fields-container');
      
                  function addField() {
                      const newPair = document.createElement('div');
                      newPair.className = 'update-pair';
                      newPair.innerHTML = `
                          <input type="number" name="updates[id][]" placeholder="מזהה ID">
                          <input type="number" name="updates[points][]" step="any" placeholder="נקודות (לעדכון בלבד)">
                          <button type="button" class="remove-field">X</button>
                      `;
                      container.appendChild(newPair);
                  }
      
                  document.getElementById('add-update-field').addEventListener('click', addField);
      
                  container.addEventListener('click', function(e) {
                      if (e.target && e.target.classList.contains('remove-field')) {
                          if (container.children.length > 1) {
                              e.target.closest('.update-pair').remove();
                          }
                      }
                  });
      
                  function setRequiredForIdPoints(required) {
                      const idInputs = container.querySelectorAll('input[name="updates[id][]"]');
                      const pointInputs = container.querySelectorAll('input[name="updates[points][]"]');
                      idInputs.forEach(inp => inp.required = required);
                      pointInputs.forEach(inp => inp.required = required);
                  }
      
                  const btnCheck         = document.querySelector('button[name="action"][value="check"]');
                  const btnUpdate        = document.querySelector('button[name="action"][value="update"]');
                  const btnResetSelected = document.querySelector('button[name="action"][value="reset_selected"]');
                  const btnResetAll      = document.querySelector('button[name="action"][value="reset_all"]');
      
                  if (btnCheck) {
                      btnCheck.addEventListener('click', function() {
                          // בדיקה בלבד – לא נדרש למלא מזהים
                          setRequiredForIdPoints(false);
                      });
                  }
      
                  if (btnUpdate) {
                      btnUpdate.addEventListener('click', function() {
                          setRequiredForIdPoints(true);
                      });
                  }
      
                  if (btnResetSelected) {
                      btnResetSelected.addEventListener('click', function() {
                          setRequiredForIdPoints(true);
                      });
                  }
      
                  if (btnResetAll) {
                      btnResetAll.addEventListener('click', function() {
                          setRequiredForIdPoints(false);
                      });
                  }
              });
          </script>
      </head>
      <body>
          <h2>עדכון / בדיקה / איפוס נקודות בימות המשיח</h2>
          <form method="post">
              <label for="token">TOKEN:</label>
              <input type="text" id="token" name="token" required>
      
              <label for="filePath">נתיב קובץ מלא (למשל, ivr2:/Points/Split/points_total.ini):</label>
              <input type="text" id="filePath" name="filePath" required>
      
              <label>מזהים (לבדיקה, עדכון או איפוס נבחרים):</label>
              <small class="hint">באיפוס כללי (איפוס כל המזהים) או בבדיקת כל המזהים אין חובה למלא מזהים.</small>
              <div id="update-fields-container">
                  <div class="update-pair">
                      <input type="number" name="updates[id][]" placeholder="מזהה ID">
                      <input type="number" name="updates[points][]" step="any" placeholder="נקודות (לעדכון בלבד)">
                  </div>
              </div>
              <button type="button" id="add-update-field">הוסף שדה מזהה/נקודות</button>
      
              <div class="submit-row">
                  <button type="submit" name="action" value="check" class="btn-check">בדוק מצב נקודות</button>
                  <button type="submit" name="action" value="update" class="btn-update">בצע עדכון נקודות</button>
                  <button type="submit" name="action" value="reset_selected" class="btn-reset-selected">איפוס מזהים נבחרים</button>
                  <button type="submit" name="action" value="reset_all" class="btn-reset-all" onclick="return confirm('למחוק את כל הנקודות לכל המזהים? פעולה זו בלתי הפיכה.');">איפוס כל המזהים</button>
              </div>
          </form>
      
          <?php if (!empty($error)): ?>
              <div class="msg error"> <?= htmlspecialchars($error) ?> </div>
          <?php elseif (!empty($success)): ?>
              <div class="msg success"> <?= htmlspecialchars($success) ?> </div>
          <?php endif; ?>
      </body>
      </html>
      

      בהצלחה!

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

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

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

      @הבוס-הגדול אצלי ג"כ הרוב חזר, (כלומר תתי שלוחות חזרו), אבל השלוחות הראשיות לא חזרו!!!

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

      יש מידע למאן דהו מה יש לעשות בעניין?

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

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

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

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

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

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

      אבל כרגע אפילו בתשלום לא שמענו על אפשרות כזו.

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

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

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

      דעתכם??

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

      @צבי-ד-צ כתב בעדכונים בנוגע לקריסת השרתים של ימות מאמצע הלילה !!!:

      אז אל דאגה מידי

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

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

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

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

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

      ניתן ליצור קשר במייל: A0548518660@GMAIL.COM
      תודה רבה!

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @שמואל

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

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

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

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

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

      תודה רבה וגמר חתימה טובה!!

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

      @ז-למאן תודה רבה על הנכונות לסייע!!
      מה שאני זקוק לו הוא: שבתוצאה הסופית יהיו בקוד 2 אופציות:

      1. שתהיה אפשרות בקוד להפעיל אותו בפקודה מהירה (לינק של פקודה אחת בלבד), שבה אוכל להוסיף (או להפחית, לפי מה שאבחר) נקודות מכל משתמש ומשתמש כפי שאכניס בפרמטרים שלו,

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

      [דוגמא לקוד כזה בנושא אחר לגמרי, בעניין העתקת מספרים מרשי"ת A לרשי"ת B ראה בסוף השרשור בקישור דלהלן:
      פקודה מהירה להעתקת כל המספרים מרשי"ת X לרשי"ת Y]



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

      צריך לקבל את תוכן הקובץ על ידי הפקודה הבאה שים לב לשים משתנים ב $did $pass

      https://www.call2all.co.il/ym/api/GetTextFile?token=$did:$pass&what=ivr2:Points/points_total.ini

      ואז לפרק אותו
      בPHP יש פקודות לפרוק הערך
      זה נראה כך

      digits-0502884999-points_total=20

      וזה אומר ש digits זה סוג הזהוי עליו נשמר הנקודות ו0502884999 זה תוכן הזהוי וה20 שאחרי ה= זה כמות הנקודות
      על ידי PHP אתה פשוט הופך את זה למערך כאשר כל שורה זה איבר
      ואז עובר בלולאה ומפרק את זה לשלושה משתנים כאשר ה- מפריד בין המשתנים ובודק במשתנה האמצאי אם זה המספר שאתה מחפש על ידי תנאי אם כן אתה מחלק את המשתנה השלישי לשתי משתנים לפני ה= ואחרי ועושה תרגיל חישוב של מה שאחרי השווה לדוגמה +1
      ואז אתה מחבר שוב את חלקי האיבר המעודכנים על ידי משתנה חדש המכיל את שלושת החלקים לאחר החישוב ופשוט מעדכן את השורה הזו במערך
      ואז אתה מחזיר את המערך לטקסט כאשר בין איבר לאיבר %0A ואז אתה פשוט כותב את הקובץ מחדש

      תודה רבה!!
      וגמר חתימה טובה לכולם!!

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

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

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

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

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

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

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @מנסה כתב באבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻:

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

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

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

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

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

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @מנסה כתב באבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻:

      או בקיצור הולך להישרף לי חודש מהחיים על השינוי הזה

      להישרף לך ולעוד אלפי לקוחות...

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

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

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

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

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

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

      @שמואל
      ועל אף שאינני מתכנת, אני מרשה לעצמי לשער: שימות המשיח יכולים לבנות את האופצייה לתת ללקוח לבחור האם מעוניין באבטחה הכפולה, אם לאו, על ידי כמה שעות עבודה בודדות אצלם בפיתוח, ולכל היותר עשר שעות,

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

      @שמואל
      א. ישנם בעלי מערכות שאינם מתכנתים בעצמם, אך הקימו בעבר מערכת מורכבת מאוד שמבוססת כולה על API ע"י מתכנת מקצועי בתשלום נכבד,

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

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

      • ולגביהם לא יעזור מה שאתם בודאי תטרחו ליידע את המשתמשים (המתכנתים), כיצד יש לבצע את ההתאמות מבחינה טכנית, - כיון שעדיין המתכנת יבקש מהם תשלום על העבודה / וגם לא תמיד למתכנת יש זמן פנוי. - ולמעשה זה מצב לא נעים שיש להם באגים במערכת מדי תקופה.

      • השאלה היא, מדוע שלא יהיה אפשרי, למי שמעוניין בכך, להגדיר באתר שאינו מעוניין באימות החדש, ושהאימות החדש לא ישפיע במערכת שלו כלל על כל הפקודות שנשלחות ב API ??

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

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




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

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

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

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

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

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

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ז
      זאביק
    • RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻

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

      67f54d41-dacf-46bf-a735-1dfa7ed5ce39-תמונה.png

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