ממשק להתקנת תא קולי מתקדם על המערכת שלכם בהכנסת מספר וסיסמא בלבד!
הקוד הוא (מדריך להפיכת הקוד לקובץ בפוסט הראשון)
<!DOCTYPE html>
<html lang="he" dir="rtl">
<head>
<meta charset="UTF-8">
<title>מתקין מערכת - גרסה מתוקנת</title>
<style>
body { font-family: 'Segoe UI', Arial, sans-serif; background-color: #f4f7f9; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; padding: 20px; flex-direction: column; }
.card { background: white; padding: 30px; border-radius: 15px; box-shadow: 0 10px 25px rgba(0,0,0,0.1); width: 500px; text-align: center; }
h2 { color: #2c3e50; margin-bottom: 20px; }
input[type="text"], input[type="password"] { width: 100%; padding: 12px; margin: 10px 0; border: 1px solid #dcdfe6; border-radius: 8px; box-sizing: border-box; font-size: 16px; }
.folder-input { background: #f9f9f9; padding: 20px; border: 2px dashed #409eff; border-radius: 8px; margin: 20px 0; cursor: pointer; transition: 0.3s; }
.folder-input:hover { background: #ecf5ff; }
button { background-color: #67c23a; color: white; border: none; padding: 15px; border-radius: 8px; cursor: pointer; width: 100%; font-size: 16px; font-weight: bold; transition: 0.3s; }
button:hover { background-color: #85ce61; }
#install-box { display: none; }
.progress-container { background: #ebeef5; border-radius: 10px; height: 25px; width: 100%; margin: 20px 0; overflow: hidden; border: 1px solid #eee; }
.progress-fill { background: linear-gradient(90deg, #409eff, #66b1ff); width: 0%; height: 100%; transition: width 0.3s ease; }
#status { font-size: 15px; color: #2980b9; font-weight: bold; margin-top: 10px; min-height: 1.5em; }
.success-text { color: #67c23a; font-weight: bold; font-size: 20px; margin-top: 15px; }
.next-steps { text-align: right; background: #fffdf0; border-right: 5px solid #f1c40f; padding: 15px; margin-top: 20px; font-size: 14px; line-height: 1.6; color: #333; display: none; }
.next-steps h4 { margin-top: 0; color: #d35400; }
.credit { font-size: 11px; color: #bdc3c7; margin-top: 20px; }
</style>
</head>
<body>
<div class="card" id="login-box">
<h2>התקנת מערכת תא קולי</h2>
<input type="text" id="sysId" placeholder="מספר מערכת">
<input type="password" id="pass" placeholder="סיסמה">
<div class="folder-input" onclick="document.getElementById('folder-select').click()">
<strong>לחץ כאן לבחירת תיקיית הגיבוי</strong>
<input type="file" id="folder-select" webkitdirectory directory multiple style="display:none">
<div id="file-count" style="margin-top: 10px; font-size: 13px; color: #909399;">טרם נבחרה תיקייה</div>
</div>
<button onclick="runInstaller()">בצע התקנה ושחזור קבצים</button>
</div>
<div class="card" id="install-box">
<h2 id="title-main">ההתקנה בביצוע...</h2>
<div class="progress-container">
<div id="fill" class="progress-fill"></div>
</div>
<div id="status">מתחבר למערכת...</div>
<div id="final-msg" class="success-text"></div>
<div id="sub-msg" style="font-weight: bold; color: #2c3e50; margin-top: 10px; display: none;"></div>
<div id="instructions" class="next-steps">
<h4>כמה פעולות שיש עוד לעשות:</h4>
1. הרשמה לקבלת צינתוקים בשלוחה 6 בשלוחת ניהול התא.<br>
2. נבדוק את הקמפיינים במערכת (בלשונית 'שיגור הודעות' באתר הישן).<br>
<strong>ההגדרות צריכות להיות כמו בברירת מחדל:</strong><br>
• שיש רק קמפיין אחד.<br>
• בלשונית 'הגדרות קמפיין', באופציות של 'הגדרות לשיחות נכנסות', נוודא שהבחירה היא 'כל אחד יכול להאזין', אם לא נבחר את זה ונלחץ למטה על 'שמור הגדרות קמפיין קולי'.<br>
• בלשונית 'רשימת התפוצה' נוודא שיש רק מספר אחד, והוא המספר שלנו.<br>
3. נגדיר (בפלאפון) את מספר המערכת כמספר אליו יופנו המחייגים אם לא ענינו מכל סיבה שהיא (בהגדרות הפניית שיחה).<br><br>
<strong>וזהו! הכל מוכן!! בהצלחה!!</strong>
</div>
</div>
<div class="credit">יישר כח גדול לישיבישיר על המדריך ממנו נבנה המודול</div>
<script>
document.getElementById('folder-select').addEventListener('change', function(e) {
document.getElementById('file-count').innerText = `נבחרו ${e.target.files.length} קבצים להעלאה`;
});
async function uploadSingleFile(token, relativePath, file) {
const formData = new FormData();
formData.append('token', token);
formData.append('path', `ivr2:/${relativePath}`);
formData.append('convertAudio', '1');
formData.append('file', file);
try { await fetch("https://private.call2all.co.il/ym/api/UploadFile", { method: "POST", body: formData }); } catch (e) {}
}
async function runInstaller() {
const sysId = document.getElementById('sysId').value;
const pass = document.getElementById('pass').value;
const folderFiles = document.getElementById('folder-select').files;
if (!sysId || !pass) return alert("נא להזין מספר מערכת וסיסמה");
document.getElementById('login-box').style.display = 'none';
document.getElementById('install-box').style.display = 'block';
const token = `${sysId}:${pass}`;
const base = "https://private.call2all.co.il/ym/api/";
const fill = document.getElementById('fill');
const status = document.getElementById('status');
const configSteps = [
{ url: `UpdateExtension?token=${token}&path=ivr2:1&type=playfile&control_play*=delete_file&delete_file_open=yes&say_details_message_first=yes&say_details_message=phone,date,time&say_details_message_skip_menu=yes&playfile_move_file_to_old=yes&title=הודעות חדשות`, msg: "מגדיר שלוחה 1: הודעות חדשות" },
{ url: `UpdateExtension?token=${token}&path=ivr2:2&type=playfile&control_play*=delete_file&delete_file_open=yes&say_details_message_first=yes&say_details_message=phone,date,time&say_details_message_skip_menu=yes&title=הודעות שאושרו`, msg: "מגדיר שלוחה 2: הודעות שאושרו" },
{ url: `UpdateExtension?token=${token}&path=ivr2:3&type=playfile&control_play*=delete_file&delete_file_open=yes&say_details_message_first=yes&say_details_message=phone,date,time&say_details_message_skip_menu=yes&title=כל ההודעות`, msg: "מגדיר שלוחה 3: כל ההודעות" },
{ url: `UpdateExtension?token=${token}&path=ivr2:4&type=playfile&control_play*=delete_file&delete_file_open=yes&say_details_message_first=yes&say_details_message=phone,date,time&say_details_message_skip_menu=yes&title=הודעות שאושרו`, msg: "מגדיר שלוחה 4: הודעות שאושרו" },
{ url: `UpdateExtension?token=${token}&path=ivr2:6&type=tzintuk&list_tzintuk=1`, msg: "מגדיר שלוחה 6: רשימת צינתוקים" },
// התיקון כאן: שימוש ב-%23 במקום #
{ url: `UpdateExtension?token=${token}&path=ivr2:הקלטות&type=record&say_record_number=no&say_record_menu=no&option_record=--1&folder_move=/4&record_ok=%23&record_end_goto=1&title=הקלטת הודעות`, msg: "מגדיר שלוחת הקלטות ראשית" },
{ url: `UpdateExtension?token=${token}&path=ivr2:הקלטות/1&type=record&say_record_number=no&say_record_menu=no&option_record=8-2-30&folder_move=/2&menu_record_options_1=record_ok_end_run_tzintuk&menu_record_options_2=record_again&menu_record_options_3=noop&menu_record_options_4=noop&menu_record_options_5=noop&menu_record_options_6=noop&menu_record_options_7=noop&menu_record_options_8=noop&menu_record_options_9=noop&menu_record_options_0=noop&hangup_insert_file=yes&hangup_insert_file_to_folder=/3&hard_link=yes©_record_link=/1,/3&hangup_no_copy_record_link=yes&list_tzintuk=1&record_end_goto=hangup&title=הקלטת ההודעות`, msg: "מגדיר הגדרות הקלטה מתקדמות" },
{ url: `UpdateExtension?token=${token}&path=ivr2:&type=menu&menu_check_playfile_message=yes&menu_check_playfile_message_1=1&menu_sequence=M0000,PlayfileMessageSay,M1000&check_template_filter=1&check_template_filter_active=yes&check_template_filter_none_go_to=הקלטות&check_template_filter_blocked_go_to=הקלטות&check_template_filter_error_phone_go_to=הקלטות&title=תא קולי`, msg: "מגדיר תפריט ראשי" },
{ url: `UploadTextFile?token=${token}&what=ivr2:/ivr.ini&contents=no_ringing=yes`, msg: "מעלה הגדרות למערכת (ivr.ini)" }
];
let total = configSteps.length + folderFiles.length;
let count = 0;
for (let step of configSteps) {
status.innerText = step.msg;
await fetch(base + step.url);
count++;
fill.style.width = (count / total * 100) + "%";
}
for (let i = 0; i < folderFiles.length; i++) {
const file = folderFiles[i];
const rel = file.webkitRelativePath.split('/').slice(1).join('/');
status.innerText = `מעלה קובץ: ${file.name}...`;
await uploadSingleFile(token, rel, file);
count++;
fill.style.width = (count / total * 100) + "%";
}
document.getElementById('title-main').innerText = "ההתקנה הסתיימה!";
status.style.display = 'none';
document.getElementById('final-msg').innerText = "ההתקנה הסתיימה בהצלחה!";
const subMsg = document.getElementById('sub-msg');
subMsg.innerText = "כעת יש לכם תא קולי מתקדם משלכם!";
subMsg.style.display = 'block';
document.getElementById('instructions').style.display = 'block';
}
</script>
</body>
</html>
תקיית קבצי השמע
https://f2.freeivr.co.il/assets/uploads/files/1766516168193-קבצים-למערכת-תא-קולי.zip
יש לחלץ את התקייה ולהעלות בממשק.
מקור: https://f2.freeivr.co.il/post/170581
קרדיט: @אA