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

    קומבינה לשיחה יוצאת עם זיהוי מערכת על בסיס שלוחת API ושלוחת תור החדשה

    מתוזמן נעוץ נעול הועבר נפתר עזרה הדדית למשתמשים מתקדמים
    65 פוסטים 14 כותבים 546 צפיות 7 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • א מנותק
      איל משולש @אA
      נערך לאחרונה על ידי

      @אA אני עושה הרשמה לצינתוק חינמי אמצעות מודל הכנסת ערך שמשנה את מספר הרשימה לטלפון של הנכנס, הוי אומר תך רבע שניה זה משתנה

      א י 2 תגובות תגובה אחרונה תגובה ציטוט 0
      • י מנותק
        יוסף חיים 5 @isi
        נערך לאחרונה על ידי

        @isi כתב בקומבינה לשיחה יוצאת עם זיהוי מערכת על בסיס שלוחת API ושלוחת תור החדשה:

        @יוסף-חיים-5 מה זה המודול של עזר פון?

        שיחה יוצאת עם זיהוי המערכת

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

          @איל-משולש
          מעניין מאוד.
          אבל במודול הזה זה לא כך.
          תנסה ותראה.

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

            @איל-משולש כתב בקומבינה לשיחה יוצאת עם זיהוי מערכת על בסיס שלוחת API ושלוחת תור החדשה:

            @אA אני עושה הרשמה לצינתוק חינמי אמצעות מודל הכנסת ערך שמשנה את מספר הרשימה לטלפון של הנכנס, הוי אומר תך רבע שניה זה משתנה

            אני חושב שהסיבה היא מה שכתב שם @cubase שאולי זה שונה קובץ queue מקובץ ext, שבזה באמת לוקח זמן. תראה שם בשרשור שהבאתי, שהיו כמה שכתבו שהם ניסו ול3ח להם זמן.

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

              @אA אולי לא ממש תוך רגע, אני השתמשתי בזה!, בעקרון זה לא עוזר כלום כי זה לא מוחק את הנציג הקודם ואז זה יחייג גם למי שחייג בפעם הקודמת!!!!
              אני השתמשתי בזה ע"י API שהחליף לפני זה את הקובץ הקודם לקובץ חדש (בשביל הגדרות - כמו זיהוי יוצא)

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

                @איל-משולש
                גם אני עשיתי ככה וזה לא החליף מיד.

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

                  @אA לי זה עבד, אולי לקח איזה שניה של התנה, אני כבר לא זוכר מה בדיוק עשיתי

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

                    ראיתי שקצת הסתבכו כאן, אכתוב את הדרך שבה השתמשתי ועובדת לי מצוין ללא השהיות:

                    1.
                    שלוחה 1/

                    type=add_id_to_list
                    title=הקשת מספר לחיוג
                    
                    add_id_to_list_location_list=/1/1/ext
                    
                    add_id_to_list_key=api_add_2
                    
                    add_id_to_list_value_first=contents=announce-position=no%0Aannounce-frequency=0%0Aperiodic-announce-frequency=0%0Aringuse=yes%0Amusicclass=447292_musicclass%0A
                    
                    add_id_to_list_value_type=digits
                    
                    add_id_to_list_value_change=yes
                    
                    add_id_to_list_end_goto=1
                    

                    יש להעלות לשלוחה קובץ M3411 שקט,
                    בשורה 8 אחרי ה-contents= זה ההגדרות בקובץ queue.ini עם %0A במקום ירידת שורה, ניתן לשנות/להוסיף הגדרות כרצונכם.

                    ה-musicclass (מוזיקה בהמתנה) בשורה 8 זה צליל חיוג שיצרתי לו מוזיקה בהמתנה - מערכות בשרת ymta יעבוד להם, אחרים יצטרכו ליצור בעצמם ולשנות בשורה 8.


                    2.
                    שלוחה 1/1/

                    type=api
                    title=שינוי המספר לחיוג בפועל
                    
                    api_link=https://www.call2all.co.il/ym/api/UploadTextFile
                    
                    ;מפתח API
                    api_add_0=token=***
                    
                    api_add_1=what=ivr2:/1/2/queue.ini
                    api_hangup_send=no
                    
                    api_end_goto=../2
                    

                    יש ליצור מפתח API ולשים אותו בשורה 7, ובנוסף להעלות לשלוחה קובץ M1607 שקט.


                    3.
                    שלוחה 1/2/

                    type=routing_queue
                    title=שיחות יוצאות
                    
                    queue_caller_id=customer_did
                    
                    queue_end_continue_goto=hangup
                    

                    כמובן שבשלוחה זו אפשר להוסיף הגדרות כרצונכם.


                    זה הכל, מקווה שיעזור למישהו.

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

                      @cubase אין עליך, לא סתם תייגתי אותך (במקור)!
                      בלי לזלזל בכל העונים כמובן

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

                        @CUBASE אלוף 🎖 🎖
                        שברתי את הראש איך אני יכול להוסיף כמה ערכים בלי להשתמש בשרת חיצוני

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

                          @CUBASE זה אומר לי אין מענה בשרת api
                          (שמתי מפתח של המערכת אולי צריך לזה מפתח ג'ימיני הוא כתב ליצור מפתח איזה??)

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

                            וכן זה אומר לי השלוחה אליי ביקשתם לעבור אינה ניתנת להפעלה עקב חוסר בהגדרות אנא פנה למנהל המערכת אם מישהו יכול לעזור לי בזה אני מאוד אשמח!!😃

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

                              @1668 מבנה השלוחות אצלך הוא ככה:

                              1
                              1/1
                              1/2
                              ?

                              אם לא אז יש אצלך בעיה...

                              בכל מבנה אחר צריך לשנות את הערכים בקוד.
                              צריך כמובן להעלות קבצים לפי מה שכתוב שם.

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

                                @עידו לא!
                                אבל בסוף הסתדרתי תודה 👍👍👍

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

                                  אני יכול לעשות את ההקשות יותר לאט?? זה מהירות טיל ואני לא מספיק לרשום שום דבר אני אשמח לתשובה! 😃😃👍 תודה

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

                                    וגם שלא יבקש אישור על המספר אני מאוד אשמח לתשובה תודה רבה! 😃😃😉

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

                                      @1668 אני עשיתי נראה לי הכל נכון, וזה אומר לי שגיאה, מה יכול להיות ?

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

                                        עודכן בהודעה הראשונה קובץ שמכין את כל ה"מערכת" הזאת קומפלט עם כל הקבצים השקטים - לא לשים / אני לא יודע מה הוא יעשה עם זה!.
                                        call2all_setup.zip

                                        או

                                        <!DOCTYPE html>
                                        <html lang="he" dir="rtl">
                                        <head>
                                        <meta charset="UTF-8">
                                        <meta name="viewport" content="width=device-width, initial-scale=1.0">
                                        <title>Call2All – יצירת שלוחה</title>
                                        <style>
                                          @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;600&family=Heebo:wght@300;400;600;700&display=swap');
                                          :root {
                                            --bg:#0b0e13;--surface:#131720;--surface2:#1a1f2e;--border:#252c3f;
                                            --accent:#3b82f6;--accent-glow:rgba(59,130,246,0.18);
                                            --green:#22c55e;--red:#ef4444;--yellow:#f59e0b;
                                            --text:#dde3f0;--muted:#4a5478;--label:#8892b0;
                                          }
                                          *{box-sizing:border-box;margin:0;padding:0;}
                                          body{background:var(--bg);color:var(--text);font-family:'Heebo',sans-serif;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:2.5rem 1rem 4rem;background-image:radial-gradient(ellipse at 60% 0%,rgba(59,130,246,0.07) 0%,transparent 60%);}
                                          header{text-align:center;margin-bottom:2.5rem;}
                                          header h1{font-size:1.5rem;font-weight:700;color:#fff;}
                                          header p{font-size:0.82rem;color:var(--muted);margin-top:0.4rem;font-family:'IBM Plex Mono',monospace;}
                                          .card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.75rem;width:100%;max-width:580px;margin-bottom:1rem;}
                                          .card-title{font-size:0.7rem;font-family:'IBM Plex Mono',monospace;letter-spacing:0.12em;text-transform:uppercase;color:var(--muted);margin-bottom:1.25rem;display:flex;align-items:center;gap:0.5rem;}
                                          .card-title::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 6px var(--accent);}
                                          .field-group{margin-bottom:1.1rem;}
                                          label{display:block;font-size:0.78rem;color:var(--label);margin-bottom:0.35rem;}
                                          input[type="text"],input[type="password"]{width:100%;background:var(--bg);border:1px solid var(--border);color:var(--text);font-family:'IBM Plex Mono',monospace;font-size:0.88rem;padding:0.6rem 0.85rem;border-radius:7px;outline:none;transition:border-color 0.2s,box-shadow 0.2s;direction:ltr;}
                                          input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow);}
                                          .hint{font-size:0.72rem;color:var(--muted);margin-top:0.3rem;font-family:'IBM Plex Mono',monospace;}
                                          .run-btn{width:100%;padding:0.8rem;background:var(--accent);color:#fff;border:none;border-radius:8px;font-family:'Heebo',sans-serif;font-size:0.95rem;font-weight:600;cursor:pointer;transition:all 0.2s;margin-top:0.5rem;}
                                          .run-btn:hover{filter:brightness(1.12);transform:translateY(-1px);}
                                          .run-btn:disabled{opacity:0.4;cursor:default;transform:none;}
                                          .steps{width:100%;max-width:580px;display:flex;flex-direction:column;gap:0.5rem;}
                                          .step{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:0.85rem 1rem;display:flex;align-items:center;gap:0.75rem;font-size:0.82rem;transition:border-color 0.3s;}
                                          .step.running{border-color:var(--accent);}
                                          .step.done{border-color:rgba(34,197,94,0.4);}
                                          .step.error{border-color:rgba(239,68,68,0.4);}
                                          .step-icon{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:0.75rem;font-family:'IBM Plex Mono',monospace;flex-shrink:0;background:var(--surface2);border:1px solid var(--border);color:var(--muted);transition:all 0.3s;}
                                          .step.running .step-icon{border-color:var(--accent);color:var(--accent);animation:spin 1s linear infinite;}
                                          .step.done .step-icon{background:rgba(34,197,94,0.1);border-color:var(--green);color:var(--green);}
                                          .step.error .step-icon{background:rgba(239,68,68,0.1);border-color:var(--red);color:var(--red);}
                                          .step-label{flex:1;color:var(--label);}
                                          .step.running .step-label,.step.done .step-label{color:var(--text);}
                                          .step.error .step-label{color:var(--red);}
                                          .step-status{font-family:'IBM Plex Mono',monospace;font-size:0.7rem;color:var(--muted);}
                                          .log-wrap{width:100%;max-width:580px;margin-top:0.5rem;}
                                          #log{background:#070a0f;border:1px solid var(--border);border-radius:8px;padding:0.9rem 1rem;height:220px;overflow-y:auto;font-family:'IBM Plex Mono',monospace;font-size:0.75rem;line-height:1.8;direction:ltr;}
                                          #log::-webkit-scrollbar{width:3px;}
                                          #log::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}
                                          .log-line{display:flex;gap:0.5rem;}
                                          .log-ts{color:var(--muted);flex-shrink:0;}
                                          .log-ok{color:var(--green);}
                                          .log-err{color:var(--red);}
                                          .log-info{color:var(--accent);}
                                          .log-warn{color:var(--yellow);}
                                          @keyframes spin{to{transform:rotate(360deg);}}
                                        </style>
                                        </head>
                                        <body>
                                        <header>
                                          <h1>⚙ Call2All — יצירת שלוחה</h1>
                                          <p>// automated extension setup</p>
                                        </header>
                                        
                                        <div class="card">
                                          <div class="card-title">פרטי חיבור</div>
                                          <div class="field-group">
                                            <label>מספר שלוחה </label>
                                            <input type="text" id="ext" />
                                          </div>
                                          <div class="field-group">
                                            <label>טוקן</label>
                                            <input type="password" id="token" placeholder="הכנס טוקן..." />
                                          </div>
                                          <button class="run-btn" id="runBtn" onclick="startAll()">▶ הפעל תהליך</button>
                                        </div>
                                        
                                        <div class="steps" id="stepsWrap" style="display:none"></div>
                                        
                                        <div class="log-wrap" id="logWrap" style="display:none">
                                          <div id="log"></div>
                                        </div>
                                        
                                        <script>
                                        const WAV_B64="UklGRtQBAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YbABAAAAAAAAAAAAAAEA/v8CAP7/AQAAAAEA/f8DAP7/AQAAAP//AQAAAAAAAAAAAP//AgD+/wMA/f8CAP7/AgD+/wIA/////wMA/P8DAP//AAAAAAEA/v8CAP7/AgD//wAAAAD//wIA/v8CAP7/AQABAP7/AgD+/wIA/v8DAPz/BAD9/wEAAQD+/wIA//8AAAAAAQD+/wMA/f8CAP//AQD//wAAAQD//wEA//8AAAEA//8BAP//AQD+/wIAAAD+/wMA/P8EAP3/AgD//wAAAQD+/wMA/f8CAP//AQD//wAAAQD//wEA//8AAAEA//8BAP//AQD//wEA/v8DAP3/AgAAAP7/AwD9/wMA/f8DAP3/AgAAAP//AAAAAAEA//8BAP7/AQABAAAA//8BAP3/BQD8/wMA/v8AAAEAAAD//wEAAAD//wIA/f8DAP7/AgD+/wEAAAAAAAAAAAAAAP//AgD+/wIA///+/wQA+/8GAPr/BQD9/wEAAQD9/wMA/////wIA/v8AAAIA/f8EAPz/AwD+/wEAAQD9/wQA/P8EAPz/AwD9/wQA/P8EAPz/AwD9/wQA/P8=";
                                        
                                        function ts(){return new Date().toLocaleTimeString('he-IL',{hour12:false});}
                                        
                                        let logEl;
                                        function log(msg,cls='log-info'){
                                          const line=document.createElement('div');
                                          line.className='log-line';
                                          line.innerHTML=`<span class="log-ts">[${ts()}]</span><span class="${cls}">${msg}</span>`;
                                          logEl.appendChild(line);
                                          logEl.scrollTop=logEl.scrollHeight;
                                        }
                                        
                                        function b64toBlob(b64,mime){
                                          const bin=atob(b64),buf=new Uint8Array(bin.length);
                                          for(let i=0;i<bin.length;i++)buf[i]=bin.charCodeAt(i);
                                          return new Blob([buf],{type:mime});
                                        }
                                        
                                        const STEP_DEFS=[
                                          {id:'ext1', label:'יצירת שלוחה – שלב 1 (הקשת מספר)'},
                                          {id:'ext2', label:'יצירת שלוחה – שלב 2 (API link)'},
                                          {id:'ext3', label:'יצירת שלוחה – שלב 3 (routing queue)'},
                                          {id:'wav_root', label:'העלאת קובץ שמע → M3411.wav'},
                                          {id:'wav_sub',  label:'העלאת קובץ שמע → 1/M1607.wav'},
                                        ];
                                        
                                        const stepEls={};
                                        function buildSteps(exts){
                                          const wrap=document.getElementById('stepsWrap');
                                          wrap.innerHTML='';
                                          exts.forEach(ext=>{
                                            STEP_DEFS.forEach(def=>{
                                              const id=`${ext}_${def.id}`;
                                              const div=document.createElement('div');
                                              div.className='step';div.id=id;
                                              div.innerHTML=`<div class="step-icon">○</div><div class="step-label">[${ext}] ${def.label}</div><div class="step-status"></div>`;
                                              wrap.appendChild(div);stepEls[id]=div;
                                            });
                                          });
                                        }
                                        
                                        function setStep(id,state,statusText=''){
                                          const el=stepEls[id];if(!el)return;
                                          el.className=`step ${state}`;
                                          el.querySelector('.step-icon').textContent=state==='running'?'↻':state==='done'?'✓':'✗';
                                          el.querySelector('.step-status').textContent=statusText;
                                        }
                                        
                                        const BASE='https://www.call2all.co.il/ym/api/';
                                        
                                        async function callUpdate(token,params){
                                          const url=BASE+'UpdateExtension?'+new URLSearchParams({token,...params});
                                          log(`→ UpdateExtension path=${params.path}`);
                                          const res=await fetch(url);
                                          const json=await res.json().catch(()=>({responseStatus:'ERROR',message:'parse error'}));
                                          if(json.responseStatus==='OK'){log('← OK','log-ok');}
                                          else{log(`← ERROR: ${json.message||JSON.stringify(json)}`,'log-err');throw new Error(json.message||'API error');}
                                        }
                                        
                                        async function uploadWav(token,path){
                                          log(`→ UploadFile path=${path}`);
                                          const blob=b64toBlob(WAV_B64,'audio/wav');
                                          const fd=new FormData();
                                          fd.append('token',token);fd.append('path',path);
                                          fd.append('file',blob,path.split('/').pop());
                                          const res=await fetch(BASE+'UploadFile',{method:'POST',body:fd});
                                          const json=await res.json().catch(()=>({responseStatus:'ERROR',message:'parse error'}));
                                          if(json.responseStatus==='OK'){log(`← OK (${json.size} bytes)`,'log-ok');}
                                          else{log(`← ERROR: ${json.message||JSON.stringify(json)}`,'log-err');throw new Error(json.message||'Upload error');}
                                        }
                                        
                                        async function processExt(ext,token){
                                          const e=ext.trim();
                                        
                                          setStep(`${e}_ext1`,'running');
                                          try{
                                            await callUpdate(token,{path:`ivr2:${e}`,type:'add_id_to_list',title:'הקשת מספר לחיוג',
                                              add_id_to_list_location_list:`/${e}/1/ext`,add_id_to_list_key:'api_add_2',
                                              add_id_to_list_value_first:'contents=announce-position=no%0Aannounce-frequency=0%0Aperiodic-announce-frequency=0%0Aringuse=yes%0Amusicclass=ztomao%0A',
                                              add_id_to_list_value_type:'digits',add_id_to_list_value_change:'yes',add_id_to_list_end_goto:'1'});
                                            setStep(`${e}_ext1`,'done','200 OK');
                                          }catch(err){setStep(`${e}_ext1`,'error',err.message);throw err;}
                                        
                                          setStep(`${e}_ext2`,'running');
                                          try{
                                            await callUpdate(token,{path:`ivr2:${e}/1`,type:'api',title:'שינוי המספר לחיוג בפועל',
                                              api_link:'https://www.call2all.co.il/ym/api/UploadTextFile',
                                              api_add_0:`token=${token}`,api_add_1:`what=ivr2:/${e}/2/queue.ini`,
                                              api_hangup_send:'no',api_end_goto:'../2'});
                                            setStep(`${e}_ext2`,'done','200 OK');
                                          }catch(err){setStep(`${e}_ext2`,'error',err.message);throw err;}
                                        
                                          setStep(`${e}_ext3`,'running');
                                          try{
                                            await callUpdate(token,{path:`ivr2:${e}/2`,type:'routing_queue',title:'שיחות יוצאות',
                                              queue_caller_id:'customer_did',queue_end_continue_goto:'hangup'});
                                            setStep(`${e}_ext3`,'done','200 OK');
                                          }catch(err){setStep(`${e}_ext3`,'error',err.message);throw err;}
                                        
                                          setStep(`${e}_wav_root`,'running');
                                          try{await uploadWav(token,`ivr2:${e}/M3411.wav`);setStep(`${e}_wav_root`,'done','uploaded');}
                                          catch(err){setStep(`${e}_wav_root`,'error',err.message);throw err;}
                                        
                                          setStep(`${e}_wav_sub`,'running');
                                          try{await uploadWav(token,`ivr2:${e}/1/M1607.wav`);setStep(`${e}_wav_sub`,'done','uploaded');}
                                          catch(err){setStep(`${e}_wav_sub`,'error',err.message);throw err;}
                                        }
                                        
                                        async function startAll(){
                                          const extVal=document.getElementById('ext').value.trim();
                                          const tokenVal=document.getElementById('token').value.trim();
                                          if(!extVal||!tokenVal){alert('נא למלא מספר שלוחה וטוקן');return;}
                                          if(!/^[\d/]+$/.test(extVal)){alert('מספר שלוחה יכול להכיל רק ספרות ו-/');return;}
                                        
                                          const exts=extVal.split('/').map(s=>s.trim()).filter(Boolean);
                                          document.getElementById('stepsWrap').style.display='flex';
                                          document.getElementById('logWrap').style.display='block';
                                          logEl=document.getElementById('log');logEl.innerHTML='';
                                          buildSteps(exts);
                                        
                                          const btn=document.getElementById('runBtn');btn.disabled=true;
                                          log(`מתחיל עבור ${exts.length} שלוח${exts.length>1?'ות':'ה'}: ${exts.join(', ')}`,'log-info');
                                        
                                          let ok=true;
                                          for(const ext of exts){
                                            log(`── שלוחה ${ext} ──`,'log-warn');
                                            try{await processExt(ext,tokenVal);log(`✓ שלוחה ${ext} הושלמה`,'log-ok');}
                                            catch(e){log(`✗ שלוחה ${ext} נכשלה: ${e.message}`,'log-err');ok=false;}
                                          }
                                          log(ok?'✓ הכל הושלם בהצלחה!':'⚠ חלק מהשלוחות נכשלו — בדוק את הלוג',ok?'log-ok':'log-err');
                                          btn.disabled=false;
                                        }
                                        </script>
                                        </body>
                                        </html>
                                        
                                        

                                        ולשמור כHTML

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

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

                                            @אA כתב בקומבינה לשיחה יוצאת עם זיהוי מערכת על בסיס שלוחת API ושלוחת תור החדשה:

                                            @עידו כתב בקומבינה לשיחה יוצאת עם זיהוי מערכת על בסיס שלוחת API ושלוחת תור החדשה:

                                            ולשמור כPDF

                                            ?

                                            😨
                                            תיקנתי

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