הודעות שפורסמו על ידי האדם החושב
-
RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻
@אביי-ורבא אם אתה צודק זה בעצם אומר שברגע שאתה מוסיף את כתובת הip של נטפרי כל אחד אחר בנטפרי יוכל להתחבר בלי אימות דו שלבי, מה הועילו חכמים בתקנתם...
-
RE: אבטחה - באימות דו שלבי / דעתכם... 🪪💂🏻
לדעתי זה שבכל שינוי ip צריך לעשות אימות מחדש זה מאד מפריע, כל מי שמשתמש סטיק בכל חיבור שלו הip משתנה.
הייתי מציע שהסשן ישמר בדפדפן, כמו שכל אתר אחר עושה (google, github וכו' וכו'). -
RE: עזרה | הכנת לינק לפעולות דרך API במחשב
@פלמנמוני בget יש הגבלה לאורך הבקשה, כך שאם הוא ישים מידי הרבה מספרים זה לא יעבוד.
-
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
זה לא עובד.