• הרשמה
    • התחברות
    • חיפוש
    • דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • קבלת התראות מהדפדפן
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    1. דף הבית
    2. צדיק תמים
    צ
    • פרופיל
    • עוקב אחרי 1
    • עוקבים 11
    • נושאים 29
    • פוסטים 1511
    • הגבוה ביותר 619
    • שנוי במחלוקת 3
    • קבוצות 0

    צדיק תמים

    @צדיק תמים

    978
    מוניטין
    286
    צפיות בפרופיל
    1511
    פוסטים
    11
    עוקבים
    1
    עוקב אחרי
    הצטרף ב- התחבר לאחרונה

    צדיק תמים הפסק לעקוב עקוב

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

    • RE: על פדיחה כזאת עוד לא שמעתם!!!😂😳

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

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

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

      הזמנים שקיימים כרגע במערכת הם (יש להירשם עבור כל זמן בנפרד):

      • נץ החמה
      • סוף זמן ק"ש הראשון (מג"א)
      • סוף זמן ק"ש השני (גר"א)
      • סוף זמן תפילה הראשון (מג"א)
      • סוף זמן תפילה השני (גר"א)
      • חצות היום
      • מנחה גדולה
      • מנחה קטנה
      • שקיעת החמה
      • הדלקת נרות שבת/יום טוב (מספר הדקות לפני השקיעה שונה בין עיר לעיר, בגדול זה לפי מה שבלוח עיתים לבינה)
      • חצות הלילה

      הזמנים מחושבים לפי עיר המגורים, עבור למעלה מ-50 ערים ברחבי הארץ, וזה בחינם לגמרי!

      המספר של המערכת הוא: 079-5686-170. המספר פתוח לקומה הכשרה.

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

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

      פורסם בטיפים עצות והדגמות מהמשתמשים
      צ
      צדיק תמים
    • עדכון | גרסה 6 של yemot-router2 יצאה

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

      מטרת הספריה היא לאפשר תקשורת מול המערכת הטלפונית בצורה נקיה וקריאה:

      • הרצה רציפה של הקוד מתחילה ועד סוף, תוך שמירת הstate של השיחה בין הקריאות, בצורה שקופה לחלוטין
      • יצירת התשובות על ידי קריאה למתודות של השיחה במקום יצירה ידנית של הסטרינגים
      • אפשרויות נוחות נוספות כגון מטפל בשגיאות, הסרה של תווים לא חוקיים, לוג אוטומטי מפורט (אופציונלי)
        ועוד אפשרויות רבות! פירוט בתיעוד.

      🎉 וכעת יצאה ב"ה גרסה 6!

      פרטים מלאים על מה חדש והוראות שדרוג: https://github.com/ShlomoCode/yemot-router2/blob/master/CHANGELOG.md#600
      תיעוד: https://github.com/ShlomoCode/yemot-router2#readme


      מה השתנה?

      • הוספת דגל להסרה שקטה של תווים לא חוקיים מהקראת טקסט
      • ‫הוספת תמיכה בהגדרות חסרות באפשרות זיהוי דיבור (stt)
      • ‫הוספת מתודת ()call.hangup (קיצור ל call.go_to_folder('hangup'))
      • ‫הסרת call.query, call.body, הוספת call.values - מכיל את הquery/body בהתאמה, לפי שיטת הפניה מימות (GET/POST)
      • ‫הסרת call.params, ניתן להשתמש בcall.req.params במקום
      • תמיכה בכל הפורמטים הקבילים של‫ ספריית ms בהגדרת timeout
      • ‫איחוד ארגומנטים של id_list_message לאובייקט options אחד
      • עדכון, שיפור והרחבת התיעוד
      • התאמת ברירות מחדל של הספריה לשל ימות
      • ‫הסרה סופית של ההגדרות בכתיב השגוי lenght_max ו-lenght_max שהוצאו משימוש בגרסה 5.0.0
      • ‫שיפור שמות אופציות read למובנות יותר (שובר!)
      • ‫מנגנון ברירות מחדל ברמת הראוטר/שיחה, בהשראת axiosInstance.defaults
      • ‫תמיכה בערכים פרימיטיביים שליליים בnone_val
      • אוונטים
      • טסטים (בסיסי ממש כרגע)
      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: על פדיחה כזאת עוד לא שמעתם!!!😂😳

      @avrham כתב בעל פדיחה כזאת עוד לא שמעתם!!!😂😳:

      @אופיר כתב בעל פדיחה כזאת עוד לא שמעתם!!!😂😳:

      אני בכלל אוהב רק ספרינג...

      לגופו של עניין יש משהו בדבריך, להבא…

      אני חולק עליך בעניין, יש להם תות בננה טעים לפריגת😌

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

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

      סקריפט שכתבתי לעצמי, להרצה עם Tampermonkey, משתף כאן AS-IS לטובת הציבור 🙂

      • בלשונית רשימות צינתוקים:
        מסדר את רשימות הצינתוקים לפי כמות מנויים מגדול לקטן, מציג סיכום של מספר הרשימות וההרשמות
      • בצפיה בלוג אירועי רשימה:
        מסדר את לוג האירועים לפי תאריך מהחדש לישן, מציג את כמות האירועים וכמות מספרי טלפון שהיו מעורבים (כרגע אין טיפול בכתובות IP, כל כתובת פשוט נספרת כמספר)
        CleanShot 2023-03-21 at 02.33.15@2x.png

      CleanShot 2023-03-21 at 02.33.03@2x.png

      // ==UserScript==
      // @name       שיפור תצוגת רשימות צינתוקים - ימות
      // @version       0.1
      // @author       ShlomoCode
      // @match        https://www.call2all.co.il/ym/index.php?view=Tzintukim
      // @match        https://private.call2all.co.il/ym/index.php?view=Tzintukim
      // @match        https://www.call2all.co.il/ym/index.php?view=Tzintukim&action=getLogList&list=*
      // @match        https://private.call2all.co.il/ym/index.php?view=Tzintukim&action=getLogList&list=*
      // ==/UserScript==
      
      (() => {
          if (location.search === '?view=Tzintukim') {
              const items = $('tr.listR')
                  .detach()
                  .sort((aList, bList) => {
                      const aListValue = parseInt(aList.querySelector('td:nth-child(2)').innerText);
                      const bListValue = parseInt(bList.querySelector('td:nth-child(2)').innerText);
                      return bListValue - aListValue; // reverse order
                  });
      
              const subscribersCount = items
                  .map((i, el) => parseInt(el.querySelector('td:nth-child(2)').innerText))
                  .toArray()
                  .reduce((a, b) => a + b);
      
              $('.scrollContent').append(items);
              $('.admin-section').append(` (${items.length} רשימות, ${subscribersCount} הרשמות)`);
          } else if (location.search.startsWith('?view=Tzintukim&action=getLogList&list=')) {
              const items = $('tr.listR').detach().toArray();
              $('.scrollContent').append([...items.reverse()]);
      
              const phones = new Set();
              items.forEach((item) => {
                  const phone = item.querySelector('td:nth-child(3)').innerText;
                  phones.add(phone);
                  const phoneEvent = item.querySelector('td:nth-child(6)').innerText;
                  if (phoneEvent) phones.add(phoneEvent);
              });
      
              $('.admin-section').append(` (${items.length} פעולות שהתבצעו ע"י ${phones.size} מספרי טלפון)`);
          }
      })();
      
      
      פורסם בטיפים עצות והדגמות מהמשתמשים
      צ
      צדיק תמים
    • שיתוף - טייפים לTypeScript עבור הודעות מערכת של ימות

      עריכה: שולב גם בספריה עצמה: https://github.com/ShlomoCode/yemot-router2/releases/tag/v6.2.0

      המרתי את ההודעות מערכת שכאן לקובץ טייפים, שימושי בעיקר למי שעובד עם yemot-router2, אפשר ככה לקבל הצגה של תוכן ההודעה בריחוף על המשתנה, ומי שמשתמש בtypescript גם לקבל שמירה מטעות הקלדה במספר ההודעת מערכת:
      d2e9a432-e43a-4aa0-bcb2-ad44439ee7fe-CleanShot 2025-05-01 at 12.52.55@2x.png

      להורדה:
      גרסת TS:
      messages.ts
      גרסת JS:
      messages.js
      מעודכן ל1 במאי 2025

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

      @HMJE22

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

      https://f2.freeivr.co.il/assets/uploads/files/1589883793486-הסכם-מערכות-חינמיות-v2.pdf

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

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

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

      @telepoint-ivr מי שלא רוצה, שלא ישתמש (לא ברור לי לאיזה בלאגן זה יגרום, אבל לא משנה).
      לי זה נוח, ומי שרוצה מוזמן להשתמש גם

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

      מעדכן שנוסף שליחה במודול API של ערך ApiYFCallId, שזהה לcallId שמתקבל בAPI של GetCallsStatus (לא מופיע בתיעוד, אבל פשוט פונים אליו עם טוקן ומקבלים רשימת שיחות)
      תודה ל @שמואל!

      פורסם בבקשות לפיתוח
      צ
      צדיק תמים

    פוסטים אחרונים שנוצרו על ידי צדיק תמים

    • RE: העלאת קבצים גדולים בapi

      @שלמה-צובל מצורף קוד תקין

      import json
      import requests
      import os
      from uuid import uuid4
      
      
      def read_in_chunks(file, chunk_size=5000000):
          while True:
              data = file.read(chunk_size)
              if not data:
                  break
              yield data
      
      def upload_file(file_path, path, token_yemot):
          if os.path.getsize(file_path) > 5000000:
              content_name = str(os.path.basename(file_path))
              content_path = os.path.abspath(file_path)
              content_size = os.stat(content_path).st_size
              qquuid = str(uuid4())
      
              file = open(content_path, 'rb')
      
              chunks = [chunk for chunk in read_in_chunks(file)]
      
              file.close()
      
              offset = 0
              for chunk in chunks:
                  data = {
                          'token': token_yemot,
                          'path': path,
                          'qquuid': qquuid,
                          'convertAudio': 0,
                          'autoNumbering': 'true',
                          'uploader': 'yemot-admin',
                          'qqfilename': content_name,
                          'qqtotalfilesize': content_size,
                          'qqtotalparts': len(chunks),
                          'qqchunksize': len(chunk),
                          'qqpartbyteoffset': offset,
                          'qqpartindex': chunks.index(chunk),
                  }
                  files = {
                      'qqfile': chunk,
                  }
                  res = requests.post('https://www.call2all.co.il/ym/api/UploadFile',
                      data=data,
                      files=files,
                  )
                  offset += len(chunk)
      
      
              response = requests.post('https://www.call2all.co.il/ym/api/UploadFile?done',{
                  'token': token_yemot, 
                  'path': path, 
                  'uploader': 'yemot-admin',
                  'convertAudio': 0,
                  'autoNumbering': 'true',
                  'qquuid': qquuid,
                  'qqfilename': content_name,
                  'qqtotalfilesize': content_size,
                  'qqtotalparts': len(chunks),
              })   
              responses = response.text.split("}{")
              for idx, response in enumerate(responses):
                  if idx < len(responses) - 1:
                      response = f"{response}"
                  else:
                      response = f"{response}"
                  
                  try:
                      data = json.loads(response)
                      print(response.json())
                      return data
                  except json.JSONDecodeError as e:
                      print("JSON decoding error:", e)
          else:
              url = 'https://www.call2all.co.il/ym/api/UploadFile'
              params = {
                  'token': token_yemot,
                  'path': path,
                  'convertAudio': int(1),
                  'autoNumbering': int(1),
              }
              files = {'file': open(file_path, 'rb')}
              response = requests.post(url, params=params, files=files)
              print(response.json())
              return response.json()
      
      פורסם בעזרה הדדית למשתמשים מתקדמים
      צ
      צדיק תמים
    • RE: yemot-router2

      @שמואל-ש אני גם השתמשתי בעבר בpm2 לניהול תהליכים. כיום אני משתמש בdocker compose וגם caddy רץ בתוכו ואז אני לא מנהל בכלל פורטים אלא מאזין בכולם על פורט 80 וב Dockerfile כותב את שם השירות

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

      @עידו כתב בyemot-router2:

      שרת אפצ'/נג'ניקס (לא משנה באמת) + קאדי

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

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

      @עידו קאדי לא מנהל שום דבר חוץ מרברס פרוקסי
      כלומר שהוא מאזין בפורט 80/443 של השרת ומעביר בקשות לפורטים פנימיים לפי הדומיין

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

      @עידו כתב בyemot-router2:

      @צדיק-תמים כתב בyemot-router2:

      טיפ נוסף: אם מוסיפים בסוף הפקודה & היא ממשיכה לרוץ גם כשתתנתק מהשרת

      הסקריפט ימשיך לרוץ או רק הפקודה שהתחילה?

      כשאתה מריץ פקודת node a.js אתה מריץ תהליך בשם node שמריץ סקריפט a.js
      ברגיל זה רץ תחת התהליך של השל הנוכחי כforeground job ולכן נהרג כשהאבא נהרג כלומר כשאתה מתנתק מהשרת, אם אתה מוסיף & בסוף, באובונטו לפחות, זה רץ כbackground job ולא נהרג כשהאבא נהרג

      @עידו כתב בyemot-router2:

      @צדיק-תמים כתב בyemot-router2:

      אני ממליץ בחום לעבור ל caddy server, תחביר הרבה יותר קל ופשוט

      הוא נשמע טוב, אבל זה לא הרבה התעסקות בשביל פתיחת משתמשים/מאגר מידע/אבטחה?

      יש לו הרבה יותר ברירות מחדל עדכניות ובטוחות ולכן צריך פחות להתעסק בלהגדיר כל דבר קטן

      @עידו כתב בyemot-router2:

      פתיחת משתמשים/מאגר מידע/אבטחה

      לא הבנתי למה כוונתך

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

      @עידו לא צריך גם pm2 וגם nodemon, יש לpm2 אופציה של watch
      אני ממליץ בחום לעבור ל caddy server, תחביר הרבה יותר קל ופשוט
      טיפ נוסף: אם מוסיפים בסוף הפקודה & היא ממשיכה לרוץ גם כשתתנתק מהשרת

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

      @עידו מה מריץ את השרת בפורט 3000?

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

      @עידו מה הכלי הזה שאתה עובד דרכו?
      למה לא בדרך הרגילה להתחבר לשרת בSSH ולהריץ?

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

      @עידו אין לי קישור. בדקתי לך את זה אתמול

      פורסם בפורום מפתחים API
      צ
      צדיק תמים
    • RE: yemot-router2

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

      פורסם בפורום מפתחים API
      צ
      צדיק תמים