@יב לא אפשרי
הודעות שפורסמו על ידי האדם החושב
-
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: שליחת הסטטוס בסיום לקוח בתור - לגוגל סקריפט
@הללוהו תביא את ההגדרות המלאות משלוחת התור ואת הקוד המלא מגוגל סקריפט ואולי נוכל לעזור לך.
אגב, אתה מודע לכך שצריך לעדכן פריסה אחרי כל שינוי בקוד כדי שהשינויים יחולו? -
RE: השארת הנציג על הקו בסיום שיחת תור
@יהודה-צ-כ חשבתי על הכיוון הזה, הבעיה תהיה במקרה שהלקוח ניתק לפני שהנציג הספיק לעשות את זה.
מה גם שזה לא יעזור למקרה הספציפי הזה, מה שאני צריך זה למיין את הקלטות התור לפי קטגוריות על ידי בחירת הנציג את הקטגוריה המתאימה + קריאת api, אם השיחה עדיין לא הסתיימה אין עדיין את ההקלטה. -
RE: השארת הנציג על הקו בסיום שיחת תור
@יהודה-צ-כ אני צריך שדווקא הנציג יגדיר.
-
RE: שליחת הסטטוס בסיום לקוח בתור - לגוגל סקריפט
@הללוהו למיטב זכרוני השליחה מימות כpost לא שולחת את הנתונים במבנה json אלא כפרמטרים מופרדים ב& ו =
אגב, למה אתה לא שולח בget? -
השארת הנציג על הקו בסיום שיחת תור
אני צריך לקבל משוב מהנציג בסיום שיחת תור לאיזו קטגוריה לשייך את השיחה, אבל אני לא רואה דרך להשאיר את הנציג על הקו בסיום השיחה. (לבקש מהנציג שיתקשר כל פעם שוב פעם למערכת זה לא ישים)
הרעיון היחידי שהצלחתי לחשוב עליו הוא להגדיר שלוחת פילטר לפי מספר מאזינים שמפנה לשלוחת 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, והדרך היחידה שעולה בדעתי זה לבדוק לפי מזהה השיחה (שמופיע שם בלוג), השאלה היא אם יש דרך כלשהי לקבל את המידע על הקובץ מאיזה מזהה שיחה הוא הוקלט.
בתודה מראש. -
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