• פוסט מסודר לנותני שירות בניית מערכות בתשלום

    נעוץ
    87
    10 הצבעות
    87 פוסטים
    3k צפיות
    א
    @א-תורת-מרן @אברהם-מנס תרשום את הפרטים שלך ליצירת קשר בטופס עכשיו נזכרתי שאתה לא מופיע בו יש לי ב"ה מספיק עבודה במקומות קבועים, כך שאין לי זמן לחדשים. וזו הסיבה שפתחתי את הפוסט, שמי שמבקש אוכל להפנות אותו לאחרים. תודה רבה
  • קוד אישי

    31
    0 הצבעות
    31 פוסטים
    614 צפיות
    י
    @אA בטח עדיין לא הצלחתי לעשות את זה
  • העלאת קבצים באתר החדש יוצרת ספריות

    לא נפתר
    3
    0 הצבעות
    3 פוסטים
    14 צפיות
    ב
    כתב בהעלאת קבצים באתר החדש יוצרת ספריות: , טעיתי. גם בשיטה זו עדיין יוצר ספריות, עם קובץ קול 000.
  • העלאת קבצים באתר החדש

    4
    0 הצבעות
    4 פוסטים
    10 צפיות
    ב
    מה יהיה עם הבעיה של 'הופך לתיקיה'? זה מתסכל. ואם תנסה להשתמש באתר הישן אתה לא יכול ככה להשתמש בביטול מספור אוטומטי. מה יהיה הסוף עם זה............
  • מודול ההתראות: חדש וייחודי מבית ימות המשיח

    18
    2 הצבעות
    18 פוסטים
    271 צפיות
    B
    @המומחה כן, כאילו אם אני זה כולם
  • צינתוקים

    10
    0 הצבעות
    10 פוסטים
    22 צפיות
    מ
    @BEN-ZION כתב בצינתוקים: @מהמם זה מעביר את השליחת צינתוק לשלוחה נפרדת לא לשלוחה של ההקלטות ואז הוא יוכל להקליט ותחסום לו את הגישה לצינתוקים תודה רבה רבה עזרת לי מאוד מאוד
  • עזרה

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

    3
    0 הצבעות
    3 פוסטים
    26 צפיות
    ע
    @קול-הנשמה יש את זה: https://f2.freeivr.co.il/post/176080 ויש את זה: https://f2.freeivr.co.il/post/164334 הראשון מיועד רק עבור קבצי שמע, הוא נותן מידע מדוייק כמה כל משתמש שמע מכל קובץ שמע במערכת והשני נותן מידע כללי על עצם ההימצאות בשלוחות, מידע מפורט מאד על כל הכניסות והיציאות מכל השלוחות אבל לא על כמה האזינו מכל קובץ שמע שכאמור בשביל זה יש את הראשון רק שימו לב: השני עובד בכל המערכות, אבל הראשון יכול לעבוד רק במערכות בהם מוגדר שמירת קובץ דוח יומי (יש להגדיר בקובץ ivr.ini את ההגדרה: log_playback_play_stop=yes ).
  • תגובות לצינתוק ממספר אחר בחינם!! 💫💬

    12
    1 הצבעות
    12 פוסטים
    296 צפיות
    ל
    @אA כן לא רשמי בהקלטה מעבר למערכת אחרת מועבר לשלוחה אחרת זה כאילו מתקשר לשם
  • 0 הצבעות
    12 פוסטים
    56 צפיות
    א
    @אוריה-דניאלי-0 @ירמיהו-זנגר ודרך אגב, יש אפשרות לטפל במשימות דרך הטלפון...
  • להכניס/להזמין כמות מספרים לרשימת תפוצה

    3
    0 הצבעות
    3 פוסטים
    11 צפיות
    ל
    @נהוראי לרשימת תפוצה כן לרשימת צינתוקים לט
  • 0 הצבעות
    4 פוסטים
    15 צפיות
    ל
    @יעקב-יצחק גם מתמכים פון זה השרת של עזר פון תשאל את מתמכים פון אולי יסכים
  • מערכת מכירות לגוגל שיטס

    נפתר
    134
    0 הצבעות
    134 פוסטים
    125 צפיות
    מ
    @יב כן הכל טוב תודה רבה
  • מחיקת הזמנה ממערכת מכירת ע"י מק"ט

    נפתר
    10
    0 הצבעות
    10 פוסטים
    17 צפיות
    מ
    @עידו בסדר נראה לי שהסתדרתי
  • במודולי המבחנים - האם יש אופציה לשמוע איזה מבחנים חסרים?

    19
    0 הצבעות
    19 פוסטים
    90 צפיות
    B
    @TARR בניתי לך קוד בסיסי HTML תעדכן אם זה טוב לך אפשר לעשות את זה גם אוטומטי בגוגל סקריפט זה בודק את כל הדוחות ברשימת השלוחות שתכניס הוספתי גם חלונית לבחירת שם למבחן ואז זה אומר לו חסר לך מבחן X בשלוחה Y נתיב להעלאה צריך שלוחה כזו זה מעלה אוטמטי קובץ בשם שישמיע לכל אחד הזיהוי הוא הטלפון <!DOCTYPE html> <html lang="he" dir="rtl"> <head> <meta charset="UTF-8"> <title>מערכת בדיקת מבחנים - עם שמירה ואקסל</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script> <style> body { font-family: 'Segoe UI', Arial, sans-serif; background-color: #eef2f3; margin: 0; padding: 20px; direction: rtl; } .container { max-width: 1100px; margin: auto; background: white; padding: 25px; border-radius: 15px; box-shadow: 0 8px 30px rgba(0,0,0,0.1); } h2 { color: #1a73e8; text-align: center; margin-top: 0; } .setup-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; background: #f8f9fa; padding: 15px; border-radius: 8px; } .input-group { display: flex; flex-direction: column; gap: 5px; } .main-grid { display: grid; grid-template-columns: 1fr 2fr; gap: 20px; } .column-box { display: flex; flex-direction: column; gap: 10px; } .pair-inputs { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } label { font-weight: bold; color: #555; font-size: 14px; } input, textarea { padding: 10px; border: 1px solid #ccc; border-radius: 6px; font-size: 14px; transition: all 0.2s; } input:focus, textarea:focus { border-color: #1a73e8; outline: none; box-shadow: 0 0 5px rgba(26,115,232,0.2); } .controls { margin-top: 20px; display: grid; grid-template-columns: 1fr 1fr; gap: 15px; } button { padding: 12px; border: none; border-radius: 8px; cursor: pointer; font-size: 16px; font-weight: bold; transition: opacity 0.2s; } .btn-run { background-color: #27ae60; color: white; } .btn-excel { background-color: #f39c12; color: white; } button:hover { opacity: 0.9; } #log { margin-top: 20px; padding: 15px; background: #1e1e1e; color: #dcdcdc; border-radius: 8px; font-family: 'Courier New', monospace; font-size: 13px; max-height: 200px; overflow-y: auto; line-height: 1.4; } .success { color: #51cf66; } .error { color: #ff6b6b; } .file-input-wrapper { margin-bottom: 10px; } </style> </head> <body> <div class="container"> <h2>ניהול מבחנים חסרים (V3)</h2> <div class="setup-grid"> <div class="input-group"> <label>טוקן API:</label> <input type="text" id="apiToken" oninput="saveData()" placeholder="הכנס טוקן..."> </div> <div class="input-group"> <label>נתיב העלאה (למשל ivr2:1/):</label> <input type="text" id="uploadPath" oninput="saveData()" placeholder="ivr2:5/"> </div> </div> <div class="main-grid"> <div class="column-box"> <label>מספרי טלפון (עמודה A):</label> <div class="file-input-wrapper"> <input type="file" id="excelFile" accept=".xlsx, .xls, .csv" style="font-size: 12px;"> </div> <textarea id="phones" rows="12" oninput="saveData()" placeholder="הדבק מספרים או טען אקסל..."></textarea> </div> <div class="column-box"> <label>מבחנים (שלוחה מול שם המבחן):</label> <div class="pair-inputs"> <textarea id="extensions" rows="15" oninput="saveData()" placeholder="שלוחות (עמודה B)"></textarea> <textarea id="testNames" rows="15" oninput="saveData()" placeholder="שמות מבחנים (עמודה C)"></textarea> </div> </div> </div> <div class="controls"> <button class="btn-excel" onclick="document.getElementById('excelFile').click()">טען קובץ אקסל</button> <button class="btn-run" onclick="startProcess()">הרץ בדיקה וייצור TTS</button> </div> <div id="log">מוכן לפעולה. כל הנתונים נשמרים אוטומטית בדפדפן.</div> </div> <script> const API_BASE = "https://private.call2all.co.il/ym/api/"; // --- שמירה וטעינה מהזיכרון --- window.onload = () => { const saved = JSON.parse(localStorage.getItem('gemini_netfree_data') || '{}'); if (saved) { document.getElementById('apiToken').value = saved.token || ''; document.getElementById('uploadPath').value = saved.path || ''; document.getElementById('phones').value = saved.phones || ''; document.getElementById('extensions').value = saved.extensions || ''; document.getElementById('testNames').value = saved.testNames || ''; } }; function saveData() { const data = { token: document.getElementById('apiToken').value, path: document.getElementById('uploadPath').value, phones: document.getElementById('phones').value, extensions: document.getElementById('extensions').value, testNames: document.getElementById('testNames').value }; localStorage.setItem('gemini_netfree_data', JSON.stringify(data)); } // --- טיפול בקובץ אקסל --- document.getElementById('excelFile').addEventListener('change', function(e) { const file = e.target.files[0]; if (!file) return; const reader = new FileReader(); reader.onload = function(e) { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, {type: 'array'}); const firstSheet = workbook.Sheets[workbook.SheetNames[0]]; const json = XLSX.utils.sheet_to_json(firstSheet, {header: 1}); // לוקח את עמודה A (אינדקס 0) מכל שורה const phoneList = json.map(row => row[0]).filter(cell => cell && cell.toString().trim().length > 5); document.getElementById('phones').value = phoneList.join('\n'); saveData(); addLog(`נטענו ${phoneList.length} מספרי טלפון מהקובץ`, 'success'); }; reader.readAsArrayBuffer(file); }); function addLog(msg, type = '') { const logDiv = document.getElementById('log'); const color = type === 'error' ? 'error' : (type === 'success' ? 'success' : ''); logDiv.innerHTML += `<div class="${color}">[${new Date().toLocaleTimeString()}] ${msg}</div>`; logDiv.scrollTop = logDiv.scrollHeight; } // --- הפעולה המרכזית --- async function startProcess() { const token = document.getElementById('apiToken').value.trim(); const uploadPath = document.getElementById('uploadPath').value.trim(); const phones = document.getElementById('phones').value.split('\n').map(s => s.trim()).filter(s => s); const extensions = document.getElementById('extensions').value.split('\n').map(s => s.trim()).filter(s => s); const testNames = document.getElementById('testNames').value.split('\n').map(s => s.trim()).filter(s => s); if (!token || !uploadPath || phones.length === 0) { alert("חסרים נתונים להרצה"); return; } addLog("מתחיל סריקה..."); let missingData = {}; phones.forEach(p => missingData[p] = []); for (let i = 0; i < extensions.length; i++) { const ext = extensions[i]; const name = testNames[i] || `מבחן ${ext}`; addLog(`בודק שלוחה ${ext}...`); try { const res = await fetch(`${API_BASE}RenderYMGRFile?token=${token}&wath=ivr2:${ext}/ExaminationAmericanLogOK.ymgr&convertType=json&notLoadLang=1`); const json = await res.json(); if (json.responseStatus === "OK") { const logs = json.data || []; phones.forEach(phone => { const found = logs.some(row => String(row.EnterId).trim() === phone); if (!found) missingData[phone].push(`${name} בשלוחה ${ext}`); }); } } catch (e) { addLog(`שגיאה בשלוחה ${ext}`, 'error'); } } addLog("מעלה קבצים..."); for (const phone of phones) { let text = missingData[phone].length > 0 ? "חסרים לך מבחנים: " + missingData[phone].join(", ") : "ביצעת את כל המבחנים."; await uploadTTS(token, uploadPath, phone, text); } addLog("הסתיים!", 'success'); } async function uploadTTS(token, basePath, phone, text) { const formData = new FormData(); formData.append('token', token); formData.append('path', (basePath.endsWith('/') ? basePath : basePath + '/') + phone + '.tts'); formData.append('tts', '1'); formData.append('qqfile', new Blob([text], { type: 'text/plain' }), phone + '.tts'); try { const res = await fetch(`${API_BASE}UploadFile`, { method: 'POST', body: formData }); const j = await res.json(); if(j.responseStatus === "OK") addLog(`הועלה: ${phone}`, 'success'); } catch (e) {} } </script> </body> </html>
  • המשך בנושא תפריטים בשפות שונות

    3
    0 הצבעות
    3 פוסטים
    17 צפיות
    ב
    האם אפשר ליצור שלוחה בימות המשיח שתשמיע קבצים בקול הלשון? האם לזאת כוונתך?
  • ENTERID ברמת שלוחה ולא ברמת קו

    9
    0 הצבעות
    9 פוסטים
    54 צפיות
    B
    @Ppgishonim גדרת מיקום הקובץ ברירת מחדל מתייחס לקובץ ListAllInformation.ini הנמצא בתיקיה בשם EnterID שתחת התפריט הראשי. כדי שיטען וישמור נתונים מהשלוחה הנוכחית, יש להגדיר list_all_information_folder=this_folder כדי שיתייחס לשלוחה אחרת לבחירתכם, יש להגדיר list_all_information_folder=/1/1 בדוגמה, יתייחס לקובץ הנמצא בתיקייה 1/1 מהתפריט הראשי
  • קבלת נקודות על הקלטה במודל record

    11
    0 הצבעות
    11 פוסטים
    12 צפיות
    י
    @לימוד-בתורת-מרן שמחתי לעזור רק שנראה לי שאם כל פעם תבקש שיכתבו לך ויגדירו לך תישר נכה כל החיים....
  • 1 הצבעות
    39 פוסטים
    86 צפיות
    C
    @לימוד-בתורת-מרן א"א לדלג על האימות עם מודול תור, אפשר לבצע את האימות עם מודול תור. Spoiler קח דוגמה לפוסט מסודר: אמרתי שכשיהיה זמן - אצור קריינות לכל התהליך של האימות, בנוסף אמרתי שבמודול תור ניתן לבצע את האימות וכך בעצם לעקוף את המנגנון.
  • 0 הצבעות
    16 פוסטים
    62 צפיות
    B
    @הפצת-התורה כתוב ככה P050+1=סוכה P050+2=חגיגה P050+3=ראש השנה