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

    שמות למספרי משנה

    מתוזמן נעוץ נעול הועבר טיפים עצות והדגמות מהמשתמשים
    10 פוסטים 2 כותבים 95 צפיות 2 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • B מנותק
      BEN ZION
      נערך לאחרונה על ידי BEN ZION

      בסייתא דשמיא כתבתי קוד לתוסף tampermonkey שאתה מקליד ערך שקשור לבחירת זיהוי הוא מציג לך את רשימת המספרים שלך אם שמות
      את הרשימה צריך ליצור בקובץ CallerIdMap.ini בשלוחה ראשית
      מספר=שם
      הקוד הוא

      // ==UserScript==
      // @name         Yemot Config Helper - Full Site Names
      // @match        https://*.call2all.co.il/*
      // @grant        GM_xmlhttpRequest
      // @grant        GM_setClipboard
      // @connect      self
      // @connect      *.call2all.co.il
      // ==/UserScript==
      
      (function () {
          'use strict';
      
          let numberToNameMap = new Map(); // number -> name
          let callerIdMap = new Map(); // name -> number
          let approvedNumbers = new Set();
          let approvedSmsNumbers = new Set();
          let missingFromIni = [];
      
          const keysToWatch = [
              "invitation_join_campaign_say_did_number=",
              "queue_caller_id=",
              "send_sms_from=",
              "send_tzintuk_from=",
              "tzintuk_your_id=",
              "out_id=",
              "tzintuk_invitation_join_to_list_caller_id=",
              "out="
          ];
      
          const box = document.createElement("div");
          box.style.cssText = "position: absolute; background: white; border: 1px solid #aaa; box-shadow: 2px 2px 10px rgba(0,0,0,0.2); padding: 5px; display: none; z-index: 10000; max-height: 300px; overflow-y: auto; min-width: 240px; font-family: Arial, sans-serif; direction: rtl; text-align: right; border-radius: 4px;";
          document.body.appendChild(box);
      
          function formatPhoneNumber(num) {
              if (!num) return num;
              let clean = num.toString().trim();
              if (clean.startsWith('+972')) return '0' + clean.substring(4);
              return clean;
          }
      
          // פונקציה להחלפת שמות בכל ה-Selects באתר
          function updateAllSelects() {
              const selects = document.querySelectorAll('select option');
              selects.forEach(option => {
                  const val = formatPhoneNumber(option.value);
                  const name = numberToNameMap.get(val);
                  if (name && !option.textContent.includes(' - ')) {
                      // מונע הדבקה כפולה ומציג "שם - מספר"
                      option.textContent = `${name} - ${val}`;
                  }
              });
          }
      
          function fetchCallerIdMap() {
              const apiUrl = window.location.origin + '/ym/ws.php?ws=YDDownloadIniFile&what=ivr2://CallerIdMap.ini';
              GM_xmlhttpRequest({
                  method: "GET",
                  url: apiUrl,
                  onload: function(response) {
                      try {
                          const jsonData = JSON.parse(response.responseText);
                          if (jsonData.responseStatus === "OK" && jsonData.contents) {
                              parseIniContent(jsonData.contents);
                          }
                      } catch (e) {}
                      fetchApprovedCallerIDs();
                  }
              });
          }
      
          function parseIniContent(content) {
              numberToNameMap.clear();
              callerIdMap.clear();
              const lines = content.split(/\r?\n/);
              for (const line of lines) {
                  const parts = line.split('=');
                  if (parts.length >= 2) {
                      const number = formatPhoneNumber(parts[0]);
                      const name = parts[1].trim();
                      if (number && name) {
                          numberToNameMap.set(number, name);
                          callerIdMap.set(name, number);
                      }
                  }
              }
              updateAllSelects();
          }
      
          function fetchApprovedCallerIDs() {
              const apiUrl = window.location.origin + '/ym/ws.php?ws=GetApprovedCallerIDs';
              GM_xmlhttpRequest({
                  method: "GET",
                  url: apiUrl,
                  onload: function(response) {
                      try {
                          const jsonData = JSON.parse(response.responseText);
                          if (jsonData.responseStatus === "OK") {
                              processApprovedIDs(jsonData);
                          }
                      } catch (e) {}
                  }
              });
          }
      
          function processApprovedIDs(data) {
              approvedNumbers.clear();
              approvedSmsNumbers.clear();
              missingFromIni = [];
      
              if (data.call) {
                  [data.call.mainDid, ...(data.call.secondaryDids || []), ...(data.call.callerIds || [])].forEach(num => {
                      if(num) approvedNumbers.add(formatPhoneNumber(num));
                  });
              }
      
              if (data.sms && Array.isArray(data.sms)) {
                  data.sms.forEach(s => {
                      const fNum = formatPhoneNumber(s.smsId);
                      if(fNum) {
                          approvedNumbers.add(fNum);
                          if (s.allowText) approvedSmsNumbers.add(fNum);
                      }
                  });
              }
      
              approvedNumbers.forEach(num => {
                  if (!numberToNameMap.has(num)) {
                      missingFromIni.push(num + "=");
                  }
              });
              updateAllSelects();
          }
      
          // צפייה בשינויים בדף (עבור חלונות קופצים שנפתחים)
          const observer = new MutationObserver(() => {
              updateAllSelects();
          });
          observer.observe(document.body, { childList: true, subtree: true });
      
          // --- לוגיקת תיבת הטקסט (הקוד הקודם) ---
          function showBox(textarea, isSmsMode) {
              box.innerHTML = "";
              const title = document.createElement("div");
              title.style.cssText = "font-weight:bold; border-bottom:1px solid #ccc; margin-bottom:5px; padding-bottom:3px; font-size:12px;";
              title.textContent = isSmsMode ? "בחר מזהה SMS:" : "בחר מזהה:";
              box.appendChild(title);
      
              if (missingFromIni.length > 0) {
                  const copyBtn = document.createElement("button");
                  copyBtn.textContent = `העתק ${missingFromIni.length} חסרים ל-INI`;
                  copyBtn.style.cssText = "width:100%; margin-bottom:8px; padding:4px; cursor:pointer; background:#e1f5fe; border:1px solid #03a9f4; border-radius:3px; font-size:11px;";
                  copyBtn.onmousedown = (e) => {
                      e.preventDefault();
                      GM_setClipboard(missingFromIni.join("\n"));
                      copyBtn.textContent = "הועתק!";
                      setTimeout(() => { box.style.display = "none"; }, 800);
                  };
                  box.appendChild(copyBtn);
              }
      
              callerIdMap.forEach((number, name) => {
                  if (isSmsMode && !approvedSmsNumbers.has(number)) return;
                  const item = document.createElement("div");
                  item.textContent = `${name} (${number})`;
                  item.style.cssText = "cursor: pointer; padding: 5px; border-bottom: 1px solid #eee; font-size: 13px;";
                  item.onmouseover = () => item.style.backgroundColor = "#f5f5f5";
                  item.onmouseout = () => item.style.backgroundColor = "transparent";
                  item.onmousedown = (e) => {
                      e.preventDefault();
                      insert(textarea, number);
                      box.style.display = "none";
                  };
                  box.appendChild(item);
              });
      
              const rect = textarea.getBoundingClientRect();
              box.style.top = (rect.top + window.scrollY + 20) + "px";
              box.style.left = (rect.left + window.scrollX) + "px";
              box.style.display = "block";
          }
      
          function insert(textarea, value) {
              const start = textarea.selectionStart;
              const end = textarea.selectionEnd;
              textarea.value = textarea.value.substring(0, start) + value + textarea.value.substring(end);
              textarea.setSelectionRange(start + value.length, start + value.length);
              textarea.dispatchEvent(new Event('input', { bubbles: true }));
              textarea.focus();
          }
      
          fetchCallerIdMap();
      
          document.addEventListener("input", (e) => {
              if (e.target.tagName === "TEXTAREA") {
                  const textBefore = e.target.value.substring(0, e.target.selectionStart);
                  const matchedKey = keysToWatch.find(key => textBefore.endsWith(key));
                  if (matchedKey) showBox(e.target, matchedKey === "send_sms_from=");
                  else box.style.display = "none";
              }
          });
      
          document.addEventListener("mousedown", (e) => {
              if (!box.contains(e.target) && e.target.tagName !== "TEXTAREA") box.style.display = "none";
          });
      
      })();
      

      אם יש מישהו שיכול לעשות שזה יהיה אוטמטי רק להתקין תוסף כמו זה זה יביא תועלת להרבה משתמשים וכן אם יש עוד הגדרות שקשורות לזיהוי להוסיף
      קרדיט @cubase לקחתי את הבסיס של הקוד של התוסף שלו ושיניתי על ידי בינה
      @מוזר

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

        @BEN-ZION אתה יכול לעשות את זה אוטומטי, תבקש מהבינה שישתמש בקריאה ל-https://www.call2all.co.il/ym/ws.php?ws=GetApprovedCallerIDs ובתשובה יש מערך מספרים מאושרים במערכת במבנה המפורט כאן

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

          @CUBASE אצלי זה אוטומטי התכונתי להעלות לאיזה שרת או משהו שכל מי שירצה את התוסף יוכל להתקין אותו כמו המוזמנים לרשימת צינתוקים

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

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

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

              @CUBASE אבל איפא אני יכתוב להם שמות?

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

                @BEN-ZION למה צריך שמות?

                הרעיון בזה הוא שנפתח לך רשימה ואתה בוחר את אחד המספרים, לא?

                האמת שלא בדקתי את זה אבל כך הבנתי

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

                  @CUBASE אני לא זוכר לפי המספרים יש לי 10 מס' אני לא זוכר למה כל אחד משמש ככה כל מס' חדש אני רושם לאיזה קו הוא ושאני עורך הגדרות של הקו מופיע לי השם ליד המס'

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

                    @BEN-ZION אז אולי תעשה את זה משולב, כי עם קריאה לשירות שציינתי לעיל אתה מקבל את רשימת המספרים המאושרים לשיחות והמאושרים לסמס, כך שאם אתה מקליד לדוג׳ send_sms_from= אז מופיעים לך רק המספרים המאושרים לסמס

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

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

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

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

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