• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות

    פרמטרים מצטברים לאורך השיחה

    מתוזמן נעוץ נעול הועבר לא נפתר פורום מפתחים API
    3 פוסטים 2 כותבים 8 צפיות 1 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • K מחובר
      kolcode
      נערך לאחרונה על ידי

      שלום,
      אני מפתח מערכת IVR על ימות המשיח עם Python/FastAPI, ויש לי בעיה יסודית שאני נאבק איתה זמן רב. אשמח לדעת אם מישהו פתר אותה.
      הבעיה הבסיסית — ימות מצרף את כל ההקשות מכל השיחה
      כשימות שולח בקשה לשרת שלנו, הוא לא שולח רק את ההקשה הנוכחית — הוא שולח את כל הערכים שנאספו עד כה לאורך כל השיחה, כל אחד כפרמטר נפרד ב-URL. לדוגמה:
      ?data=1&data=2&data=3
      זה אומר שאם המשתמש הקיש 1 בתפריט הראשי, אחר כך 2 בתפריט משנה, ואחר כך 3 — כל הבקשה הבאה תכיל את שלושתם. הפתרון שמצאנו לזה הוא לקחת תמיד את האחרון: getlist('data')[-1], וזה עובד — ימות תיכנן את זה כך.
      הבעיה שלא נפתרת — "זיכרון" הקשה מה-state הקודם
      הבעיה האמיתית מתרחשת כשחוזרים לstate קודם. לדוגמה:

      state=main: מוצג תפריט, המשתמש מקיש 1
      עוברים ל-state=hours
      המשתמש מקיש * לחזרה
      חוזרים ל-state=main — ימות שולח: data=1&data=*
      אנחנו לוקחים [-1] = * — בסדר, נכון
      מוצג תפריט ראשי שוב, המשתמש מקיש 2
      ימות שולח: data=1&data=*&data=2
      [-1] = 2 — תקין.

      אבל — הבעיה מופיעה כשיש שני read לאורך אותו state, ושם הפרמטר זהה. ימות "זוכר" את ההקשה מהפעם הקודמת שהיה בשלוחה עם אותו שם, ולא ברור לנו למה.


      מה ניסיתי לפתור:
      ניסיון 1 — שמות פרמטר נפרדים לכל state: שינינו כל read לשתמש בשם ייחודי לפי ה-state (menu_main, menu_hours, וכו'). תיאורטית ימות לא יכול לבלבל ביניהם כי הם שמות שונים. לא עזר — ימות עדיין מצרף את כל ההיסטוריה של כל הפרמטרים גם כשהשמות שונים.
      ניסיון 2 — שמות דינמיים עם timestamp: שמות פרמטר שמשתנים בכל כניסה לstate (למשל menu_3842, menu_7193). עזר חלקית — אבל זה "עקיפה מכוערת" שמסבכת את הקוד, ולא תמיד אמינה.
      ניסיון 3 — דגל processed: סימון ב-session שהפרמטר כבר עובד, כדי לדלג עליו בפעם הבאה. נכשל — גרם לבאגים חדשים כי הסשן לא תמיד תואם למה שימות שולח.
      ניסיון 4 — בדיקה עם ערך 2 ב-read (use_existing): לפי התיעוד, ערך 2 שהוא ריק (ברירת מחדל) אמור לאלץ קבלה מחדש. בדקנו שאכן ריק — לא פתר את הבעיה.


      שאלות:
      האם יש דרך לאלץ את ימות לשכוח ערכים שנשלחו בפרמטר מסוים לאורך השיחה?
      האם יש דרך "לאפס" את רשימת הפרמטרים המצטברים בנקודה מסוימת בשיחה?
      האם מישהו מכיר מנגנון שימות שומר בו ערכים מעבר לפרמטר use_existing?
      האם הפתרון הנכון הוא go_to_folder (מעבר שלוחה) כדי לאלץ "שיחה חדשה" מבחינת הפרמטרים — ואם כן, האם יש דרך להימנע מהעיכוב שהוא גורם?

      תודה מראש

      ע תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • K kolcode סימן נושא זה כשאלה
      • ע מנותק
        ערוץ הסקרים @kolcode
        נערך לאחרונה על ידי

        @kolcode שים לב שאתה מגדיר בפרמטר השני ריק או no שלא יזכור הקשות, היו מקומות שעשיתי אצלי go_to_folder=. כדי להחיל מחדש בשלוחה

        K תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • K מחובר
          kolcode @ערוץ הסקרים
          נערך לאחרונה על ידי

          @ערוץ-הסקרים כתב בפרמטרים מצטברים לאורך השיחה:

          @kolcode שים לב שאתה מגדיר בפרמטר השני ריק או no שלא יזכור הקשות, היו מקומות שעשיתי אצלי go_to_folder=. כדי להחיל מחדש בשלוחה

          לא הבנתי. אני משאיר ריק ואז הוא לא מור לזכור. אז למה הוא זוכר?
          ומה, צריך לעשות בכל חזרה שלב אחורה go to folder?

          תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • פוסט ראשון
            פוסט אחרון