• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות
    1. דף הבית
    2. lavitoren הטי"ל
    3. נושאים
    L
    מנותק
    • פרופיל
    • עוקב אחרי 0
    • עוקבים 1
    • נושאים 14
    • פוסטים 107
    • קבוצות 0

    נושאים

    • L

      הגיע הזמן לומר תודה!!!! 😃🙏

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      7
      3 הצבעות
      7 פוסטים
      286 צפיות
      L
      @פלפל-שחור Spoiler סליחה לא התכוונתי לפגוע והורדתי את ה'גולם' התכוונתי למטרה טובה בכל אופן למה אתה @פלפל-שחור כתב בהגיע הזמן לומר תודה!!!! : חולק על הגישה מה לא טוב או איזה גישה צריך להיות לדעתך??!
    • L

      איטיות בכלל הקו/קווים? 📠 וניתוקים ☎ ואי אפשר להתקשר????! ❎😒☹

      במעקב התעלמות מתוזמן נעוץ נעול הועבר באגים במערכת
      24
      1 הצבעות
      24 פוסטים
      365 צפיות
      L
      @קו-המוסיקה התכוונתי נטו מהדקות לא מהעיריות וכו ששם זה ביג מאני
    • L

      שמיעת כמות המספרים ששמעו הודעה 🎰🎧📡 רישום אמיתי 📊📉✔

      במעקב התעלמות מתוזמן נעוץ נעול הועבר בקשות לפיתוח
      18
      6 הצבעות
      18 פוסטים
      340 צפיות
      ק
      @lavitoren-הטי-ל זה מזכיר לי את הסיוט המעצבן אני עובר כל פעם מחדש על מחיקת הודעה, במיוחד אם יש בו תגובות כי התגובות רשומות תחת מספר הקובץ וזה נשאר גם אם הקובץ לא קיים
    • L

      שתי הגדרות בהשמעת קבצים משהו ב"פשטיס"

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      3
      0 הצבעות
      3 פוסטים
      40 צפיות
      L
      @יב תודה תודה תודה אין מילים בפי להודות יישר כח ע-צום א-ש-ר-י-ך (כמובן זה עובד)
    • L

      עובד היום או לא?

      במעקב התעלמות מתוזמן נעוץ נעול הועבר טיפים עצות והדגמות מהמשתמשים
      8
      0 הצבעות
      8 פוסטים
      122 צפיות
      L
      @קו-המוסיקה
    • L

      השמעת קבצים אם אלפי קבצים כשידור חי📡🎙🎧

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      9
      0 הצבעות
      9 פוסטים
      199 צפיות
      פ
      @lavitoren-הטי-ל אני חושב שבמקום לשים רק על המספר קישור תשים על כל הטקסט אבל עבודה טובה!!
    • L

      בקשת עזרה - שחזור מסל מחזור מלפני חודשים רבים 3-6 בערך (מוכן לשלם בעת הצורך)

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      18
      0 הצבעות
      18 פוסטים
      198 צפיות
      L
      @צבי-ד-צ לצערי אבל תודה על ההצעות השונות
    • L

      השגת רשימות אקסל שונות 🎰💻⌨📠

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      1
      0 הצבעות
      1 פוסטים
      42 צפיות
      אין תגובות
    • L

      העלאת תקיות שלימות בצורה מסודרת להפליא בלי להתאמץ😏🎮🕹🥱

      במעקב התעלמות מתוזמן נעוץ נעול הועבר בקשות לפיתוח
      26
      2 הצבעות
      26 פוסטים
      821 צפיות
      L
      @אA @אA כתב בהעלאת תקיות שלימות בצורה מסודרת להפליא בלי להתאמץ🥱: הקוד המעודכן: <!DOCTYPE html> <html lang="he" dir="rtl"> <head> <meta charset="UTF-8"> <title>מעלה תקיות וקבצים למערכת - עץ שלוחות</title> <style> :root { --primary: #3498db; --success: #2ecc71; --danger: #e74c3c; --bg: #f4f7f6; --dark: #2c3e50; } body { font-family: 'Segoe UI', Arial, sans-serif; margin: 0; background-color: var(--bg); color: var(--dark); text-align: right; } .wrapper { max-width: 900px; margin: 40px auto; padding: 0 20px; position: relative; } .reset-btn { position: absolute; top: -10px; left: 20px; background: var(--danger); color: white; border: none; padding: 8px 15px; border-radius: 5px; cursor: pointer; font-size: 14px; font-weight: bold; transition: all 0.3s; } .card { background: white; padding: 30px; border-radius: 15px; box-shadow: 0 10px 25px rgba(0,0,0,0.05); margin-bottom: 25px; border: 1px solid #eee; } h2 { margin-top: 0; color: var(--dark); border-bottom: 3px solid var(--primary); display: inline-block; padding-bottom: 10px; } .grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 20px; } .input-group { display: flex; flex-direction: column; gap: 8px; } label { font-weight: bold; font-size: 14px; } input { padding: 12px; border: 2px solid #eee; border-radius: 8px; font-size: 16px; } .full-width { grid-column: 1 / -1; } .btn-main { background: var(--primary); color: white; border: none; padding: 15px; border-radius: 8px; cursor: pointer; font-size: 18px; font-weight: bold; width: 100%; transition: all 0.3s; } .btn-main:hover { background: #2980b9; } .btn-main:disabled { background: #bdc3c7; cursor: not-allowed; } .progress-wrapper { margin-top: 25px; display: none; padding: 15px; background: #fafafa; border-radius: 10px; border: 1px solid #eee; } .progress-container { width: 100%; background: #e0e0e0; height: 35px; border-radius: 20px; overflow: hidden; position: relative; border: 1px solid #ccc; } .progress-bar { height: 100%; width: 0%; background: linear-gradient(45deg, #2ecc71 25%, #27ae60 25%, #27ae60 50%, #2ecc71 50%, #2ecc71 75%, #27ae60 75%, #27ae60); background-size: 40px 40px; animation: move-stripes 2s linear infinite; transition: width 0.4s; } @keyframes move-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress-text { position: absolute; width: 100%; text-align: center; top: 0; line-height: 35px; color: #fff; font-weight: 900; text-shadow: 1px 1px 2px rgba(0,0,0,0.5); } .log-box { background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 10px; font-family: 'Consolas', monospace; height: 300px; overflow-y: auto; font-size: 13px; line-height: 1.6; border: 4px solid #333; } .log-info { color: #5dade2; } .log-success { color: #58d68d; font-weight: bold; } .log-error { color: #ec7063; } .log-warn { color: #f4d03f; } </style> </head> <body> <div class="wrapper"> <button class="reset-btn" onclick="location.reload()">✕ איפוס תהליך</button> <div class="card"> <h2>מעלה תקיות וקבצים למערכת - עץ שלוחות</h2> <div class="grid"> <div class="input-group"> <label>טוקן:</label> <input type="text" id="token"> </div> <div class="input-group"> <label>שלוחת יעד:</label> <input type="text" id="targetPath"> </div> <div class="input-group" style="flex-direction: row; align-items: center; gap: 5px;"> <input type="checkbox" id="autoFileNum"> <label for="autoFileNum">מספור קבצים (אוטומטי)</label> </div> <div class="input-group" style="flex-direction: row; align-items: center; gap: 5px;"> <input type="checkbox" id="autoFolderNum"> <label for="autoFolderNum">מספור שלוחות (אוטומטי)</label> </div> <div class="input-group full-width"> <label>בחירת תיקייה:</label> <input type="file" id="folderInput" webkitdirectory> </div> <button id="startBtn" class="btn-main" onclick="processUpload()">התחל העלאה</button> </div> <div class="progress-wrapper" id="progBox"> <div class="progress-container"> <div class="progress-bar" id="progBar"></div> <div class="progress-text" id="progText">0%</div> </div> </div> </div> <div class="card"> <div class="log-box" id="logBox">ממתין...</div> </div> </div> <script> const CHUNK_SIZE = 4 * 1024 * 1024; const MAX_SINGLE_FILE = 50 * 1024 * 1024; const sleep = ms => new Promise(res => setTimeout(res, ms)); const generateUUID = () => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => { let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); function addLog(msg, type = "info") { const logBox = document.getElementById('logBox'); logBox.innerHTML += `<div class="log-${type}">> ${msg}</div>`; logBox.scrollTop = logBox.scrollHeight; } async function processUpload() { const token = document.getElementById('token').value.trim(); const targetPath = document.getElementById('targetPath').value.trim().replace(/\/$/, ""); const fileList = document.getElementById('folderInput').files; const autoFileNum = document.getElementById('autoFileNum').checked; const autoFolderNum = document.getElementById('autoFolderNum').checked; if (!token || !fileList.length || !targetPath) { alert("מלא פרטים"); return; } document.getElementById('startBtn').disabled = true; document.getElementById('progBox').style.display = 'block'; const folderStructure = {}; for (let file of fileList) { const parts = file.webkitRelativePath.split('/'); parts.shift(); const fileName = parts.pop(); const relPath = parts.join('/'); if (!folderStructure[relPath]) folderStructure[relPath] = []; folderStructure[relPath].push({ name: fileName, file: file }); } if (!folderStructure[""]) folderStructure[""] = []; const sortedPaths = Object.keys(folderStructure).sort((a,b) => (a===""?-1:b===""?1:a.split('/').length - b.split('/').length)); // לוגיקת מספור שלוחות const folderRenameMap = {}; if (autoFolderNum) { sortedPaths.forEach(path => { if (path === "") return; const parts = path.split('/'); const mappedParts = []; parts.forEach((part, index) => { const parentPath = parts.slice(0, index).join('/'); const siblings = sortedPaths.filter(p => p !== "" && p.split('/').length === index + 1 && p.split('/').slice(0, index).join('/') === parentPath).sort(); mappedParts.push(siblings.indexOf(parts.slice(0, index + 1).join('/')) + 1); }); folderRenameMap[path] = mappedParts.join('/'); }); } for (let i = 0; i < sortedPaths.length; i++) { const relPath = sortedPaths[i]; const finalSubPath = (autoFolderNum && relPath !== "") ? folderRenameMap[relPath] : relPath; const currentIvrPath = finalSubPath ? `${targetPath}/${finalSubPath}` : targetPath; const files = folderStructure[relPath]; // ext.ini const extFileObj = files.find(f => f.name.toLowerCase().split('.')[0] === 'ext'); let extContent = extFileObj ? await extFileObj.file.text() : (relPath === "" ? "type=menu" : "type=playfile"); await uploadFileNormal(token, `${currentIvrPath}/ext.ini`, new Blob([extContent], {type: 'text/plain'})); addLog(`שלוחה ${currentIvrPath} הוגדרה`, "success"); files.sort((a, b) => a.name.localeCompare(b.name, undefined, {numeric: true})); let audioCount = 0; for (let fObj of files) { if (fObj.name.toLowerCase().split('.')[0] === 'ext') continue; let destName = fObj.name; let blob = fObj.file; if (/\.(wav|mp3|ogg|wma)$/i.test(fObj.name)) { destName = (autoFileNum ? audioCount.toString().padStart(3, '0') : fObj.name.replace(/\.[^/.]+$/, "")) + ".wav"; audioCount++; } else if (fObj.name.toLowerCase().includes('.tts')) { destName = fObj.name.split('.')[0] + ".tts"; blob = new Blob([await fObj.file.text()], {type: 'text/plain'}); } if (blob.size > MAX_SINGLE_FILE) { await uploadFileChunked(token, currentIvrPath, destName, blob); } else { await uploadFileNormal(token, `${currentIvrPath}/${destName}`, blob); } addLog(`הועלה: ${destName}`, "info"); } const pct = Math.round(((i + 1) / sortedPaths.length) * 100); document.getElementById('progBar').style.width = pct + '%'; document.getElementById('progText').innerText = pct + '%'; } addLog("העלאה הסתיימה בהצלחה!", "success"); document.getElementById('startBtn').disabled = false; } async function uploadFileNormal(token, fullPath, blob) { const fd = new FormData(); fd.append('token', token); fd.append('path', `ivr2:${fullPath}`); fd.append('qqfile', blob, fullPath.split('/').pop()); const res = await fetch(`https://www.call2all.co.il/ym/api/UploadFile`, { method: 'POST', body: fd }); return await res.json(); } async function uploadFileChunked(token, folderPath, fileName, fileBlob) { const uuid = generateUUID(); const totalParts = Math.ceil(fileBlob.size / CHUNK_SIZE); addLog(`מפצל קובץ גדול: ${fileName}`, "warn"); for (let index = 0; index < totalParts; index++) { const start = index * CHUNK_SIZE; const end = Math.min(start + CHUNK_SIZE, fileBlob.size); const chunk = fileBlob.slice(start, end); const fd = new FormData(); fd.append('qquuid', uuid); fd.append('qqpartindex', index); fd.append('qqpartbyteoffset', start); fd.append('qqchunksize', chunk.size); fd.append('qqtotalparts', totalParts); fd.append('qqtotalfilesize', fileBlob.size); fd.append('qqfilename', fileName); fd.append('uploader', 'yemot-admin'); fd.append('qqfile', chunk, fileName); await fetch(`https://www.call2all.co.il/ym/api/UploadFile`, { method: 'POST', body: fd }); } const finalUrl = `https://www.call2all.co.il/ym/api/UploadFile?done&token=${token}&path=ivr2:${folderPath}/${fileName}&qquuid=${uuid}&qqfilename=${fileName}&qqtotalfilesize=${fileBlob.size}&qqtotalparts=${totalParts}`; const res = await fetch(finalUrl, { method: 'POST' }); return await res.json(); } </script> </body> </html> זה
    • L

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

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      1
      2 הצבעות
      1 פוסטים
      116 צפיות
      אין תגובות
    • L

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

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      2
      0 הצבעות
      2 פוסטים
      65 צפיות
      א
      @lavitoren-הטי-ל אתה יכול להשתמש בזה. https://f2.freeivr.co.il/post/142374
    • L

      הירשמות לכמה רשימות צינתוקים בבת אחת

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      11
      0 הצבעות
      11 פוסטים
      215 צפיות
      L
      @אA שכוייח כבר השתמשתי ראה פוסט הזה יישר כח עצום!!
    • L

      מה קרה לאלפון?

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      32
      0 הצבעות
      32 פוסטים
      726 צפיות
      ח
      @מוטי-מוטי-מוטי יכול להיותץ שבמערכות שיש אימות דו שלבי, המוקד החרדי כבר לא יכול להתקין את האלפון אוטומטית, אבל הוא לא מובנה לשגיאה כזאת, לכן כתוב ההתקנה הסתיימה בהצלחה.
    • L

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

      במעקב התעלמות מתוזמן נעוץ נעול הועבר שאלות ועזרה הדדית
      25
      0 הצבעות
      25 פוסטים
      506 צפיות
      ע
      @אאא-יוני אתה מתכוון לזה? https://f2.freeivr.co.il/topic/11290/הודעה-בכניסה-לקו-באיזה-שלוחה-הושארה-הודעה