דילוג לתוכן
  • אתר מדריכי מחשבים, רשתות ומובייל, תוכנות שימושיות ועוד, בצורה מסודרת וברורה.

  • 5k נושאים
    40k פוסטים
    צבי-שצ

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

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

    למשל אני רוצה שמי שילחץ 1 יגיע לתת תפריט ושם הוא יוכל להקיש 1-9 ואז לנתב הלאה

    אז יש לי 2 דרכים לעשות את זה

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

    def handler(session, args): if not session.ready(): return # הגדרת משתנים לשימוש ב־XML מאוחר יותר session.setVariable("min_digits", "1") session.setVariable("max_digits", "1") session.setVariable("tries", "3") session.setVariable("timeout", "5000") session.setVariable("terminator", "#") session.setVariable("menu_prompt", "/path/to/menu_prompt.wav") session.setVariable("invalid_prompt", "invalid.wav") session.setVariable("valid_keys", "123") session.setVariable("timeout_prompt", "timeout.wav") session.execute("transfer", "menu_processor XML dynamic_menu")

    ואז בשלוחה עצמה לעשות

    <context name="dynamic_menu"> <extension name="menu_processor"> <condition field="destination_number" expression="^menu_processor$"> <action application="play_and_get_digits" data="${min_digits} ${max_digits} ${tries} ${timeout} ${terminator} ${menu_prompt} ${invalid_prompt} ${valid_keys} ${timeout_prompt} input_digit"/> <action application="python" data="handle_menu_result.py"/> <action application="transfer" data="${result} XML main"/> </condition> </extension> </context>

    ואז בhandle_menu_result (שבעצם אחראי על להגיד לאן לנתב אחרי שלחצו) לכתוב משו כזה

    def handler(session, args): digit = session.getVariable("input_digit") menu_id = session.getVariable("menu_id") if menu_id == "main_menu": if digit == "1": session.setVariable("result", "sales") elif digit == "2": session.setVariable("result", "support") else: session.setVariable("result", "menu_processor")

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

    <extension name="go_to_dynamic_menu"> <condition field="destination_number" expression="^123$"> <action application="python" data="my_menu_entry.py"/> </condition> </extension>

    ואז את הקוד פייתון לכתוב משו כזה

    def handler(session, args): if not session.ready(): return def play_menu(prompt_file, valid_digits, tries=3, timeout=5000, terminator="#"): session.setInputCallback(None) # Reset input callback return session.playAndGetDigits( 1, # min digits 1, # max digits tries, # max tries timeout, # timeout ms terminator, # terminator key prompt_file, # prompt to play "ivr/invalid.wav", # invalid entry prompt valid_digits, # valid digits "", # regex (not used here) 5000, # digit timeout "input_digit" # variable name to store result ) # שלב 1: תפריט ראשי main_choice = play_menu("ivr/main_menu.wav", "12") if not main_choice: session.streamFile("ivr/timeout.wav") return # שלב 2: תת תפריט לפי הבחירה if main_choice == "1": submenu_prompt = "ivr/service_submenu.wav" menu_label = "service" elif main_choice == "2": submenu_prompt = "ivr/support_submenu.wav" menu_label = "support" else: session.streamFile("ivr/invalid.wav") return sub_choice = play_menu(submenu_prompt, "123456789") if not sub_choice: session.streamFile("ivr/timeout.wav") return # שלב 3: הדמיית פעולה (או העברה אמיתית) session.streamFile(f"ivr/you_selected_{menu_label}_{sub_choice}.wav") # או לצורך העברה: # session.execute("transfer", f"{menu_label}_{sub_choice} XML public") # סיום session.hangup()

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

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

  • 492 נושאים
    6k פוסטים
    קינג קומפיוטרק

    @שוהם307 מקום מעולה ומאוד מומלץ
    https://telechofesh.co.il/zimmer/סוויטה-במושבה-לזוגות/

    בזה לא הייתי אבל שמעתי הרבה המלצות מכאלה שהיו
    https://spant.co.il/וילנס/

  • כאן תוכלו לדון בכל מה שקשור לבניה - פנים וחוץ

    255 נושאים
    3k פוסטים
    dovidD

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

  • קטגוריה כללית, המקום המתאים לכל נושא שאין לו קטגוריה מתאימה יותר.

    1k נושאים
    13k פוסטים
    pcinfogmachP

    אולי במקום "ביקורת" עדיף "חוות דעת" או "המלצות"

  • 499 נושאים
    4k פוסטים
    dovidD

    למצוא במייל שלך הודעה שנשלחה אליך מאת admin@tchumim.com
    עם הכותרת "[תחומים - פורום חרדי מקצועי] בבקשה אמת את המייל שלך."
    ושמה ללחוץ על אישור כתובת המייל.

    בבקשה אל תגיב בפורום אלא שלח מייל לכתובת הזאת שכתבתי או ל dovid@tchumim.com .

  • 177 נושאים
    123 פוסטים
    נאמני השבתנ

    לקבלת הרשימה העדכנית של החנויות השומרות שבת, והמחללות שבת עדיין לצערנו, יש לפנות למייל הרשמי של מזכירות וועדת הרבנים לענייני השבת בכתובת
    b63246324@gmail.com
    ובזכות שמירת השבת, והפהרסיה השבתית בארץ הקודש, שנוושע בתשועת עולמים
    בידינו הדבר!
    בברכה
    פעילי השבת - פרוייקט נאמני שבת
    p.hsabbath@gmail.com

    bd2791a8-db02-43a1-be57-c014b124a31b-image.png

24

מחובר

8.3k

משתמשים

16.8k

נושאים

164.3k

פוסטים
בא תתחבר לדף היומי!