• השמעת קבצים לפי זיהוי

    2
    0 הצבעות
    2 פוסטים
    27 צפיות
    א
    @BEN-ZION https://f2.freeivr.co.il/post/79975 זה עובד עם EnterID כמובן
  • תור (בטא)

    נפתר
    6
    0 הצבעות
    6 פוסטים
    88 צפיות
    B
    @haiims כתב בתור (בטא): announce-position-limit=01/8/5 announce-position=more strategy=linear musicclass=default זה צריך להיות מוגדר בקובץ queue.ini אצלי מוגדר מעבר לניתוק וזה מנתק
  • שליחת צינתוק בעלות יחידות

    8
    1
    0 הצבעות
    8 פוסטים
    60 צפיות
    מ
    @haiims כתב בשליחת צינתוק בעלות יחידות: @מוטי-לוין לפתוח שלוחה של צינתוק להכניס את ההגדרה הזאת ? (לא משתמש בapi לכן הרבה שאלות .) כי אני משאיר הודעה בשלוחת הקלטות זה ישאיר צינתוק? לא צריך לזה API אפשר עם מודל הפעלה מהירה לקמפיין ולהוסיף הגדרה שיפעיל רק צינתוק campaign_run_tzintuk=yes
  • סטטיסטיקות במערכת, איך?

    8
    0 הצבעות
    8 פוסטים
    114 צפיות
    B
    @מתעמק @קו-המוסיקה מצורף קוד HTML בסיסי לחישוב <!DOCTYPE html> <html lang="he" dir="rtl"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>מערכת סיכום דקות - ימות המשיח</title> <style> body { font-family: Arial, sans-serif; background: #f0f2f5; margin: 0; padding: 20px; color: #333; } .container { max-width: 1200px; margin: auto; background: #fff; padding: 25px; border-radius: 15px; box-shadow: 0 8px 30px rgba(0,0,0,0.1); } h1 { margin-top: 0; color: #1a4388; text-align: center; border-bottom: 2px solid #eee; padding-bottom: 15px; } .setup-panel { background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid #e2e8f0; margin-bottom: 20px; display: flex; flex-wrap: wrap; gap: 15px; align-items: flex-end; } .input-group { display: flex; flex-direction: column; gap: 5px; } label { font-weight: bold; font-size: 14px; } input, select { padding: 10px; border: 1px solid #cbd5e1; border-radius: 8px; font-size: 14px; } .filter-panel { margin-bottom: 15px; display: flex; gap: 10px; } #filterInput { flex: 1; padding: 12px; border: 2px solid #1a4388; border-radius: 8px; font-size: 16px; } button { border: none; background: #1a4388; color: #fff; padding: 10px 20px; border-radius: 8px; cursor: pointer; font-weight: bold; transition: background 0.2s; } button:hover { background: #133266; } button.secondary { background: #10b981; } button.secondary:hover { background: #059669; } .summary-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-bottom: 20px; } .card { background: #fff; padding: 15px; border-radius: 10px; border: 1px solid #e2e8f0; box-shadow: 0 2px 4px rgba(0,0,0,0.02); text-align: center; } .card .val { font-size: 20px; font-weight: bold; color: #1a4388; display: block; } .card .lbl { font-size: 13px; color: #64748b; } .table-container { overflow-x: auto; max-height: 500px; border: 1px solid #e2e8f0; border-radius: 10px; } table { width: 100%; border-collapse: collapse; background: white; } th { position: sticky; top: 0; background: #1a4388; color: white; padding: 12px; text-align: right; } td { padding: 12px; border-bottom: 1px solid #f1f5f9; } tr:hover { background: #f8fafc; } .error { color: #991b1b; background: #fef2f2; padding: 12px; border-radius: 8px; border: 1px solid #fee2e2; margin: 10px 0; } .success { color: #065f46; background: #ecfdf5; padding: 12px; border-radius: 8px; border: 1px solid #d1fae5; margin: 10px 0; } #textSummary { display: none; margin-top: 20px; padding: 15px; background: #1e293b; color: #f8fafc; border-radius: 10px; font-family: monospace; font-size: 12px; white-space: pre-wrap; } </style> </head> <body> <div class="container"> <h1>ניהול נתוני שיחות - ימות המשיח</h1> <div class="setup-panel"> <div class="input-group"> <label>טוקן API:</label> <input type="password" id="token" placeholder="הכנס טוקן..." /> </div> <div class="input-group"> <label>שנה:</label> <input type="number" id="year" value="2025" style="width: 100px;" /> </div> <div class="input-group"> <label>חודש:</label> <select id="month"> <option value="01">ינואר (01)</option><option value="02">פברואר (02)</option> <option value="03">מרץ (03)</option><option value="04">אפריל (04)</option> <option value="05">מאי (05)</option><option value="06">יוני (06)</option> <option value="07">יולי (07)</option><option value="08">אוגוסט (08)</option> <option value="09">ספטמבר (09)</option><option value="10">אוקטובר (10)</option> <option value="11" selected>נובמבר (11)</option><option value="12">דצמבר (12)</option> </select> </div> <button onclick="fetchData()">משוך נתונים</button> <button class="secondary" onclick="copyToClipboard()">העתק סיכום</button> </div> <div id="statusMessage"></div> <div id="summaryCards" class="summary-cards" style="display:none;"> <div class="card"><span class="val" id="totalExt">0</span><span class="lbl">שלוחות</span></div> <div class="card"><span class="val" id="totalCalls">0</span><span class="lbl">סה"כ שיחות</span></div> <div class="card"><span class="val" id="totalTime">0:00</span><span class="lbl">זמן מצטבר</span></div> <div class="card"><span class="val" id="totalMin">0</span><span class="lbl">דקות סה"כ</span></div> </div> <div class="filter-panel"> <input type="text" id="filterInput" placeholder="חיפוש מהיר לפי מספר שלוחה או שם..." onkeyup="applyFilter()"> </div> <div class="table-container"> <table id="resultsTable"> <thead> <tr> <th>שלוחה</th> <th>כותרת/שם</th> <th>כמות שיחות</th> <th>זמן כולל</th> <th>דקות</th> </tr> </thead> <tbody id="tableBody"> <tr><td colspan="5" style="text-align:center;">הזן טוקן ולחץ על משוך נתונים</td></tr> </tbody> </table> </div> <pre id="textSummary"></pre> </div> <script> let allProcessedData = []; // מחזיק את כל הנתונים המעובדים function showMsg(text, type) { const el = document.getElementById("statusMessage"); el.innerHTML = `<div class="${type}">${text}</div>`; } async function fetchData() { const token = document.getElementById("token").value; const year = document.getElementById("year").value; const month = document.getElementById("month").value; if (!token) { showMsg("אנא הזן טוקן תקני", "error"); return; } const path = `ivr2:Log/LogFolderEnterExit-${year}-${month}.ymgr`; // שימוש ב-wath כפי שנדרש ב-API const url = `https://private.call2all.co.il/ym/api/RenderYMGRFile?token=${token}&wath=${path}&convertType=json&notLoadLang=1`; showMsg("מתחבר לשרת ימות המשיח...", "success"); try { const response = await fetch(url); const result = await response.json(); if (result.responseStatus !== "OK") { showMsg("שגיאה מהשרת: " + (result.message || "קובץ לא נמצא"), "error"); return; } processData(result.data); } catch (err) { showMsg("שגיאת תקשורת: וודא שאין חסימת CORS (נסה להריץ כתוסף או משרת תואם)", "error"); } } function processData(rawData) { if (!rawData || rawData.length === 0) { showMsg("הקובץ ריק מנתונים", "error"); return; } const grouped = {}; let gCalls = 0; let gSeconds = 0; rawData.forEach(row => { const ext = row["Folder"]; const seconds = parseFloat(row["TimeTotal"]) || 0; const title = row["PathTitle"] || row["ValName"] || ""; if (!ext) return; if (!grouped[ext]) { grouped[ext] = { extension: ext, title: title, calls: 0, seconds: 0 }; } grouped[ext].calls++; grouped[ext].seconds += seconds; gCalls++; gSeconds += seconds; }); allProcessedData = Object.values(grouped).sort((a, b) => b.seconds - a.seconds); // עדכון כרטיסים document.getElementById("summaryCards").style.display = "grid"; document.getElementById("totalExt").innerText = allProcessedData.length; document.getElementById("totalCalls").innerText = gCalls; document.getElementById("totalTime").innerText = formatHMS(gSeconds); document.getElementById("totalMin").innerText = (gSeconds / 60).toFixed(1); renderTable(allProcessedData); showMsg("הנתונים עובדו בהצלחה!", "success"); } function renderTable(data) { const tbody = document.getElementById("tableBody"); const textSummary = document.getElementById("textSummary"); tbody.innerHTML = ""; let textPlain = "שלוחה | שם | שיחות | זמן\n---------------------------\n"; data.forEach(item => { const hms = formatHMS(item.seconds); const mins = (item.seconds / 60).toFixed(2); const row = `<tr> <td><strong>${item.extension}</strong></td> <td>${item.title}</td> <td>${item.calls}</td> <td>${hms}</td> <td>${mins}</td> </tr>`; tbody.innerHTML += row; textPlain += `${item.extension} | ${item.title} | ${item.calls} | ${hms}\n`; }); textSummary.textContent = textPlain; } function applyFilter() { const query = document.getElementById("filterInput").value.toLowerCase(); const filtered = allProcessedData.filter(item => item.extension.toLowerCase().includes(query) || item.title.toLowerCase().includes(query) ); renderTable(filtered); } function formatHMS(s) { const h = Math.floor(s / 3600); const m = Math.floor((s % 3600) / 60); const sec = Math.floor(s % 60); return h > 0 ? `${h}:${String(m).padStart(2,'0')}:${String(sec).padStart(2,'0')}` : `${m}:${String(sec).padStart(2,'0')}`; } function copyToClipboard() { const text = document.getElementById("textSummary").textContent; navigator.clipboard.writeText(text).then(() => alert("הסיכום הועתק!")); } </script> </body> </html>
  • מהפך במנוע הצינתוקים

    42
    2 הצבעות
    42 פוסטים
    899 צפיות
    א
    ימות שלחו מייל רישמי שזה הולך להתחיל מעשי בתחילת החודש הבא ואין שם שום התייחסות האם יהיה הגדרה להפעלה/ביטול של זה נבקש כאן מהאחראים ומהעוסקים בדבר שתהיה אפשרות כזו ושכמובן יסודר הענין שיעבור לפי מספר מחויג או לפי הגדרה בשלוחה
  • קבצים חדשים

    נפתר
    9
    0 הצבעות
    9 פוסטים
    132 צפיות
    פ
    @נועם-אלימלך https://f2.freeivr.co.il/topic/16932/מודול-השמעת-הודעה-כשיש-הודעה-חדשה?_=1773515575459
  • 0 הצבעות
    12 פוסטים
    89 צפיות
    U
    @יעקב-יצחק [image: 1773407486515-9bf96442-297f-4c2b-b17e-6b035270acb4-image.png] הקובץ הזה בשלוחה ראשית זה הקובץ של הגדרות השלוחה
  • הגדרת 50 מנהלים בחדר ועידה (confbridge_end_admin_full)

    10
    0 הצבעות
    10 פוסטים
    82 צפיות
    B
    @ע.ג. רק דרך שירות לקוחות תסביר להם את הצורך שיהיה ניתן לדבר עד כניסת המנהל ואז פשוט לא נכנס מנהל מצורף מהתיעוד במקרים מיוחדים ניתן להגדיר שעד כניסת מנהל המאזינים יוכלו לדבר (ולא ישמעו מנגינה). כדי להגדיר זאת יש לפנות לשירות הלקוחות במכתב הסבר. ההגדרה נקראת open_control. במצב זה, כניסת מאזינים לחדר עד כניסת מנהל במצב דיבור, ולאחר כניסת מנהל במצב השתק עם אפשרות לביטול השתקה על ידי המנהל או המאזינים.
  • שלוחה 10 11

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

    4
    0 הצבעות
    4 פוסטים
    47 צפיות
    ק
    @עימוד אז פשוט תגדיר שלוחה של הרשמה לצינתוקים , ותעשה משימה מתוזמנת באתר הישן עם שם הרשימת צינתוקים וזה בעז"ה יהיה בסדר! [image: 1773346889132-%D7%A6%D7%99%D7%9C%D7%95%D7%9D-%D7%9E%D7%A1%D7%9A-2026-03-12-222116.png]
  • 7 שניות שקט בכניסה לשלוחה

    לא נפתר
    11
    0 הצבעות
    11 פוסטים
    74 צפיות
    H
    @בלויא תגזור את ההגדרה ותתקשר לקו תראה עם זה הבעיה. אם לא תדביק שוב. אולי העיכוב זה בגלל המעבר בין שלוחות למרות ש7 שניות זה הרבה
  • מוזיקה בהמתנה

    2
    0 הצבעות
    2 פוסטים
    60 צפיות
    מ
    בס"ד אני מקווה שאין בעייה מצד ימות שאני מפרסם את זה. זה נמצא גם דרך הבקשות רשת משם לקחתי של האתר ניהול. אולי ימות המשיח יעבירו לAPI את התיעוד ויעזור לכולם. (הם גם נראה לי פרסמו את זה פעם) בהצלחה. ניהול מוזיקה בהמתנה באמצעות הAPI במודול Music On Hold. יש לבחור שם שאיתו שתשתמשו בהגדרות בשלוחה על מנת להפעיל את המוזיקה בהמתנה שימו לב, לאחר ביצוע הפעולה תקבלו את השם שבחרתם בתוספת מזהה שנוסף, את השם המלא שתראו כתגובה יש להכניס לשלוחה המוזיקה בהמתנה הינה התוכן של התיקיה בצורה אקראית שימו לב, על השלוחה להיות ריקה מכל קבצים אחרים מלבד קבצי שמע - לרבות קבצי הגדרות ini ו ext.ini! 1. קבלת מוזיקה בהמתנה לפי נתיב (GetMusicOnHoldByPath) משמש לבדיקה האם קיימת מוזיקה בהמתנה בנתיב מסוים ומה הסטטוס שלה. Endpoint: GetMusicOnHoldByPath גוף הבקשה (Payload): path = הנתיב המלא של התיקייה (למשל: ivr2:/1). דוגמת תגובה: { "responseStatus": "OK", "yAfastVersion": "6.7.114", "data": "Y" } הנתון שמתקבל בdata לדוגמא Y זה השם לשים בשלוחה אח"כ בקובץ ext.ini: type=music_on_hold music_on_hold=Y אבל יכול להיות שבAPI תקבל: {"responseStatus":"OK","yAfastVersion":"6.7.114","data":false} שזה אומר שאין קובץ מעודכן. 2. יצירת מוזיקה בהמתנה (CreateMusicOnHolds) משמש להגדרת מוזיקה בהמתנה עבור תיקייה ספציפית. Endpoint: CreateMusicOnHolds גוף הבקשה (Payload): folderPath: הנתיב שבו תוגדר המוזיקה (למשל: ivr2:/1). name: מזהה או שם קובץ המוזיקה (למשל: MyMusic). דוגמת תגובה: { "responseStatus": "OK", "yAfastVersion": "6.7.114", "status": "Z" } הנתון שמתקבל בstatus לדוגמא Z זה השם לשים בשלוחה אח"כ בקובץ ext.ini: type=music_on_hold music_on_hold=Z 3. מחיקת מוזיקה בהמתנה (DeleteMusicOnHolds) משמש להסרת הגדרת מוזיקה בהמתנה קיימת. Endpoint: DeleteMusicOnHolds גוף הבקשה (Payload): name: שם המוזיקה/המזהה שיש למחוק. דוגמת תגובה: { "responseStatus": "OK", "yAfastVersion": "6.7.114", "status": true }
  • 0 הצבעות
    7 פוסטים
    102 צפיות
    C
    @ממוצע יש לי להציע לך ממשק שבנינית למערכת מכירות עפ מקט תיצור קשר ygl32100@gmail.com
  • להיכן צריך להכניס כדי שהמאזינים לא ישמעו את הדירוג

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

    3
    0 הצבעות
    3 פוסטים
    28 צפיות
    פ
    @זאב-הלוי רק בAPl
  • הוספת עמודות בקובץ הזמנת מוצרים מאושרת

    1
    0 הצבעות
    1 פוסטים
    19 צפיות
    אין תגובות
  • 0 הצבעות
    4 פוסטים
    109 צפיות
    9
    @ממוצע כתב במבריקים ? כנסו ! ! איזה זיהוי לעשות בשלוחת ניקוד שיוכלו אח"כ לקנות איתו ? (וכניסה על פי שני זיהויים - טלפוני ומספר ID): 2: מה הרווח של שני המספרים, אם אתה מצליח להוסיף מספר לקובץ ListAllInformation, תעשה כניסה רק על פי זה, ואם הוא לא מזהה את מספר הטלפון - הוא מבקש שיכניס מספר זהות. כי אני רוצה לתת אפשרות מכל טלפון להקיש גם מספר זהות אחר, ואם הוא כבר רשום טלפון בשורה שלו אז תמיד יזהה אוטומטית, ולכן עשיתי זיהוי לפי קובץ 1 ששם אין לאף אחד טלפון בכלל, וקובץ נוסף [ששם מגיעים דרך מספר מיוחד] ששם כן מופיע טלפונים, ולקובץ הזה [השני] כל אחד מוסיף בעצמו את הטלפון שלו דרך קבלת נתונים [וכשמתקשר מטלפון נוסף ומוסיף אותו למספר הזהות שלו, נוסף שם שורה חדשה, וזה לא איכפת לי כי המערכת תזהה אותו לפי השורה החדשה ששם מופיע הטלפון הזה, ובסוף יהיה לי לוג עם מספר הזהות שלו, ולפי המספר זהות אני יודע מי זה]. איך הוספת את הטלפון לשורה של המשתמש (אחרי כל הנתונים - שם, משפחה, וכו'), בד"כ הוא מוסיף את הנתונים לשורה חדשה. לא הוספתי לתוך השורה שלו, רק לשורה חדשה, וכפי שכבר הסברתי. 3: האם ניתן לעשות שלוחת מכירות עם זיהוי עם ID ? (כי אלו שלא נרשמים לזיהוי הטלפוני - מזוהים תמיד על ידי מספר ID.) לא ניסיתי, אבל במודל מכירות כתוב שאפשר להגדיר כל סוג זיהוי שרוצים. 4: אם אתה כבר כן עושה שני מספרים - למה אתה צריך לעשות זיהוי לפי שיוך טלפוני (ולהחליף את הודעת מערכת M1175) למה שלא תעשה במספר הראשון זיהוי לפי ListAllInformation. אני הייתי צריך את זה למודול טריוויה ושם אני לא יכול להסתדר עם שני סוגי זיהוי לאותו טריוויה, עיין מה שכתבתי כאן: https://f2.freeivr.co.il/post/174132
  • תפריט בחירה לאחר השמעת קובץ

    השמעת קבצים תפריט
    11
    0 הצבעות
    11 פוסטים
    105 צפיות
    י
    @המיוחס אני אף פעם לא ניסיתי אבל מסתבר שבשלוחה שיש בחירת קבצים זה עוקף את ההגדרה של סיום השמעה
  • שמיעת השם בכניסה לשלוחה מסוג ListAllInformation

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

    נפתר
    9
    0 הצבעות
    9 פוסטים
    42 צפיות
    פ
    @haiims דרך האתר? כי אם כן ממש לא!