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

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

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

    2
    0 הצבעות
    2 פוסטים
    19 צפיות
    א
    @קול-הנשמה יש באתר הניהול של חדרי הועידה
  • תגובות לצינתוק ממספר אחר בחינם!! 💫💬

    11
    1 הצבעות
    11 פוסטים
    281 צפיות
    א
    @פיתה רק לדעת שהבנתי נכון. מדובר בהפעלת צינתוק במערכת אחרת?
  • להכניס/להזמין כמות מספרים לרשימת תפוצה

    3
    0 הצבעות
    3 פוסטים
    10 צפיות
    ל
    @נהוראי לרשימת תפוצה כן לרשימת צינתוקים לט
  • קוד אישי

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

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

    נפתר
    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>
  • מודול ההתראות: חדש וייחודי מבית ימות המשיח

    15
    2 הצבעות
    15 פוסטים
    242 צפיות
    A
    @האנטר כתב במודול ההתראות: חדש וייחודי מבית ימות המשיח: @AKNV כרגע מנתב לפי ערך DID_GO_TO כן אבל זיהוי המספר המחויג כאשר עוברים למערכת הוא תמיד המספר הראשי ולא המספר המצנתק (אם הוא לא המספר הראשי)
  • נושא זה נמחק!

    נפתר
    2
    0 הצבעות
    2 פוסטים
    5 צפיות
  • המשך בנושא תפריטים בשפות שונות

    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 פוסטים
    82 צפיות
    C
    @לימוד-בתורת-מרן א"א לדלג על האימות עם מודול תור, אפשר לבצע את האימות עם מודול תור. Spoiler קח דוגמה לפוסט מסודר: אמרתי שכשיהיה זמן - אצור קריינות לכל התהליך של האימות, בנוסף אמרתי שבמודול תור ניתן לבצע את האימות וכך בעצם לעקוף את המנגנון.
  • 0 הצבעות
    16 פוסטים
    62 צפיות
    B
    @הפצת-התורה כתוב ככה P050+1=סוכה P050+2=חגיגה P050+3=ראש השנה
  • הקלטת הודעה לשלוחה 'השמעת קבצים'

    12
    0 הצבעות
    12 פוסטים
    38 צפיות
    ר
    @מושקה תודה.
  • בממשק החדש - איך מייצאים את הדוחות לאקסל?

    7
    0 הצבעות
    7 פוסטים
    64 צפיות
    D
    @זרח ממש תודה!!