• פוסט מסודר לנותני שירות בניית מערכות בתשלום

    נעוץ
    92
    11 הצבעות
    92 פוסטים
    6k צפיות
    נ
    לידיעת הציבור ניתן להצטרף למרחב משותף בצ'אט לפרסום וקבלת הצעות עבודה בתחום הקווים בלבד להצטרפות
  • Time_keeper with out the time

    3
    0 הצבעות
    3 פוסטים
    20 צפיות
    S
    @מסובך-מאוד It doesn't work, the system still says the time
  • 9 הצבעות
    165 פוסטים
    4k צפיות
    פ
    @0548552104 כתב: @פתרון-AI כן נ.ב. אולי קשור? אבל זה יה בשלוחת שידור חי בתור שידורים קודמים... תנסה לעשות בדיקה על קובץ אחר ותראה אם השגיאה חוזרת
  • ספר טלפונים קהילתי ענק - צריך עזרה

    1
    0 הצבעות
    1 פוסטים
    15 צפיות
    אין תגובות
  • אני רוצה לשלוח אימעיל שיכנס ישר לשלוחה

    8
    0 הצבעות
    8 פוסטים
    147 צפיות
    I
    @וזכיני-לגדל צריך ליצור גיליון חדש בגוגל שיטס, תוספים, apps script ולהדביק את הקוד הזה function runSimpleTranscriptionResponder() { // פונקציית עזר: קריאה ל-API של ימות המשיח function fetch(command, parameters) { var url = "https://www.call2all.co.il/ym/api/" + command; var options = { "method": "post", "contentType": "application/json", "payload": JSON.stringify(parameters), "muteHttpExceptions": true }; try { var response = UrlFetchApp.fetch(url, options); var responseCode = response.getResponseCode(); if (responseCode !== 200) { Logger.log("שגיאת HTTP ב-" + command + ": קוד " + responseCode); return { responseStatus: "ERROR", message: "HTTP Error " + responseCode }; } return JSON.parse(response.getContentText()); } catch (e) { Logger.log("שגיאה ב-" + command + ": " + e.toString()); return { responseStatus: "ERROR", message: e.toString() }; } } // פונקציית עזר: בדיקה האם קובץ הוא קובץ שמע function isAudioFile(mimeType, fileName) { var audioExtensions = /\.(mp3|wav|ogg|m4a|wma|aac|flac|opus)$/i; return mimeType.indexOf('audio/') === 0 || audioExtensions.test(fileName); } // פונקציית עזר: העלאה לימות המשיח function uploadToYemot(attachment, token, path) { var url = "https://www.call2all.co.il/ym/api/UploadFile"; var boundary = "----FormBoundary" + Utilities.getUuid(); var bodyParts = []; bodyParts.push("--" + boundary); bodyParts.push("Content-Disposition: form-data; name=\"token\""); bodyParts.push(""); bodyParts.push(token); bodyParts.push("--" + boundary); bodyParts.push("Content-Disposition: form-data; name=\"path\""); bodyParts.push(""); bodyParts.push(path); bodyParts.push("--" + boundary); bodyParts.push("Content-Disposition: form-data; name=\"convertAudio\""); bodyParts.push(""); bodyParts.push("1"); bodyParts.push("--" + boundary); bodyParts.push("Content-Disposition: form-data; name=\"file\"; filename=\"" + attachment.getName() + "\""); bodyParts.push("Content-Type: " + attachment.getContentType()); bodyParts.push(""); var textPart = bodyParts.join("\r\n") + "\r\n"; var textBytes = Utilities.newBlob(textPart).getBytes(); var fileBytes = attachment.getBytes(); var endBoundary = Utilities.newBlob("\r\n--" + boundary + "--\r\n").getBytes(); var payload = []; for (var i = 0; i < textBytes.length; i++) { payload.push(textBytes[i]); } for (var i = 0; i < fileBytes.length; i++) { payload.push(fileBytes[i]); } for (var i = 0; i < endBoundary.length; i++) { payload.push(endBoundary[i]); } var options = { "method": "post", "contentType": "multipart/form-data; boundary=" + boundary, "payload": payload, "muteHttpExceptions": true }; try { var response = UrlFetchApp.fetch(url, options); var responseCode = response.getResponseCode(); if (responseCode !== 200) { Logger.log("שגיאת HTTP: קוד " + responseCode); Logger.log("תגובת שרת: " + response.getContentText()); return false; } var jsonResponse = JSON.parse(response.getContentText()); if (jsonResponse.responseStatus === "OK") { Logger.log("הקובץ הועלה בהצלחה!"); Logger.log(" נתיב: " + jsonResponse.path); Logger.log(" גודל מקורי: " + (jsonResponse.size / 1024).toFixed(2) + " KB"); if (jsonResponse.convertedSize) { Logger.log(" גודל לאחר המרה: " + (jsonResponse.convertedSize / 1024).toFixed(2) + " KB"); Logger.log(" משך השמע: " + jsonResponse.duration.toFixed(2) + " שניות"); } return true; } else { Logger.log("שגיאת API: " + jsonResponse.responseStatus); if (jsonResponse.message) { Logger.log("הודעת שגיאה: " + jsonResponse.message); } if (jsonResponse.messageCode) { Logger.log("קוד שגיאה: " + jsonResponse.messageCode); } return false; } } catch (e) { Logger.log("שגיאת תקשורת: " + e.toString()); return false; } } // הקוד הראשי var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("גיליון1"); if (!sheet) { Logger.log("שגיאה: לא נמצא גיליון בשם 'גיליון1'"); return; } var systemNumber = sheet.getRange("A2").getValue().toString().trim(); var password = sheet.getRange("B2").getValue().toString().trim(); var sourceLabelName = sheet.getRange("C2").getValue().toString().trim(); var targetLabelName = sheet.getRange("D2").getValue().toString().trim(); var yemotFolder = sheet.getRange("E2").getValue().toString().trim(); var permanentToken = sheet.getRange("F2").getValue().toString().trim(); if (!sourceLabelName || !targetLabelName || !yemotFolder) { Logger.log("שגיאה: חסרים נתונים בגיליון. אנא ודא שתאים C2, D2, E2 מלאים."); return; } var yemotToken; if (permanentToken) { Logger.log("משתמש בטוקן קבוע מתא F2"); yemotToken = permanentToken; } else if (password) { if (!systemNumber) { Logger.log("שגיאה: חסר מספר מערכת בתא A2"); return; } Logger.log("משתמש בפורמט username:password"); yemotToken = systemNumber + ":" + password; } else { Logger.log("שגיאה: חסר טוקן או פרטי התחברות. מלא תא F2 (טוקן קבוע) או תאים A2+B2 (מערכת+סיסמה)"); return; } if (!yemotFolder.includes(':')) { if (!yemotFolder.startsWith('/')) { yemotFolder = '/' + yemotFolder; } if (yemotFolder.endsWith('/')) { yemotFolder = yemotFolder.slice(0, -1); } } else { Logger.log("זוהה נתיב מיוחד: " + yemotFolder); } var sourceLabel = GmailApp.getUserLabelByName(sourceLabelName); if (!sourceLabel) { Logger.log("שגיאה: תווית המקור '" + sourceLabelName + "' לא נמצאה בג'ימייל שלך."); return; } var targetLabel = GmailApp.getUserLabelByName(targetLabelName); if (!targetLabel) { targetLabel = GmailApp.createLabel(targetLabelName); } var threads = sourceLabel.getThreads(); if (threads.length === 0) { Logger.log("לא נמצאו הודעות בתווית: " + sourceLabelName); return; } var audioFilesCount = 0; var uploadedCount = 0; if (threads.length > 0) { var thread = threads[0]; var messages = thread.getMessages(); var hasAudio = false; for (var j = 0; j < messages.length; j++) { var attachments = messages[j].getAttachments(); for (var k = 0; k < attachments.length; k++) { var attachment = attachments[k]; var mimeType = attachment.getContentType(); var fileName = attachment.getName(); if (isAudioFile(mimeType, fileName)) { hasAudio = true; audioFilesCount++; var fileSize = attachment.getSize(); Logger.log("נמצא קובץ שמע: " + fileName + " (גודל: " + (fileSize / 1024).toFixed(2) + " KB)"); if (fileSize > 50 * 1024 * 1024) { Logger.log("שגיאה: הקובץ גדול מדי (מעל 50MB). לא ניתן להעלות."); continue; } // קבלת המספר הבא ברצף באמצעות GetIVR2DirStats var maxFileNameResponse = fetch('GetIVR2DirStats', { token: yemotToken, path: yemotFolder }); Logger.log("תגובת GetIVR2DirStats: " + JSON.stringify(maxFileNameResponse)); var newFileNumber = 0; if (maxFileNameResponse.responseStatus === 'OK' && maxFileNameResponse.maxFile) { var lastFileName = maxFileNameResponse.maxFile.name.split('.')[0]; newFileNumber = (lastFileName !== undefined) ? Number(lastFileName) + 1 : 0; Logger.log("הקובץ האחרון: " + lastFileName + ", המספר הבא: " + newFileNumber); } else { Logger.log("התיקייה ריקה או שגיאה בקבלת נתונים. מתחיל מ-0"); } var numberedFileName = newFileNumber.toString().padStart(3, '0') + ".wav"; var fullPath = yemotFolder + '/' + numberedFileName; Logger.log("מתחיל העלאה לימות המשיח..."); Logger.log("נתיב יעד: " + fullPath); Logger.log("הקובץ החדש יהיה: " + numberedFileName); var uploadSuccess = uploadToYemot(attachment, yemotToken, fullPath); if (uploadSuccess) { uploadedCount++; Logger.log("הקובץ " + fileName + " הועלה בהצלחה."); } else { Logger.log("שגיאה בהעלאת הקובץ " + fileName); } } } } thread.addLabel(targetLabel); thread.removeLabel(sourceLabel); if (hasAudio) { Logger.log("סיכום: עובד מייל אחד, נמצאו " + audioFilesCount + " קבצי שמע, הועלו בהצלחה " + uploadedCount + " קבצים."); } else { Logger.log("המייל לא הכיל קבצי שמע. הועבר לתווית 'טופל'."); } } } לשמור את הקוד, לכתוב בגיליון1 בתא C2 את תוית המקור בגימייל ובתא D2 את התוית שהמייל יעבור לאחר השמירה. בתא E2 צריך לשים את הנתיב שרוצים שהקובץ יעלה (לדוגמא ivr2:/11/9/3) בתא F2 צריך לשים מפתח api של המערכת בימות. ליצור טריגר שירוץ כל דקה, וכל מייל שיכנס לתוית הראשונה עם קובץ שמע יעלה לנתיב המוגדר והמייל יעבור לתוית של אחרי הטיפול. בהצלחה
  • פילטר לפי רשימת תפוצה

    לא נפתר
    10
    0 הצבעות
    10 פוסטים
    55 צפיות
    מ
    @יצמח-פורקניה מי שלא נמצא יוכל להיכנס?
  • Few people 1 ID

    לא נפתר
    22
    0 הצבעות
    22 פוסטים
    257 צפיות
    S
    Any solution? Any idea how I can get a solution?
  • שליפת נתונים משלוחת סקר..

    לא נפתר
    18
    0 הצבעות
    18 פוסטים
    57 צפיות
    ש
    @לימוד-בתורת-מרן הנקודה היא שאני לא זוכר איך הגעתי לשם..
  • 9 הצבעות
    276 פוסטים
    7k צפיות
    ל
    @פיתה כתב: @מוש-קפפפפיץ כתב: לפיתה אם אתה פה לא החזרת לי תשובה על מה? Spoiler @פיתה סידרת את המנגינות בשרשור?
  • מאגר מנגינות רקע 🎵 פרויקט שיתופי🤝

    48
    1
    3 הצבעות
    48 פוסטים
    926 צפיות
    ל
    @פיתה כתב: יאללה חברים! צריך עוד מנגינות!!! לבינתיים נירא שזה אולך אני נתקלתי במנגינות רקע שנלקחו מכאן כבר בשני קווים! @פיתה בא נעלה את הכפפה Ambience.mp3 Cabin.mp3 Chill.mp3 Chiptune.mp3 Coffee.mp3 Cozy.mp3 Drive.mp3 Garden.mp3 Midnight.mp3 Night.mp3 Pixel.mp3 Rainy.mp3 Serenity.mp3 Stroll.mp3 Sunset.mp3 Underwater.mp3 Vibe.mp3 Zen.mp3 ערב שבת שלום ומבורך!!
  • 0 הצבעות
    6 פוסטים
    46 צפיות
    ל
    @שלוחה-404 הקבצים בסדר אבל לא מקריא בקול הקבצים ובקול של אליק
  • אלפון מסודר נורמלי נעים למשתמש?

    לא נפתר
    39
    1 הצבעות
    39 פוסטים
    435 צפיות
    פ
    @sh0548534047 כתב: @פתרון-AI תיצור עימי קשר. בפרטי. אין לי את המייל שלך אתה יכול ליצור איתי כאן admin@pitronai.com
  • השמעת שם מקליט הודעה לפי שם מזהה (ID) נוכחי

    1
    0 הצבעות
    1 פוסטים
    20 צפיות
    אין תגובות
  • קליקרים

    8
    1 הצבעות
    8 פוסטים
    91 צפיות
    ה
    א"א להרשם
  • וירטואל פלוס לא משמיע SMS נכנסים

    19
    0 הצבעות
    19 פוסטים
    50 צפיות
    .
    @לימוד-בתורת-מרן זה תלוי במה שהחברה ששולחת את ה SMS משדרת למספר שלך
  • האם יש אפשרות לפתוח מערכת שהיה את האפשרויות שיש לי באתר?

    6
    0 הצבעות
    6 פוסטים
    37 צפיות
    ה
    יש למשהו תשובה??? בתודה.
  • פרויקט ברכת המזון להאזנה בדרכים וכדומה

    4
    0 הצבעות
    4 פוסטים
    82 צפיות
    ה
    @iia9352972 פתוח תודה רבה! (אני בפרטנר)
  • חיוג לחו"ל

    נפתר
    25
    1 הצבעות
    25 פוסטים
    515 צפיות
    ה
    @שלמה-גולד מן הסתם זה יקח יחידות
  • שמירת קובץ מחדר ועידה והשמעה בשלוחת הודעות

    6
    0 הצבעות
    6 פוסטים
    22 צפיות
    ס
    @פישל dnls7102@gmail.com
  • ניוד מספר

    14
    1 הצבעות
    14 פוסטים
    491 צפיות
    ש
    @Chaim לא, נראה לי שזה פעולה יותר מסובכת להעביר מספר מקו לקו כי צריך גם להוריד מקו זה ולהוסיף לקו השיני וכן להוריד משם את האפשרות לצנתק מזה ולהפעיל בשיני. ונראה לי שלא כל פקיד בשרות לקוחות יודע לעשות את זה וגם אם כן זה לוקח יותר זמן מאשר לפתוח קו חדש שמובנה עבור זה פלטפורמה מוכנה מראש ללא עבודה ארוכה של נציג אבל למה נזכרת רק עכשיו לענות על זה ומה כ"כ חשובה התשובה לכתוב אותה לאחר כ"כ הרבה זמן?