• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות
    1. דף הבית
    2. עידו
    3. פוסטים
    ע
    מחובר
    • פרופיל
    • עוקב אחרי 0
    • עוקבים 5
    • נושאים 81
    • פוסטים 1,862
    • קבוצות 0

    פוסטים

    פוסטים אחרונים הגבוה ביותר שנוי במחלוקת
    • RE: קומבינה לשיחה יוצאת עם זיהוי מערכת על בסיס שלוחת API ושלוחת תור החדשה

      @אA על מה מדובר?

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

      @בעז @אa @cubase מי שמשתמש בקובץ שהעלתי לא צריך להעלות כלום, הקובץ של @cubase כבר יתווסף לשם לבד במקומות הנכונים עם השמות הנכונים.

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

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

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

      ולשמור כPDF

      ?

      😨
      תיקנתי

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

      עודכן בהודעה הראשונה קובץ שמכין את כל ה"מערכת" הזאת קומפלט עם כל הקבצים השקטים - לא לשים / אני לא יודע מה הוא יעשה עם זה!.
      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

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

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

      1
      1/1
      1/2
      ?

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

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

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

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו
    • RE: עקיפת מגבלת הניקוד. יש כזה דבר ? לקוחות שמצליחים לצבור ניקוד פעמיים בניגוד להגדרה שמונעת את זה..

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

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

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

      @עידו
      מה הבעיה במודל החדש שם אפשר לעשות בחינם זיהוי יוצא של המערכת

      בדיוק על זה דיברנו!

      רק שמה ששלחת הוא איזה מספר הנציג יראה, אנחנו רוצים שהלקוח או מי שמחייגים אליו יראה.

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו
    • RE: מידע על מספר נייח כמספר משנה למערכת.

      @y6714453 אם תגיד שאתה רוצה לנייד סביר להניח שלא יתנו לך קו

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו
    • RE: רישום

      @עימוד כתב ברישום:

      type=recording_and_entering_data

      תמחק את זה

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו
    • RE: רישום

      @עימוד https://f2.freeivr.co.il/topic/7010/השמעת-קבצים/5?_=1774352204609#:~:text=2021%2C 11%3A00-,פעולות במקשים במהלך ההשמעה ולאחריה,-ניתן להגדיר - שאם

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו
    • RE: רישום

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

      type=add_id_to_list
      add_id_to_list_location_list=/Subscribers_phone_number
      

      אתה יכול להוסיף הודעה מספר M3411 עם ההודעה שתרצה שישמעו, כרגע זה הרישום בוצע בהצלחה שלום ותודה

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

      כל מספרי הטלפון שנרשמו יהיו בשלוח ההראשית בקובץ שנקרא Subscribers_phone_number.ini

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו
    • RE: חדש! מודול ניתוב שיחות לפי תור ללא עלות יחידות - שרשור מתעדכן

      @eliyahu מה לגבי רישום לחזרה? זה היום חובה במערכות

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

      @963 לא, רק התוכן של הcontents נכנס

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו
    • RE: ארכיון הודעות

      @0799 בעקרון זה מעביר לכולם ולא רק למי ששמע אותו.

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

      @BEN-ZION אכן עובד מצוין

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

      @BEN-ZION חחחח שכחתי... פרט שולי....

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

      @BEN-ZION

      type=api
      title=
      api_link=https://call2all.co.il/ym/api/UploadTextFile
      api_add_0=token=WU1BUElL.apik_******
      api_add_1=what=ivr2:3/1/1/queue.ini
      api_000=contents,no,10,9,Phone,
      api_end_goto=/3/1/1
      
      api_hangup_send=no
      api_call_id_send=no
      api_phone_send=no
      api_did_send=no
      api_extension_send=no
      api_enter_id_send=no
      api_enter_id_name_send=no
      api_time_send=no
      
      

      אומר מיד אין מענה משרת API אפילו לא מבקש הקשות

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

      @BEN-ZION מעניין, כי ידוע שבפקודה הזו קצת לוקח זמן עד שהכל מתעדכן

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

      @BEN-ZION כתב בקומבינה לשיחה יוצאת עם זיהוי מערכת - הוספת ערך ל2 מקומות:

      @אA אני עשיתי אצלי אם הוספת ערך וזה עבד לי מיד

      איך הוספת ערך?

      פורסם בעזרה הדדית למשתמשים מתקדמים
      ע
      עידו