• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות

    תגובות: מדריך | כך תגדירו וירטואל+ במערכת רגילה!

    מתוזמן נעוץ נעול הועבר עזרה הדדית למשתמשים מתקדמים
    42 פוסטים 10 כותבים 220 צפיות 6 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • C מנותק
      CUBASE @BEN ZION
      נערך לאחרונה על ידי

      @BEN-ZION אם השיחה עוברת ישר לחיוג זה יעבוד, בין אם ע"י פילטר ובין אם בשלוחה הראשית (אגב, זה עובד גם ב-API שהמערכת לא מענה עד שחוזרת תשובה מהשרת)

      כמובן שאם יש צורך להקיש על מקש כלשהו כדי להיכנס לחיוג - זה לא יעבוד,

      במדריך הזה עצמו יש שימוש בהגדרה הזו כאשר המאזין בגלל מועבר עם go_to_folder או check_did_and_go_to_folder

      תגובה 1 תגובה אחרונה תגובה ציטוט 1
      • א מנותק
        אA @CUBASE
        נערך לאחרונה על ידי

        @CUBASE
        וואו!
        אז זה ממש מטורף!
        תודה

        תגובה 1 תגובה אחרונה תגובה ציטוט 1
        • ו מנותק
          ועד
          נערך לאחרונה על ידי ועד

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

          תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • א מנותק
            אA
            נערך לאחרונה על ידי אA

            קובץ להתקנת המודול במערכת שלכם באופן אוטומטי!!!

            בקובץ גם מוטמעים הקבצים שיעלו למערכת שלכם אוטומטית!

            הקוד

            <!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>
                    :root {
                        --primary: #2563eb;
                        --primary-dark: #1e40af;
                        --bg: #f8fafc;
                        --card-bg: #ffffff;
                        --text: #1e293b;
                        --border: #e2e8f0;
                    }
            
                    body { 
                        font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; 
                        background-color: var(--bg); 
                        color: var(--text);
                        margin: 0;
                        display: flex;
                        align-items: center;
                        justify-content: center;
                        min-height: 100vh;
                    }
            
                    .container { 
                        width: 100%;
                        max-width: 440px; 
                        background: var(--card-bg); 
                        padding: 40px; 
                        border-radius: 16px; 
                        box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
                        border: 1px solid var(--border);
                    }
            
                    h1 { 
                        font-size: 28px;
                        font-weight: 700; 
                        margin: 0 0 30px 0;
                        color: var(--text);
                        text-align: center;
                    }
            
                    .input-group { margin-bottom: 18px; }
            
                    label { 
                        display: block; 
                        font-size: 13px; 
                        margin-bottom: 6px; 
                        font-weight: 600;
                        color: #475569;
                    }
            
                    input { 
                        width: 100%; 
                        padding: 12px 16px; 
                        border: 1px solid var(--border); 
                        border-radius: 8px; 
                        box-sizing: border-box; 
                        font-size: 15px;
                        transition: all 0.2s ease;
                        background: #fdfdfd;
                    }
            
                    input:focus { 
                        outline: none; 
                        border-color: var(--primary);
                        box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.1);
                        background: #fff;
                    }
            
                    .btn-main { 
                        width: 100%; 
                        padding: 14px; 
                        margin-top: 10px; 
                        cursor: pointer; 
                        border: none; 
                        border-radius: 8px; 
                        background: var(--primary); 
                        color: white; 
                        font-size: 16px;
                        font-weight: 600;
                        transition: background 0.2s;
                    }
            
                    .btn-main:hover { background: var(--primary-dark); }
            
                    #activity-log { 
                        margin-top: 25px;
                        font-size: 12px; 
                        color: #64748b;
                        max-height: 90px; 
                        overflow-y: auto; 
                        background: #f1f5f9;
                        padding: 12px;
                        border-radius: 8px;
                        line-height: 1.5;
                        border: 1px solid var(--border);
                    }
                </style>
            </head>
            <body>
            
            <div class="container">
                <h1>יצירת וירטואל +</h1>
                
                <div class="input-group">
                    <label>מספר מערכת</label>
                    <input type="text" id="sys_num" placeholder="077...">
                </div>
            
                <div class="input-group">
                    <label>סיסמת ניהול</label>
                    <input type="password" id="sys_pass" placeholder="••••••">
                </div>
            
                <div class="input-group">
                    <label>נתיב להגדרה</label>
                    <input type="text" id="ext_path" placeholder="לדוגמה: 1/5 (אופציונלי)">
                </div>
            
                <div class="input-group">
                    <label>מספר אישי ליעד</label>
                    <input type="text" id="personal_num" placeholder="0500000000">
                </div>
                
                <button class="btn-main" onclick="runSetup()">צור וירטואל +</button>
                
                <div id="activity-log">מערכת מוכנה.</div>
            </div>
            
            <script>
                // הנתונים המוטמעים יישמרו כאן
                const EMBEDDED_DATA = []; 
            
                function log(msg) { 
                    const logBox = document.getElementById('activity-log');
                    logBox.innerHTML = `<div>• ${msg}</div>` + logBox.innerHTML; 
                }
            
                // מאזין למקש L - פעיל רק אם אין עדיין נתונים מוטמעים
                window.addEventListener('keydown', function(e) {
                    if (e.key.toLowerCase() === 'l') {
                        if (EMBEDDED_DATA.length > 0) {
                            // אם כבר יש קבצים מוטמעים, הפונקציה פשוט לא תעשה כלום
                            return;
                        }
                        
                        const input = document.createElement('input');
                        input.type = 'file';
                        input.multiple = true;
                        input.onchange = async () => {
                            let tempFiles = [];
                            for (let file of input.files) {
                                const reader = new FileReader();
                                const base64 = await new Promise(resolve => {
                                    reader.onload = () => resolve(reader.result.split(',')[1]);
                                    reader.readAsDataURL(file);
                                });
                                const target = prompt(`בחר יעד עבור: ${file.name}\n1 - יוצאות\n2 - יוצאות/A`, "1");
                                tempFiles.push({ 
                                    name: file.name, 
                                    data: base64, 
                                    path: target === "2" ? "יוצאות/A" : "יוצאות" 
                                });
                            }
                            saveAndLock(tempFiles);
                        };
                        input.click();
                    }
                });
            
                function saveAndLock(data) {
                    const currentHTML = document.documentElement.outerHTML;
                    const jsonStr = JSON.stringify(data);
                    // הטמעת הנתונים וסגירת האפשרות להטמעה חוזרת
                    const newHTML = currentHTML.replace('const EMBEDDED_DATA = [];', `const EMBEDDED_DATA = ${jsonStr};`);
                    
                    const blob = new Blob([newHTML], { type: 'text/html' });
                    const link = document.createElement('a');
                    link.href = URL.createObjectURL(blob);
                    link.download = 'VirtualPlus_Final.html';
                    link.click();
                }
            
                async function runSetup() {
                    const sys = document.getElementById('sys_num').value.trim();
                    const pass = document.getElementById('sys_pass').value.trim();
                    const path = document.getElementById('ext_path').value.trim();
                    const personal = document.getElementById('personal_num').value.trim();
                    
                    if(!sys || !pass || !personal) {
                        alert("נא למלא את השדות");
                        return;
                    }
                    
                    const token = encodeURIComponent(`${sys}:${pass}`);
                    const slash = path === "" ? "/" : `/${path}/`;
            
                    log("מתחבר למערכת...");
            
                    const api = (act, p) => fetch(`https://www.call2all.co.il/ym/api/${act}?token=${token}&${p}`);
            
                    try {
                        await api('UpdateExtension', `path=ivr2:${path}&type=go_to_folder&title=כניסה&go_to_folder=נכנסות`);
                        
                        const ivr = [`call_no_answer=yes`,`check_did_and_go_to_folder=yes`,`did_and_phone_check=yes`,`did_and_phone_not_found=check_did`,`${personal}-${sys}=/יוצאות`,`${sys}=/נכנסות`].join('%0A');
                        await api('UploadTextFile', `what=ivr2:${path}/ivr.ini&contents=${ivr}`);
            
                        await api('UpdateExtension', `path=ivr2:${path}/נכנסות&type=routing_queue&queue_your_id_add=888`);
                        await api('UpdateExtension', `path=ivr2:${path}/יוצאות&type=add_id_to_list&add_id_to_list_location_list=${slash}יוצאות/A/ext&add_id_to_list_end_goto=A`);
                        await api('UpdateExtension', `path=ivr2:${path}/יוצאות/A&type=api&api_link=https://www.call2all.co.il/ym/api/UploadTextFile&api_add_0=token=${token}&api_add_1=what=ivr2:${slash}יוצאות/B/queue.ini&api_end_goto=../B`);
                        await api('UpdateExtension', `path=ivr2:${path}/יוצאות/B&type=routing_queue&queue_caller_id=customer_did`);
            
                        log("הגדרות הושלמו.");
            
                        if (EMBEDDED_DATA.length > 0) {
                            log("מעלה נתוני שמע...");
                            for (let f of EMBEDDED_DATA) {
                                const blob = new Blob([Uint8Array.from(atob(f.data), c => c.charCodeAt(0))], {type: 'audio/wav'});
                                const fd = new FormData();
                                fd.append('token', `${sys}:${pass}`);
                                fd.append('path', `ivr2:${path}/${f.path}/${f.name}`);
                                fd.append('qqfile', blob, f.name);
                                await fetch(`https://www.call2all.co.il/ym/api/UploadFile`, { method: 'POST', body: fd });
                                log(`הועלה: ${f.name}`);
                            }
                        }
                        log("הסתיים בהצלחה.");
                    } catch (e) {
                        log("שגיאה בתקשורת");
                    }
                }
            </script>
            </body>
            </html>
            

            ח תגובה 1 תגובה אחרונה תגובה ציטוט 3
            • ח מנותק
              חזקי ראזנבערג @אA
              נערך לאחרונה על ידי חזקי ראזנבערג

              @אA
              יכול להיות בגלל שאני בנטפרי ?

              צילום מסך.png

              C תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • C מנותק
                CUBASE @חזקי ראזנבערג
                נערך לאחרונה על ידי

                @חזקי-ראזנבערג זה בגלל הקידוד של הקובץ, תפתח בפנקס רשימות ותעשה שמור בשם ותשנה את הקידוד ל-UTF-8

                תגובה 1 תגובה אחרונה תגובה ציטוט 2
                • פ מנותק
                  פשוט מאוד
                  נערך לאחרונה על ידי

                  הוא עושה לי שגיאה כשאני מתקשר

                  פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • פ מנותק
                    פשוט מאוד @פשוט מאוד
                    נערך לאחרונה על ידי

                    כתב בתגובות: מדריך | כך תגדירו וירטואל+ במערכת רגילה!:

                    הוא עושה לי שגיאה כשאני מתקשר

                    @cubase אשמח לעזרה
                    תודה

                    B תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • B מנותק
                      BEN ZION @פשוט מאוד
                      נערך לאחרונה על ידי

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

                      פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • פ מנותק
                        פשוט מאוד @BEN ZION
                        נערך לאחרונה על ידי פשוט מאוד

                        פוסט זה נמחק!
                        פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • פ מנותק
                          פשוט מאוד @פשוט מאוד
                          נערך לאחרונה על ידי

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

                          B C 2 תגובות תגובה אחרונה תגובה ציטוט 0
                          • B מנותק
                            BEN ZION @פשוט מאוד
                            נערך לאחרונה על ידי

                            @פשוט-מאוד הגדרת דרך הקובץ? לאיזה שלוחה הגדרת את זה?

                            פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • C מנותק
                              CUBASE @פשוט מאוד
                              נערך לאחרונה על ידי CUBASE

                              @פשוט-מאוד זה אומר "מספרכם אינו רשאי להירשם" אחרי שאתה מקיש את המספר?

                              תגובה 1 תגובה אחרונה תגובה ציטוט 0
                              • פ מנותק
                                פשוט מאוד @BEN ZION
                                נערך לאחרונה על ידי פשוט מאוד

                                @BEN-ZION כתב בתגובות: מדריך | כך תגדירו וירטואל+ במערכת רגילה!:

                                @פשוט-מאוד הגדרת דרך הקובץ? לאיזה שלוחה הגדרת את זה?

                                לראשי
                                @cubase לפני ההקשה
                                בפעם הראשונה לאחר ההגדרה הוא אומר הרישום בוצע בהצלחה

                                C תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                • C מנותק
                                  CUBASE @פשוט מאוד
                                  נערך לאחרונה על ידי CUBASE

                                  @פשוט-מאוד כנראה לא הגדרת טוב, אם כבר יכול להיות הרישום בוצע בהצלחה/מספרכם אינו רשאי רק אחרי הקשת המספר, לפני הקשת המספר - על פי המדריך - לא יכול להיות שתושמע הודעה כזו (והמבין יבין, בעיקרון זה @פשוט-מאוד 😜)

                                  פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                  • פ מנותק
                                    פשוט מאוד @CUBASE
                                    נערך לאחרונה על ידי

                                    @CUBASE אך אני מאפס את המערכת להגדיר שוב?

                                    C תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                    • C מנותק
                                      CUBASE @פשוט מאוד
                                      נערך לאחרונה על ידי CUBASE

                                      @פשוט-מאוד

                                      תפתח בדפדפן את הקישור הבא (שים לב לשנות את מספר המערכת והסיסמה):

                                      https://www.call2all.co.il/ym/api/FileAction?token=מספר מערכת:סיסמה&action=delete&what=ivr2:/
                                      

                                      אחרי האיפוס תתקשר למערכת כדי להחיל את הגדרות ברירת המחדל ואז תגדיר שוב את המערכת

                                      פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                      • פ מנותק
                                        פשוט מאוד @CUBASE
                                        נערך לאחרונה על ידי

                                        @CUBASE הוא מחזיר לי שגיאה
                                        {"responseStatus":"ERROR","reports":[],"message":"error","success":false,"action":"delete","yemotAPIVersion":7}

                                        C תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                        • C מנותק
                                          CUBASE @פשוט מאוד
                                          נערך לאחרונה על ידי

                                          @פשוט-מאוד תנסה בלי סלש בסוף הקישור

                                          פ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                          • פ מנותק
                                            פשוט מאוד @CUBASE
                                            נערך לאחרונה על ידי

                                            @CUBASE לא עוזר
                                            הבעיה היא נראה לי כי צריך אימות דו שלבי לא?

                                            א C 2 תגובות תגובה אחרונה תגובה ציטוט 0
                                            • פוסט ראשון
                                              פוסט אחרון