• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות
    1. דף הבית
    2. sh0548534047
    S מנותק
    • פרופיל
    • עוקב אחרי 0
    • עוקבים 5
    • נושאים 25
    • פוסטים 617
    • קבוצות 0

    sh0548534047

    @sh0548534047

    97
    מוניטין
    70
    צפיות בפרופיל
    617
    פוסטים
    5
    עוקבים
    0
    עוקב אחרי
    תאריך הצטרפות
    נראה לאחרונה
    גיל 31
    מיקום ישראל

    sh0548534047 הפסקת מעקב מעקב

    הפוסטים הטובים ביותר שנוצרו על ידי sh0548534047

    • RE: הקלטת "פרסומת קצרה"

      @לימוד-בתורת-מרן
      תודה רבה לך

      פורסם בשאלות ועזרה הדדית
      S
      sh0548534047
    • RE: ועדת הרבנים חסמו לנו את המערכת, מה הפתרונות?

      @פלוס
      אני שלחתי כבר כמה פניות אליהם והיה לי אוזן קשבת
      כנראה באמת שתלוי במה עוסק המערכת...

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: 🗃 ארכיון: מעבר למערכת במענה לצינתוק - יש הגדרה מובנית (וגם אפשרות לביטול)

      @פלוס כתב ב🔥🔥🔥מעבר למערכת במענה לצינתוק - יש הגדרה מובנית!!!:

      רק בשלוחה הספציפית של הודעות אישיות.

      בהודעות אישיות זה נראה לי בעיה.
      חוץ אם יש לך רק כמה שלוחות אז תגדיר בכל האחרים

      tzintuk_say_system_info_on_answer=no
      

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

      פורסם בטיפים עצות והדגמות מהמשתמשים
      S
      sh0548534047
    • מוזיקה בהמתנה

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

      קוד ה HTML הוא

      <!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 {
            --gold: #d6a63a;
            --gold-light: #fff0b0;
            --text: #fff9e8;
            --muted: #b7aa88;
            --danger: #ff9e9e;
            --success: #a9efb0;
            --line: rgba(220,177,71,.28);
          }
      
          * {
            box-sizing: border-box;
          }
      
          body {
            margin: 0;
            min-height: 100vh;
            color: var(--text);
            background: #050505;
            font-family: Arial, "Segoe UI", sans-serif;
            overflow-x: hidden;
          }
      
          body::before,
          body::after {
            content: "";
            position: fixed;
            width: 360px;
            height: 360px;
            border-radius: 50%;
            filter: blur(8px);
            pointer-events: none;
            opacity: .3;
            z-index: 0;
          }
      
          body::before {
            top: -150px;
            right: -100px;
            background: radial-gradient(circle, #b88120, transparent 68%);
          }
      
          body::after {
            bottom: -190px;
            left: -110px;
            background: radial-gradient(circle, #67430d, transparent 68%);
          }
      
          .page {
            position: relative;
            z-index: 1;
            width: min(980px, calc(100% - 28px));
            margin: 0 auto;
            padding: 40px 0 58px;
          }
      
          header {
            text-align: center;
            margin-bottom: 30px;
            animation: rise .7s ease both;
          }
      
          .brand-mark {
            width: 58px;
            height: 58px;
            margin: 0 auto 16px;
            display: grid;
            place-items: center;
            color: #1b1306;
            font-size: 1.7rem;
            border: 1px solid #ffe39a;
            border-radius: 18px 18px 18px 4px;
            background: linear-gradient(145deg, #fff0ae, var(--gold));
            box-shadow:
              0 0 35px rgba(214,166,58,.25),
              inset 0 1px rgba(255,255,255,.7);
            transform: rotate(-8deg);
          }
      
          .eyebrow {
            color: var(--muted);
            font-size: .78rem;
            letter-spacing: .18em;
            margin-bottom: 10px;
          }
      
          h1 {
            margin: 0;
            font-size: clamp(2.25rem, 7vw, 4rem);
            letter-spacing: -.04em;
            background: linear-gradient(
              135deg,
              #fff8d6 8%,
              var(--gold-light) 40%,
              #a7741c 90%
            );
            -webkit-background-clip: text;
            background-clip: text;
            color: transparent;
          }
      
          .subtitle {
            color: #8f825f;
            margin: 12px 0 0;
            font-size: .93rem;
          }
      
          .tabs {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 9px;
            padding: 8px;
            margin-bottom: 19px;
            background: rgba(20,17,11,.72);
            border: 1px solid var(--line);
            border-radius: 20px;
            box-shadow: 0 18px 60px rgba(0,0,0,.32);
            backdrop-filter: blur(18px);
          }
      
          .tab {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 9px;
            border: 1px solid transparent;
            border-radius: 14px;
            padding: 15px 8px;
            color: var(--muted);
            background: transparent;
            cursor: pointer;
            font-size: .98rem;
            font-weight: 700;
            transition: .25s ease;
          }
      
          .tab:hover {
            color: var(--gold-light);
            background: rgba(216,169,58,.09);
            transform: translateY(-1px);
          }
      
          .tab.active {
            color: #1c1304;
            background: linear-gradient(
              135deg,
              #fff0ab,
              #d4a33a 72%,
              #a5761f
            );
            border-color: #ffe69a;
            box-shadow: 0 7px 22px rgba(214,166,58,.2);
          }
      
          .card {
            position: relative;
            padding: clamp(23px, 5vw, 40px);
            background: linear-gradient(
              145deg,
              rgba(35,30,18,.78),
              rgba(11,11,10,.88) 65%
            );
            border: 1px solid var(--line);
            border-radius: 24px;
            box-shadow:
              0 25px 90px rgba(0,0,0,.48),
              inset 0 1px rgba(255,244,190,.08);
            backdrop-filter: blur(22px);
          }
      
          .card-head {
            position: relative;
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 20px;
            margin-bottom: 28px;
          }
      
          .card-title {
            margin: 0 0 7px;
            color: var(--gold-light);
            font-size: 1.65rem;
          }
      
          .endpoint {
            margin: 0;
            color: #96865f;
            font-size: .78rem;
            direction: ltr;
            text-align: right;
            word-break: break-all;
          }
      
          .live-badge {
            display: flex;
            align-items: center;
            gap: 7px;
            padding: 8px 11px;
            color: #d9c794;
            border: 1px solid rgba(214,166,58,.28);
            border-radius: 99px;
            background: rgba(214,166,58,.08);
            font-size: .72rem;
            white-space: nowrap;
          }
      
          .live-dot {
            width: 7px;
            height: 7px;
            border-radius: 50%;
            background: #b9e887;
            box-shadow: 0 0 10px #b9e887;
          }
      
          .fields {
            position: relative;
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 18px;
          }
      
          .field.full {
            grid-column: 1 / -1;
          }
      
          .field[hidden] {
            display: none !important;
          }
      
          label {
            display: flex;
            align-items: center;
            gap: 7px;
            color: #ebddad;
            font-weight: 700;
            margin-bottom: 9px;
            font-size: .9rem;
          }
      
          label span {
            color: var(--gold);
          }
      
          input {
            width: 100%;
            padding: 15px 16px;
            color: var(--text);
            background: rgba(4,4,4,.72);
            border: 1px solid #514625;
            border-radius: 12px;
            outline: none;
            font-size: 1rem;
            direction: ltr;
            text-align: left;
            transition: .2s ease;
          }
      
          input:focus {
            border-color: var(--gold);
            background: #100e09;
            box-shadow:
              0 0 0 4px rgba(216,169,58,.12),
              0 5px 22px rgba(0,0,0,.24);
          }
      
          input::placeholder {
            color: #706547;
          }
      
          input[type="file"] {
            direction: rtl;
            text-align: right;
            padding: 11px;
            cursor: pointer;
          }
      
          input[type="file"]::file-selector-button {
            margin-left: 12px;
            padding: 9px 14px;
            color: #1b1306;
            background: linear-gradient(135deg, #fff0ad, var(--gold));
            border: 0;
            border-radius: 8px;
            font-weight: 700;
            cursor: pointer;
          }
      
          input[readonly] {
            color: var(--gold-light);
          }
      
          /* שתי אפשרויות ברוחב שווה */
          .mode-options {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 12px;
            width: 100%;
          }
      
          .mode-option {
            display: block;
            width: 100%;
            cursor: pointer;
          }
      
          .mode-option input {
            position: absolute;
            opacity: 0;
            pointer-events: none;
          }
      
          .mode-option-content {
            display: block;
            width: 100%;
            min-height: 92px;
            padding: 15px;
            color: var(--muted);
            background: rgba(4,4,4,.52);
            border: 1px solid #514625;
            border-radius: 12px;
            transition: .2s ease;
          }
      
          .mode-option-content strong {
            display: block;
            color: #ebddad;
            margin-bottom: 5px;
          }
      
          .mode-option-content small {
            color: #8f825f;
            line-height: 1.5;
          }
      
          .mode-option input:checked + .mode-option-content {
            color: var(--text);
            border-color: var(--gold);
            background: rgba(214,166,58,.12);
            box-shadow: 0 0 0 3px rgba(214,166,58,.08);
          }
      
          .mode-option input:checked + .mode-option-content strong {
            color: var(--gold-light);
          }
      
          .file-help {
            margin-top: 8px;
            color: #827652;
            font-size: .75rem;
            line-height: 1.6;
          }
      
          .actions {
            position: relative;
            display: flex;
            justify-content: flex-start;
            margin-top: 28px;
          }
      
          button[type="submit"] {
            min-width: 210px;
            padding: 15px 27px;
            border: 0;
            border-radius: 12px;
            color: #171108;
            background: linear-gradient(135deg, #fff0ad, var(--gold));
            font-size: 1rem;
            font-weight: 800;
            cursor: pointer;
            box-shadow: 0 10px 30px rgba(214,166,58,.2);
            transition: .2s ease;
          }
      
          button[type="submit"]:hover {
            transform: translateY(-3px);
            filter: brightness(1.08);
          }
      
          button[type="submit"]:disabled {
            opacity: .55;
            cursor: wait;
            transform: none;
          }
      
          .status-box {
            position: relative;
            display: none;
            margin-top: 20px;
            padding: 15px 18px;
            border-radius: 12px;
            border: 1px solid rgba(214,166,58,.28);
            background: rgba(214,166,58,.08);
            color: var(--gold-light);
            line-height: 1.7;
          }
      
          .status-box.show {
            display: block;
          }
      
          .status-box.success {
            color: var(--success);
            border-color: rgba(169,239,176,.35);
            background: rgba(169,239,176,.07);
          }
      
          .status-box.error {
            color: var(--danger);
            border-color: rgba(255,158,158,.35);
            background: rgba(255,158,158,.07);
          }
      
          .response-box {
            position: relative;
            margin-top: 27px;
            padding: 21px;
            border: 1px solid rgba(214,166,58,.42);
            border-radius: 17px;
            background: rgba(3,3,3,.65);
          }
      
          .response-box h2 {
            margin: 0 0 14px;
            color: var(--gold-light);
            font-size: 1.16rem;
          }
      
          #response {
            margin: 0;
            min-height: 74px;
            white-space: pre-wrap;
            overflow-wrap: anywhere;
            color: var(--text);
            font: 14px/1.7 Consolas, monospace;
            direction: ltr;
            text-align: left;
          }
      
          #response.success {
            color: var(--success);
          }
      
          #response.error {
            color: var(--danger);
          }
      
          .result-actions {
            display: none;
            gap: 10px;
            margin-top: 15px;
          }
      
          .result-actions.show {
            display: flex;
          }
      
          .copy-button {
            padding: 10px 15px;
            border: 1px solid var(--gold);
            border-radius: 9px;
            color: var(--gold-light);
            background: rgba(214,166,58,.12);
            cursor: pointer;
            font-weight: 700;
          }
      
          @keyframes rise {
            from {
              opacity: 0;
              transform: translateY(14px);
            }
      
            to {
              opacity: 1;
              transform: translateY(0);
            }
          }
      
          @media (max-width: 620px) {
            .tabs,
            .fields {
              grid-template-columns: 1fr;
            }
      
            .field.full {
              grid-column: auto;
            }
      
            .mode-options {
              grid-template-columns: 1fr;
            }
      
            .actions button {
              width: 100%;
            }
      
            .card-head {
              display: block;
            }
      
            .live-badge {
              display: inline-flex;
              margin-top: 14px;
            }
          }
        </style>
      </head>
      
      <body>
        <main class="page">
          <header>
            <div class="brand-mark" aria-hidden="true">♫</div>
            <div class="eyebrow">ניהול מוזיקה בהמתנה</div>
            <h1>מוזיקה בהמתנה</h1>
            <p class="subtitle">
              יצירה, בדיקה ומחיקה של מנגינות במערכת ימות המשיח
            </p>
          </header>
      
          <nav class="tabs" aria-label="סוג פעולה">
            <button class="tab active" type="button" data-mode="create">
              ✦ יצירת מוזיקה
            </button>
      
            <button class="tab" type="button" data-mode="check">
              ⌕ בדיקת מוזיקה
            </button>
      
            <button class="tab" type="button" data-mode="delete">
              ⌫ מחיקת מוזיקה
            </button>
          </nav>
      
          <section class="card">
            <div class="card-head">
              <div>
                <h2 class="card-title" id="modeTitle">
                  יצירת מוזיקה
                </h2>
      
                <p class="endpoint" id="endpoint">
                  https://www.call2all.co.il/ym/api/CreateMusicOnHolds
                </p>
              </div>
      
              <div class="live-badge">
                <span class="live-dot"></span>
                חיבור פעיל
              </div>
            </div>
      
            <form id="musicForm">
              <div class="fields">
      
                <div class="field full">
                  <label for="token">
                    טוקן המערכת
                    <span>*</span>
                  </label>
      
                  <input
                    id="token"
                    name="token"
                    type="text"
                    required
                    autocomplete="off"
                    placeholder="הזן token"
                  >
                </div>
      
                <div class="field full" id="sourceField">
                  <label>
                    מקור המוזיקה
                    <span>*</span>
                  </label>
      
                  <div class="mode-options">
                    <label class="mode-option">
                      <input
                        type="radio"
                        name="musicSource"
                        value="existing"
                        checked
                      >
      
                      <span class="mode-option-content">
                        <strong>שימוש בקובץ קיים</strong>
                        <small>
                          הקובץ כבר נמצא במערכת.
                        </small>
                      </span>
                    </label>
      
                    <label class="mode-option">
                      <input
                        type="radio"
                        name="musicSource"
                        value="upload"
                      >
      
                      <span class="mode-option-content">
                        <strong>העלאת קובץ חדש</strong>
                        <small>
                          הקובץ יועלה בשם המנגינה.
                        </small>
                      </span>
                    </label>
                  </div>
                </div>
      
                <div class="field full" id="pathField" hidden>
                  <label for="path">
                    נתיב לבדיקה
                    <span>*</span>
                  </label>
      
                  <input
                    id="path"
                    name="path"
                    type="text"
                    value="ivr2:/"
                    placeholder="ivr2:/"
                  >
                </div>
      
                <div class="field full" id="folderPathField">
                  <label for="folderPath">
                    נתיב התיקייה של הקובץ הקיים
                    <span>*</span>
                  </label>
      
                  <input
                    id="folderPath"
                    name="folderPath"
                    type="text"
                    value="ivr2:/"
                    placeholder="לדוגמה: ivr2:/1/1"
                  >
                </div>
      
                <div class="field full" id="nameField">
                  <label for="name">
                    שם הקובץ ושם המנגינה
                    <span>*</span>
                  </label>
      
                  <input
                    id="name"
                    name="name"
                    type="text"
                    required
                    placeholder="לדוגמה: שלום"
                  >
                </div>
      
                <div class="field full" id="uploadPathField" hidden>
                  <label for="uploadBasePath">
                    נתיב השלוחה
                    <span>*</span>
                  </label>
      
                  <input
                    id="uploadBasePath"
                    name="uploadBasePath"
                    type="text"
                    value="ivr2:/"
                    placeholder="לדוגמה: ivr2:/1/1"
                  >
                </div>
      
                <div class="field full" id="fullPathField" hidden>
                  <label for="fullUploadPath">
                    נתיב מלא שייווצר אוטומטית
                  </label>
      
                  <input
                    id="fullUploadPath"
                    type="text"
                    readonly
                  >
      
                  <div class="file-help">
                    לדוגמה: ivr2:/1/1/שלום/שלום.wav
                  </div>
                </div>
      
                <div class="field full" id="fileField" hidden>
                  <label for="audioFile">
                    בחירת קובץ שמע
                    <span>*</span>
                  </label>
      
                  <input
                    id="audioFile"
                    name="audioFile"
                    type="file"
                    accept="audio/*,.mp3,.wav,.m4a,.ogg,.aac,.flac"
                  >
      
                  <div class="file-help">
                    גודל מקסימלי: 45MB.
                  </div>
                </div>
      
              </div>
      
              <div class="actions">
                <button id="submitButton" type="submit">
                  שליחה לשרת
                </button>
              </div>
            </form>
      
            <div id="statusBox" class="status-box"></div>
      
            <div class="response-box">
              <h2>תשובת שרת</h2>
      
              <pre id="response">כאן תוצג התשובה לאחר השליחה.</pre>
      
              <div id="resultActions" class="result-actions">
                <button id="copyButton" class="copy-button" type="button">
                  העתקת קוד המנגינה
                </button>
              </div>
            </div>
          </section>
        </main>
      
        <script>
          const API_BASE =
            "https://www.call2all.co.il/ym/api/";
      
          const modes = {
            create: {
              title: "יצירת מוזיקה",
              endpoint: "CreateMusicOnHolds"
            },
      
            check: {
              title: "בדיקת מוזיקה",
              endpoint: "GetMusicOnHoldByPath"
            },
      
            delete: {
              title: "מחיקת מוזיקה",
              endpoint: "DeleteMusicOnHolds"
            }
          };
      
          let currentMode = "create";
      
          const form =
            document.getElementById("musicForm");
      
          const response =
            document.getElementById("response");
      
          const modeTitle =
            document.getElementById("modeTitle");
      
          const endpointText =
            document.getElementById("endpoint");
      
          const submitButton =
            document.getElementById("submitButton");
      
          const statusBox =
            document.getElementById("statusBox");
      
          const resultActions =
            document.getElementById("resultActions");
      
          const copyButton =
            document.getElementById("copyButton");
      
          const tokenInput =
            document.getElementById("token");
      
          const pathInput =
            document.getElementById("path");
      
          const folderPathInput =
            document.getElementById("folderPath");
      
          const nameInput =
            document.getElementById("name");
      
          const uploadBasePathInput =
            document.getElementById("uploadBasePath");
      
          const fullUploadPathInput =
            document.getElementById("fullUploadPath");
      
          const audioFileInput =
            document.getElementById("audioFile");
      
          const fields = {
            source: document.getElementById("sourceField"),
            path: document.getElementById("pathField"),
            folderPath: document.getElementById("folderPathField"),
            name: document.getElementById("nameField"),
            uploadPath: document.getElementById("uploadPathField"),
            fullPath: document.getElementById("fullPathField"),
            file: document.getElementById("fileField")
          };
      
          function getMusicSource() {
            const selected =
              document.querySelector(
                'input[name="musicSource"]:checked'
              );
      
            return selected
              ? selected.value
              : "existing";
          }
      
          function setRequired(element, required) {
            element.required = required;
          }
      
          function cleanPath(path) {
            return path.trim().replace(/\/+$/, "");
          }
      
          function setStatus(message, type = "") {
            statusBox.textContent = message;
            statusBox.className = "status-box show";
      
            if (type) {
              statusBox.classList.add(type);
            }
          }
      
          function clearStatus() {
            statusBox.textContent = "";
            statusBox.className = "status-box";
          }
      
          function setResponse(message, type = "") {
            response.textContent = message;
            response.className = type;
          }
      
          function hideCopyButton() {
            resultActions.classList.remove("show");
            response.dataset.musicCode = "";
          }
      
          function showCopyButton(code) {
            response.dataset.musicCode = code;
            resultActions.classList.add("show");
          }
      
          function updateFullUploadPath() {
            const basePath =
              cleanPath(uploadBasePathInput.value);
      
            const musicName =
              nameInput.value.trim();
      
            if (!basePath || !musicName) {
              fullUploadPathInput.value = "";
              return;
            }
      
            fullUploadPathInput.value =
              `${basePath}/${musicName}/${musicName}.wav`;
          }
      
          function updateCreateFields() {
            const isUpload =
              getMusicSource() === "upload";
      
            fields.folderPath.hidden = isUpload;
            fields.uploadPath.hidden = !isUpload;
            fields.fullPath.hidden = !isUpload;
            fields.file.hidden = !isUpload;
      
            setRequired(
              folderPathInput,
              currentMode === "create" && !isUpload
            );
      
            setRequired(
              uploadBasePathInput,
              currentMode === "create" && isUpload
            );
      
            setRequired(
              audioFileInput,
              currentMode === "create" && isUpload
            );
      
            updateFullUploadPath();
          }
      
          function setMode(mode) {
            currentMode = mode;
      
            const config = modes[mode];
      
            modeTitle.textContent = config.title;
            endpointText.textContent =
              API_BASE + config.endpoint;
      
            document.querySelectorAll(".tab")
              .forEach(tab => {
                tab.classList.toggle(
                  "active",
                  tab.dataset.mode === mode
                );
              });
      
            fields.source.hidden = mode !== "create";
            fields.path.hidden = mode !== "check";
            fields.name.hidden = mode === "check";
      
            if (mode !== "create") {
              fields.folderPath.hidden = true;
              fields.uploadPath.hidden = true;
              fields.fullPath.hidden = true;
              fields.file.hidden = true;
            } else {
              updateCreateFields();
            }
      
            setRequired(pathInput, mode === "check");
            setRequired(nameInput, mode !== "check");
      
            clearStatus();
            hideCopyButton();
            setResponse(
              "כאן תוצג התשובה לאחר השליחה."
            );
          }
      
          function pretty(value) {
            if (typeof value === "string") {
              return value;
            }
      
            try {
              return JSON.stringify(value, null, 2);
            } catch {
              return String(value);
            }
          }
      
          function displayServerError(value) {
            hideCopyButton();
            setResponse(pretty(value), "error");
          }
      
          async function readResponse(responseObject) {
            const rawText =
              await responseObject.text();
      
            try {
              return JSON.parse(rawText);
            } catch {
              return rawText;
            }
          }
      
          function validateApiReply(reply) {
            if (
              !reply ||
              typeof reply !== "object" ||
              Array.isArray(reply)
            ) {
              throw new Error(pretty(reply));
            }
      
            if (
              reply.responseStatus &&
              String(reply.responseStatus).toUpperCase() !== "OK"
            ) {
              throw new Error(
                reply.message ||
                reply.messageCode ||
                "השרת החזיר שגיאה."
              );
            }
      
            return reply;
          }
      
          async function uploadAudioFile(
            token,
            uploadFolderPath,
            file,
            musicName
          ) {
            const uploadFilePath =
              `${uploadFolderPath}/${musicName}.wav`;
      
            const renamedFile = new File(
              [file],
              `${musicName}.wav`,
              {
                type: "audio/wav",
                lastModified: Date.now()
              }
            );
      
            const formData = new FormData();
      
            formData.append("token", token);
      
            /*
              שליחת נתיב מלא לקובץ,
              ולא רק נתיב התיקייה.
            */
            formData.append("path", uploadFilePath);
      
            formData.append("convertAudio", "1");
            formData.append("autoNumbering", "0");
            formData.append("tts", "0");
            formData.append(
              "file",
              renamedFile,
              `${musicName}.wav`
            );
      
            const uploadResponse = await fetch(
              `${API_BASE}UploadFile`,
              {
                method: "POST",
                body: formData
              }
            );
      
            const uploadReply =
              await readResponse(uploadResponse);
      
            if (!uploadResponse.ok) {
              throw new Error(
                "שגיאת HTTP בזמן העלאת הקובץ."
              );
            }
      
            validateApiReply(uploadReply);
      
            return {
              folderPath: uploadFolderPath,
              filePath: uploadFilePath,
              reply: uploadReply
            };
          }
      
          async function createMusicFromExisting(
            token,
            folderPath,
            name
          ) {
            const params = new URLSearchParams();
      
            params.set("token", token);
            params.set("folderPath", folderPath);
            params.set("name", name);
      
            const createResponse = await fetch(
              `${API_BASE}CreateMusicOnHolds?${params.toString()}`,
              {
                method: "GET",
                headers: {
                  Accept: "application/json, text/plain, */*"
                }
              }
            );
      
            const createReply =
              await readResponse(createResponse);
      
            if (!createResponse.ok) {
              throw new Error(
                "שגיאת HTTP בזמן יצירת המוזיקה."
              );
            }
      
            return validateApiReply(createReply);
          }
      
          async function createMusicAfterUpload(
            token,
            folderPath,
            name
          ) {
            const data = new URLSearchParams();
      
            data.append("token", token);
            data.append("folderPath", folderPath);
            data.append("name", name);
      
            const createResponse = await fetch(
              `${API_BASE}CreateMusicOnHolds`,
              {
                method: "POST",
                headers: {
                  "Content-Type":
                    "application/x-www-form-urlencoded",
      
                  Accept:
                    "application/json, text/plain, */*"
                },
                body: data.toString()
              }
            );
      
            const createReply =
              await readResponse(createResponse);
      
            if (!createResponse.ok) {
              throw new Error(
                "שגיאת HTTP בזמן יצירת המוזיקה."
              );
            }
      
            return validateApiReply(createReply);
          }
      
          function displayCreateResult(reply) {
            const musicCode =
              reply.status ?? reply.data;
      
            if (
              musicCode === undefined ||
              musicCode === null ||
              musicCode === false
            ) {
              throw new Error(
                "השרת לא החזיר קוד מנגינה תקין."
              );
            }
      
            setResponse(
              `type=music_on_hold\nmusic_on_hold=${musicCode}`,
              "success"
            );
      
            showCopyButton(String(musicCode));
          }
      
          function displayCheckResult(reply) {
            if (
              reply.data === false ||
              String(reply.data).toLowerCase() === "false"
            ) {
              setResponse("אין קובץ מעודכן", "success");
              return;
            }
      
            setResponse(
              `type=music_on_hold\nmusic_on_hold=${reply.data}`,
              "success"
            );
      
            showCopyButton(String(reply.data));
          }
      
          function displayDeleteResult(reply) {
            if (
              reply.status === true ||
              String(reply.status).toLowerCase() === "true"
            ) {
              setResponse(
                "המנגינה נמחקה בהצלחה.",
                "success"
              );
            } else {
              displayServerError(reply);
            }
          }
      
          async function handleCreate() {
            const token = tokenInput.value.trim();
            const name = nameInput.value.trim();
      
            if (getMusicSource() === "upload") {
              const file = audioFileInput.files[0];
      
              if (!file) {
                throw new Error("יש לבחור קובץ להעלאה.");
              }
      
              if (file.size > 45 * 1024 * 1024) {
                throw new Error(
                  "הקובץ גדול מדי. הגודל המרבי הוא 45MB."
                );
              }
      
              const basePath =
                cleanPath(uploadBasePathInput.value);
      
              if (!basePath) {
                throw new Error("יש להזין נתיב שלוחה.");
              }
      
              const uploadFolderPath =
                `${basePath}/${name}`;
      
              setStatus(
                "שלב 1 מתוך 2: מעלה את הקובץ..."
              );
      
              await uploadAudioFile(
                token,
                uploadFolderPath,
                file,
                name
              );
      
              setStatus(
                "שלב 2 מתוך 2: מגדיר את הקובץ כמוזיקה בהמתנה..."
              );
      
              const createReply =
                await createMusicAfterUpload(
                  token,
                  uploadFolderPath,
                  name
                );
      
              displayCreateResult(createReply);
      
              setStatus(
                "הפעולה הושלמה בהצלחה.",
                "success"
              );
      
              return;
            }
      
            const folderPath =
              folderPathInput.value.trim();
      
            setStatus(
              "מגדיר את הקובץ הקיים כמוזיקה בהמתנה..."
            );
      
            const createReply =
              await createMusicFromExisting(
                token,
                folderPath,
                name
              );
      
            displayCreateResult(createReply);
      
            setStatus(
              "המנגינה נוצרה בהצלחה מהקובץ הקיים.",
              "success"
            );
          }
      
          async function handleCheck() {
            const params = new URLSearchParams();
      
            params.set("token", tokenInput.value.trim());
            params.set("path", pathInput.value.trim());
      
            setStatus("בודק את המוזיקה במערכת...");
      
            const checkResponse = await fetch(
              `${API_BASE}${modes.check.endpoint}?${params.toString()}`,
              {
                method: "GET",
                headers: {
                  Accept: "application/json, text/plain, */*"
                }
              }
            );
      
            const checkReply =
              await readResponse(checkResponse);
      
            if (!checkResponse.ok) {
              throw new Error(
                "שגיאת HTTP בזמן בדיקת המוזיקה."
              );
            }
      
            displayCheckResult(
              validateApiReply(checkReply)
            );
      
            setStatus(
              "הבדיקה הסתיימה.",
              "success"
            );
          }
      
          async function handleDelete() {
            const params = new URLSearchParams();
      
            params.set("token", tokenInput.value.trim());
            params.set("name", nameInput.value.trim());
      
            setStatus("מוחק את הגדרת המוזיקה...");
      
            const deleteResponse = await fetch(
              `${API_BASE}${modes.delete.endpoint}?${params.toString()}`,
              {
                method: "GET",
                headers: {
                  Accept: "application/json, text/plain, */*"
                }
              }
            );
      
            const deleteReply =
              await readResponse(deleteResponse);
      
            if (!deleteResponse.ok) {
              throw new Error(
                "שגיאת HTTP בזמן מחיקת המוזיקה."
              );
            }
      
            displayDeleteResult(
              validateApiReply(deleteReply)
            );
      
            setStatus(
              "הפעולה הסתיימה.",
              "success"
            );
          }
      
          document.querySelectorAll(".tab")
            .forEach(tab => {
              tab.addEventListener("click", () => {
                setMode(tab.dataset.mode);
              });
            });
      
          document
            .querySelectorAll('input[name="musicSource"]')
            .forEach(radio => {
              radio.addEventListener(
                "change",
                updateCreateFields
              );
            });
      
          nameInput.addEventListener(
            "input",
            updateFullUploadPath
          );
      
          uploadBasePathInput.addEventListener(
            "input",
            updateFullUploadPath
          );
      
          form.addEventListener(
            "submit",
            async event => {
              event.preventDefault();
      
              clearStatus();
              hideCopyButton();
      
              if (!form.checkValidity()) {
                form.reportValidity();
                return;
              }
      
              submitButton.disabled = true;
              submitButton.textContent = "מבצע...";
      
              setResponse(
                "ממתין לתשובת השרת..."
              );
      
              try {
                if (currentMode === "create") {
                  await handleCreate();
                } else if (currentMode === "check") {
                  await handleCheck();
                } else if (currentMode === "delete") {
                  await handleDelete();
                }
              } catch (error) {
                console.error(error);
      
                const message =
                  error && error.message
                    ? error.message
                    : "אירעה שגיאה בלתי צפויה.";
      
                setStatus(message, "error");
                displayServerError(
                  `שגיאה: ${message}`
                );
              } finally {
                submitButton.disabled = false;
                submitButton.textContent = "שליחה לשרת";
              }
            }
          );
      
          copyButton.addEventListener(
            "click",
            async () => {
              const code =
                response.dataset.musicCode;
      
              if (!code) {
                return;
              }
      
              try {
                await navigator.clipboard.writeText(code);
      
                copyButton.textContent =
                  "הקוד הועתק";
      
                setTimeout(() => {
                  copyButton.textContent =
                    "העתקת קוד המנגינה";
                }, 1800);
              } catch {
                const temporaryInput =
                  document.createElement("input");
      
                temporaryInput.value = code;
                document.body.appendChild(
                  temporaryInput
                );
      
                temporaryInput.select();
                document.execCommand("copy");
                temporaryInput.remove();
      
                copyButton.textContent =
                  "הקוד הועתק";
      
                setTimeout(() => {
                  copyButton.textContent =
                    "העתקת קוד המנגינה";
                }, 1800);
              }
            }
          );
      
          setMode("create");
        </script>
      </body>
      </html>
      

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

      עריכה:
      עדכנתי מחדש את הקובץ כך שיהיה את האפשרות של העלאת קובץ למערכת הקוד

      עריכה
      @ben-zion פרסם כבר פעם כזה מערכת אם העלאת קובץ לשלוחה למעבר להורדת הדף HTML שלו לחצו כאן

      פורסם בהסברים מסודרים ממשתמשים
      S
      sh0548534047
    • RE: צינתוקים

      @אA
      צודק

      פורסם בשאלות ועזרה הדדית
      S
      sh0548534047
    • RE: תגובות | מדריך | איך להוציא שיחות בזיהוי מספר המערכת שלכם - בחינם!

      @cubase
      עובד לי מצוין
      הבאג היה שכתבת בפילטר

      access_filter_1=g.*.*.*.*.*.*.*.thiscall
      

      במקום התשיעי כתבת את זה וצריך שזה יהיה בערך השביעי עדכנתי את זה
      הבאג היה שכתבת בפילטר

      access_filter_1=g.*.*.*.*.*.thiscall
      

      וזה עובד פצצה
      תודה רבה לך על כל המודלים.

      אם תוכל לעדכן זאת בשרשור שלך

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • חיפוש בהודעות מערכת

      לאחרונה ראיתי הרבה שרצו
      לחפש ללא CTRL + F הודעות מערכת
      אז עשיתי קוד HTML שמחפש זאת
      אשמח לתגובות ממכם האם זה נצרך או לא...

      לשימוש אינטרנטי לחצו כאן
      קרדיט ל:@איל-משולש

      <!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>
          @import url('https://fonts.googleapis.com/css2?family=Assistant:wght@400;500;600;700&display=swap');
      
          :root {
            --primary: #315bea;
            --primary-dark: #2448c7;
            --text: #202942;
            --muted: #73809b;
            --border: #e5e9f2;
            --background: #f4f7fc;
            --white: #ffffff;
            --highlight: #fff0a8;
          }
      
          * {
            box-sizing: border-box;
          }
      
          body {
            margin: 0;
            min-height: 100vh;
            background:
              linear-gradient(180deg, #eef3ff 0, #f7f9fd 360px, var(--background) 100%);
            color: var(--text);
            font-family: "Assistant", Arial, sans-serif;
          }
      
          .page-header {
            padding: 64px 20px 35px;
            text-align: center;
          }
      
          .small-title {
            margin-bottom: 8px;
            color: var(--primary);
            font-size: 15px;
            font-weight: 700;
            letter-spacing: 0.4px;
          }
      
          h1 {
            margin: 0;
            color: var(--text);
            font-size: clamp(30px, 5vw, 44px);
            font-weight: 700;
            line-height: 1.2;
          }
      
          .subtitle {
            max-width: 620px;
            margin: 13px auto 28px;
            color: var(--muted);
            font-size: 17px;
            line-height: 1.5;
          }
      
          .search-box {
            width: min(720px, 94%);
            height: 62px;
            margin: 0 auto;
            padding: 0 21px;
            display: flex;
            align-items: center;
            gap: 13px;
            background: var(--white);
            border: 1px solid #dce3f2;
            border-radius: 32px;
            box-shadow: 0 8px 28px rgba(44, 73, 145, 0.13);
            transition: 0.2s ease;
          }
      
          .search-box:focus-within {
            border-color: var(--primary);
            box-shadow:
              0 8px 28px rgba(44, 73, 145, 0.16),
              0 0 0 4px rgba(49, 91, 234, 0.10);
          }
      
          .search-icon {
            width: 26px;
            height: 26px;
            flex-shrink: 0;
            color: var(--primary);
            font-size: 26px;
            font-weight: bold;
            line-height: 22px;
          }
      
          #searchInput {
            width: 100%;
            height: 100%;
            border: 0;
            outline: 0;
            background: transparent;
            color: var(--text);
            font-family: inherit;
            font-size: 19px;
            text-align: right;
            direction: rtl;
          }
      
          #searchInput::placeholder {
            color: #9aa5ba;
          }
      
          .status {
            width: min(1120px, 94%);
            min-height: 24px;
            margin: 20px auto 14px;
            color: var(--muted);
            font-size: 15px;
            font-weight: 500;
            text-align: center;
          }
      
          .error {
            color: #bb2638;
          }
      
          .results {
            width: min(1120px, 94%);
            margin: 0 auto 70px;
          }
      
          .result-card {
            margin-bottom: 17px;
            padding: 22px;
            overflow: hidden;
            background: var(--white);
            border: 1px solid var(--border);
            border-radius: 18px;
            box-shadow: 0 5px 18px rgba(38, 55, 92, 0.07);
            transition: transform 0.18s ease, box-shadow 0.18s ease;
          }
      
          .result-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 9px 25px rgba(38, 55, 92, 0.11);
          }
      
          .card-top {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 15px;
            margin-bottom: 19px;
            padding-bottom: 16px;
            border-bottom: 1px solid #edf0f6;
          }
      
          .number-label {
            color: var(--muted);
            font-size: 14px;
            font-weight: 600;
          }
      
          .message-number {
            padding: 6px 13px;
            color: var(--primary-dark);
            background: #edf2ff;
            border-radius: 8px;
            direction: ltr;
            font-family: Arial, sans-serif;
            font-size: 18px;
            font-weight: bold;
            white-space: nowrap;
          }
      
          .fields {
            display: grid;
            grid-template-columns: minmax(230px, 1.1fr) minmax(230px, 2fr) minmax(180px, 1fr);
            gap: 15px;
          }
      
          .field {
            min-width: 0;
            padding: 15px 16px;
            background: #fafbfe;
            border: 1px solid #edf0f6;
            border-radius: 12px;
          }
      
          .field-title {
            margin-bottom: 7px;
            color: var(--muted);
            font-size: 14px;
            font-weight: 700;
          }
      
          .field-value {
            min-height: 24px;
            color: var(--text);
            font-size: 17px;
            font-weight: 500;
            line-height: 1.55;
            white-space: pre-wrap;
            overflow-wrap: anywhere;
          }
      
          mark {
            padding: 1px 4px;
            background: var(--highlight);
            border-radius: 4px;
            color: inherit;
          }
      
          .message {
            padding: 52px 15px;
            color: var(--muted);
            font-size: 18px;
            font-weight: 500;
            text-align: center;
          }
      
          .footer-note {
            margin-top: 25px;
            color: #a2abc0;
            font-size: 13px;
            text-align: center;
          }
      
          @media (max-width: 800px) {
            .page-header {
              padding-top: 42px;
            }
      
            .fields {
              grid-template-columns: 1fr;
            }
      
            .card-top {
              align-items: flex-start;
              flex-direction: column;
              gap: 8px;
            }
          }
      
          @media (max-width: 500px) {
            .page-header {
              padding-right: 12px;
              padding-left: 12px;
            }
      
            .search-box {
              height: 55px;
              padding: 0 16px;
            }
      
            #searchInput {
              font-size: 17px;
            }
      
            .result-card {
              padding: 16px;
              border-radius: 14px;
            }
      
            .field {
              padding: 13px;
            }
          }
        </style>
      </head>
      
      <body>
      
        <header class="page-header">
          <div class="small-title">מאגר הודעות מערכת</div>
      
          <h1>חיפוש הודעות מערכת</h1>
      
          <div class="subtitle">
            חפש לפי מספר הודעה, טקסט ההודעה או שלוחה
          </div>
      
          <div class="search-box">
            <span class="search-icon">⌕</span>
      
            <input
              id="searchInput"
              type="search"
              autocomplete="off"
              placeholder="הקלד כאן מילים או מספר הודעה..."
            >
          </div>
        </header>
      
        <div id="status" class="status">
          טוען את מאגר ההודעות...
        </div>
      
        <main id="results" class="results"></main>
      
        <div class="footer-note">
          כל מילות החיפוש חייבות להופיע באותה תוצאה
        </div>
      
      
        <script>
          const SHEET_ID =
            "15FgVf-z9g4ia_Phsv0OCiZirSPP4184TIWlS8lzHAFU";
      
          const GID = "0";
      
          const visibleColumns = [
            {
              title: "מספר הודעה",
              sourceColumn: 0
            },
            {
              title: "ההודעה",
              sourceColumn: 1
            },
            {
              title: "לשלוחות",
              sourceColumn: 6
            }
          ];
      
          let messages = [];
      
          const searchInput =
            document.getElementById("searchInput");
      
          const resultsElement =
            document.getElementById("results");
      
          const statusElement =
            document.getElementById("status");
      
      
          function normalize(text) {
            return String(text || "")
              .toLowerCase()
              .replace(/[״"'׳`]/g, "")
              .replace(/\s+/g, " ")
              .trim();
          }
      
      
          function escapeHtml(text) {
            return String(text || "")
              .replace(/&/g, "&amp;")
              .replace(/</g, "&lt;")
              .replace(/>/g, "&gt;")
              .replace(/"/g, "&quot;")
              .replace(/'/g, "&#039;");
          }
      
      
          function highlight(text, words) {
            let safeText = escapeHtml(text);
      
            words.forEach(word => {
              if (!word) return;
      
              const escapedWord = word.replace(
                /[.*+?^${}()|[\]\\]/g,
                "\\$&"
              );
      
              safeText = safeText.replace(
                new RegExp("(" + escapedWord + ")", "gi"),
                "<mark>$1</mark>"
              );
            });
      
            return safeText;
          }
      
      
          function getCellValue(cell) {
            if (!cell) return "";
      
            if (cell.f !== undefined) {
              return String(cell.f);
            }
      
            if (cell.v !== undefined && cell.v !== null) {
              return String(cell.v);
            }
      
            return "";
          }
      
          window.googleSheetCallback = function(data) {
            try {
              if (!data || !data.table) {
                throw new Error("לא התקבלו נתונים תקינים");
              }
      
              const rows = data.table.rows || [];
      
              messages = rows.map(row => {
                const fullRow = [];
      
                for (let i = 0; i < 7; i++) {
                  fullRow.push(getCellValue(row.c[i]));
                }
      
                return fullRow;
              });
      
              statusElement.textContent =
                `נטענו ${messages.length.toLocaleString("he-IL")} הודעות`;
      
              showResults();
      
            } catch (error) {
              console.error(error);
      
              statusElement.textContent =
                "אירעה שגיאה בקריאת נתוני הגיליון";
      
              statusElement.classList.add("error");
            }
          };
      
          function loadSheetData() {
            const script = document.createElement("script");
      
            const url =
              "https://docs.google.com/spreadsheets/d/" +
              encodeURIComponent(SHEET_ID) +
              "/gviz/tq" +
              "?gid=" + encodeURIComponent(GID) +
              "&headers=1" +
              "&tqx=" +
              encodeURIComponent(
                "out:json;responseHandler:googleSheetCallback"
              );
      
            script.src = url;
      
            script.onerror = function() {
              statusElement.textContent =
                "לא ניתן לטעון את הגיליון. " +
                "בדוק שהגיליון פתוח לצפייה ושמזהה הגיליון נכון.";
      
              statusElement.classList.add("error");
            };
      
            document.body.appendChild(script);
          }
      
      
          function showResults() {
            const searchText =
              normalize(searchInput.value);
      
            if (!searchText) {
              resultsElement.innerHTML =
                '<div class="message">' +
                'הקלד מספר הודעה או מילים לחיפוש' +
                '</div>';
      
              statusElement.textContent =
                `נטענו ${messages.length.toLocaleString("he-IL")} הודעות`;
      
              return;
            }
      
            const searchWords = searchText
              .split(" ")
              .filter(word => word.length > 0);
      
            const matchingMessages = messages.filter(row => {
              const searchableText = normalize(
                visibleColumns
                  .map(column => row[column.sourceColumn])
                  .join(" ")
              );
      
              return searchWords.every(word =>
                searchableText.includes(word)
              );
            });
      
            statusElement.textContent =
              `נמצאו ${matchingMessages.length.toLocaleString("he-IL")} תוצאות`;
      
            if (matchingMessages.length === 0) {
              resultsElement.innerHTML =
                '<div class="message">לא נמצאו תוצאות מתאימות</div>';
      
              return;
            }
      
            resultsElement.innerHTML =
              matchingMessages.map(row => {
                const messageNumber = row[0] || "ללא מספר";
      
                const fieldsHtml = visibleColumns.map(column => {
                  const value = row[column.sourceColumn] || "";
      
                  return `
                    <div class="field">
                      <div class="field-title">
                        ${escapeHtml(column.title)}
                      </div>
      
                      <div class="field-value">
                        ${highlight(value, searchWords)}
                      </div>
                    </div>
                  `;
                }).join("");
      
                return `
                  <article class="result-card">
                    <div class="card-top">
                      <span class="number-label">מספר הודעה</span>
      
                      <span class="message-number">
                        ${highlight(messageNumber, searchWords)}
                      </span>
                    </div>
      
                    <div class="fields">
                      ${fieldsHtml}
                    </div>
                  </article>
                `;
              }).join("");
          }
      
      
          searchInput.addEventListener("input", showResults);
      
          loadSheetData();
        </script>
      
      </body>
      </html>
      

      להורדת הקובץ לחצו כאן
      לתגובות לחצו כאן

      פורסם בהסברים מסודרים ממשתמשים
      S
      sh0548534047
    • RE: כניסה לשלוחה רק ביום חמישי בלילה עד סוף יום שישי (כניסת שבת)

      @פלוס
      @פלפל-שחור רצה רק מחמישי לילה
      אז נראה לי שההגדרות זה כך

      enter_if_time=20:00-23:59.thu-thu.*.*
      enter_if_time_check_again=yes
      check_again_enter_if_time=00:00-20:00.fri-fri.*.*
      

      בהגדרה מוגדר שיום חמישי מ 8 בערב תוכל לשנות את זה כמובן לשעה הרצויה
      וביום שישי שיסגר בשמונה {אז כל שבוע כבר נכנס שבת}.....

      פורסם בשאלות ועזרה הדדית
      S
      sh0548534047
    • RE: תגובות | מדריך | איך להוציא שיחות בזיהוי מספר המערכת שלכם - בחינם!

      @cubase
      תודה רבה עובד פצצה

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

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

      נתחיל מחדש
      כמובן תשנה את השלוחה שלך בכל השלוחות

      שלוחה 1
      הקלטות
      תשנה הגדרות:

      menu_record_options_2=end_goto=1
      

      שלוחה 1/1
      רישום מספר טלפון
      תשנה הגדרות:

      type=add_id_to_list
      add_id_to_list_location_list=/1/1/1/ext
      add_id_to_list_key=api_add_2
      add_id_to_list_value_first=contents=type=api%0Aapi_link=https://www.call2all.co.il/ym/api/UpdateTemplateEntry%0Aapi_add_0=token=0772222770:123456%0Aapi_add_1=templateId=000%0Aapi_end_goto=1%0Aapi_add_2=phone=
      add_id_to_list_value_type=digits
      add_id_to_list_value_change=yes
      add_id_to_list_end_goto=1
      

      שלוחה 1/1/1
      הוספה לרשימת התפוצה

      תשנה הגדרות:

      type=api
      api_link=https://www.call2all.co.il/ym/api/UploadTextFile
      api_add_0=token=0772222770:123456
      api_add_1=what=ivr2:/1/1/1/1/ext.ini
      api_add_2=contents=type=api%0Aapi_link=https://www.call2all.co.il/ym/api/UpdateTemplateEntry%0Aapi_add_0=token=0772222770:123456%0Aapi_add_1=templateId=000%0Aapi_end_goto=1%0Aapi_add_2=phone=
      

      שלוחה 1/1/1/1
      תשאיר ריק זה מתמלא לבד

      ריק
      

      שלוחה 1/1/1/1/1
      שליחת צינתוק

      תשנה הגדרות:

      type=api
      api_link=https://www.call2all.co.il/ym/api/RunTzintuk
      api_add_0=token=0772222770:123456
      api_add_2=phone=tpl:000
      api_end_goto=/
      

      תגיד אם הסתדר זה אמור להסתדר.

      פורסם בשאלות ועזרה הדדית
      S
      sh0548534047

    פוסטים אחרונים שנוצרו על ידי sh0548534047

    • RE: הצעת ייעול: שליטה על כמות הדילוג במקש 8 במהלך השמעה 🎧⏩ (לניווט מהיר בשלוחות עמוסות!)

      @מסובך-מאוד א. זה מוגבל עד 999 ב. זה מבלבל אנשים שאינם מכירים

      זה מוגבל ??? אי אפשר להגדיר כך.

      start_select_digits=4
      

      נראה לי שאפשר לא ניסיתי...

      פורסם בבקשות לפיתוח
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

      @אז-נדברו
      חינמי ?
      מה הקישור
      תודה רבה מאוד.

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

      @אז-נדברו
      תודה עובד מצוין.
      איפה עשית זאת ב GPT או ב GEMINI או במקום אחר
      אם תוכל לתת לי קישור {רק עם זה חינמי}.

      תודה רבה

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

      @אז-נדברו כתב:

      ביותר

      זה מה שאני אומר אין לי בעיה
      המספור אוטומטי ע"י API

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

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

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

      @אז-נדברו
      המערכת שלי מחזירה לי
      API_KEY_ACL_REJECT
      פי' מגבלת הטוקן אפי' בהעלאת קבצים בשלוחות מותרות 1/1

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

      @שלוחה-404
      אני רוצה העתקות מה שאפשר {לא משנה שלוחה קובץ וכו'} ויצירת קבצי TTS והעלאות קבצים רק בשלוחות מסוימות

      וכל מה שאפשר לעשות עם קובץ שיהיה חסום מחיקה העברה שינוי שם וכו'

      כל שאר הדברים כן יפעלו רשימות תפוצה משימות צינתוקים דוחו"ת הורדות וכו'
      השלוחות
      השלוחות המותרות בהגבלה הינם 1/1-1/3-1/4-2/1-3/1-8/1
      השלוחות המותרות כולל תתי שלוחותיהם הינם 9/9-4

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

      @אA
      ממש לא הסתדרתי זה לא עובד לי..

      פורסם בעזרה הדדית למשתמשים מתקדמים
      S
      sh0548534047
    • RE: איך עושים שבשלום ל.. יגיד שם מקובץ EnterIDValName

      @פיתה בדיקה ארוכה ...

      פורסם בשאלות ועזרה הדדית
      S
      sh0548534047
    • RE: טוקן מוגבל לשלוחות ופעילויות מסוימות בלבד

      @אA
      אני לא מסתדר
      אם תוכל ליצור לי זאת אשמח
      sh0548534047@gmail.com
      תשלח לי מייל ואחזיר לך את מספר המערכת.

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