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

    הודעות שפורסמו על ידי האדם החושב

    • RE: מודול API אני מקבל תגובה אין מענה בשרת API

      @sumone צודק.
      שים לב שבכתובת ההיא בheaders כתוב שהcontent-type הוא json, אולי זה מה שגורם לבעיה.
      מה רשום לך בapilog?
      אגב, שים לב שכתבת את השורה הזאת:

      api_hangup_send=noapi_hangup_send=no
      
      פורסם בעזרה הדדית למשתמשים מתקדמים
      ה
      האדם החושב
    • RE: מודול API אני מקבל תגובה אין מענה בשרת API

      @אלי-דובדבן אתה צריך להחזיר תשובת שרת בפורמט טקסט רגיל, לא json.

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

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

      queue_record_duplicate_link=מיקום
      

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

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

      @ישראללוי

      from uuid import uuid4
      
      import requests    
      
      class Yemot:
          BASE_URL = "https://www.call2all.co.il/ym/api/"
      
          def __init__(
                  self,
                  user_name: str,
                  password: str | int,
          ) -> None:
              self.token = f"{user_name}:{password}"
              self.params = {
                  "token": self.token
              }
      
          def upload_file(self, path: str, blob: bytes, file_name: str, base_path: str = "ivr2:/") -> bool:
              total_size = len(blob)
              chunk_size = 49 * 1024 * 1024
              chunks = [blob[offset:offset + chunk_size] for offset in range(0, total_size, chunk_size)]
              if len(chunks) == 1:
                  return self._upload_small_file(path, blob, file_name, base_path)
              else:
                  return self._upload_large_file(path, chunks, file_name, total_size, base_path)
      
          def _upload_small_file(self, path: str, blob: bytes, file_name: str, base_path: str) -> bool:
              data = {
                  "path": f"{base_path}{path}",
                  "convertAudio": "1",
                  "autoNumbering": "true",
              }
              data.update(self.params)
              files = {"file": (file_name, blob)}
              url = f"{self.BASE_URL}UploadFile"
              response = requests.post(url, files=files, data=data).json()
              return response["responseStatus"] == "OK"
      
          def _upload_large_file(self, path: str, chunks: list[bytes], file_name: str, content_size: int, base_path: str) -> bool:
              qquuid = str(uuid4())
              offset = 0
              for index, chunk in enumerate(chunks):
                  data = {
                      "path": f"{base_path}{path}",
                      "qquuid": qquuid,
                      "convertAudio": "1",
                      "autoNumbering": "true",
                      "uploader": "yemot-admin",
                      "qqfilename": file_name,
                      "qqtotalfilesize": content_size,
                      "qqtotalparts": len(chunks),
                      "qqchunksize": len(chunk),
                      "qqpartbyteoffset": offset,
                      "qqpartindex": index,
                  }
                  data.update(self.params)
                  files = {
                      "qqfile": chunk,
                  }
                  url = f"{self.BASE_URL}UploadFile"
                  response = requests.post(url, data=data, files=files).json()
                  if not response["success"]:
                      print(f"Error uploading chunk {index}: {response}")
                      return False
                  offset += len(chunk)
      
              data = {
                  "path": f"{base_path}{path}",
                  "uploader": "yemot-admin",
                  "convertAudio": "1",
                  "autoNumbering": "true",
                  "qquuid": qquuid,
                  "qqfilename": file_name,
                  "qqtotalfilesize": content_size,
                  "qqtotalparts": len(chunks),
              }
              data.update(self.params)
              response = requests.post(f"{self.BASE_URL}UploadFile?done", data=data).json()
              return response["responseStatus"] == "OK"
      
      
      פורסם בעזרה הדדית למשתמשים מתקדמים
      ה
      האדם החושב
    • RE: בדיקת קוד פייתון

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

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

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

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

      @יהודה-צ-כ לא עובד.

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

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

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

      @יהודה-צ-כ אני צריך שדווקא הנציג יגדיר.

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

      @הללוהו למיטב זכרוני השליחה מימות כpost לא שולחת את הנתונים במבנה json אלא כפרמטרים מופרדים ב& ו =
      אגב, למה אתה לא שולח בget?

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

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

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

      @אופיר זה מספר וירטואלי

      type=private_did
      private_did_admin=מספר הטלפון שלך
      
      פורסם בעל הפורום
      ה
      האדם החושב
    • RE: נתיב יחסי במודלים add_id_to_list ו record_system_messages

      @CUBASE בשמירת קובץ הקלטה גם יש נתיב יחסי. (אם כי כתיבת הנתיב היחסי שם קצת שונה מהדרך הרגילה)

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

      @CUBASE
      נניח אני בנתיב

      ivr2:1/2/3
      

      ואני רוצה לשנות קובץ שנמצא בנתיב

      ivr2:1/1/2
      

      אם אני כותב כך:

      type=add_id_to_list
      add_id_to_list_location_list=/1/1/2
      add_id_to_list_key=001
      add_id_to_list_value_type=digits
      add_id_to_list_value_change=yes
      

      הכל עובד, אבל אם אני כותב כך:

      type=add_id_to_list
      add_id_to_list_location_list=../../1/2
      add_id_to_list_key=001
      add_id_to_list_value_type=digits
      add_id_to_list_value_change=yes
      

      זה לא עובד.

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

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

      add_id_to_list_value_change=yes
      

      לא מושמעת הודעת שגיאה.

      במודל record_system_messages יש את אותה בעיה.

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

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

      פורסם בבאגים במערכת
      ה
      האדם החושב
    • פורמט טלפון בינלאומי בLogFolderEnterExit

      שמתי לב שבמספר אמריקאי הקידומת 1 נכנסת בסוף המספר, השאלה היא האם זה כך בכל המדינות והאם יש דרך לתקן את זה?

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

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

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

      @צבי-ד-צ

      def upload_tts_file(phone: str, tts_content: str):
          """העלאת קובץ TTS לשרת"""
          url = f"{BASE_URL}/UploadTextFile"
          params = {
              "token": TOKEN,
              "what": f"ivr2:5/{phone}.tts",
              "contents": tts_content
          }
          
          try:
              logging.debug(f"שולח בקשה להעלאת קובץ TTS עבור {phone}: {url}")
              logging.debug(f"פרמטרים: {params}")
              logging.debug(f"תוכן TTS: {tts_content}")
              
              response = requests.get(url, params=params)
              response.raise_for_status()
              
              logging.debug(f"תגובת השרת בהעלאת TTS: {response.text}")
              logging.info(f"העלאת קובץ TTS עבור {phone} בוצעה בהצלחה")
              return response
          except requests.exceptions.RequestException as e:
              logging.error(f"שגיאה בהעלאת קובץ TTS עבור {phone}: {e}")
              logging.error(traceback.format_exc())
              raise
      
      פורסם בפורום מפתחים API
      ה
      האדם החושב
    • RE: תא קולי השולח העתק לדוא"ל וקבלת ההקלטה לטלגרם

      @eliad כן

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