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

    מודול API - ביצוע פעולות על רשימה שחוזרת מהשרת

    עזרה הדדית למשתמשים מתקדמים
    9
    36
    1402
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • M
      MGM IVR מומחה @Chaim נערך לאחרונה על ידי

      @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

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

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

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

      C תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • C
        Chaim @MGM IVR נערך לאחרונה על ידי

        @MGM-IVR כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

        לא חושב שזה מסורבל מידי

        עדיין לא ברור איך.
        לא אוכל להדריך את המשתמש ללחוץ על 1 כדי לבחור את הפריט, אלא כל פריט יצטרך להקיש את השלוחה המתאימה לפריט. כמו"כ המשתמש לא יוכל לדפדף בין הפריטים - פריט הקודם / פריט הבא. אין אפשרות לדפדף בין שלוחות בלי להקיש את מס' השלוחה.

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

        שוב, זה נראה לי מאד לא נכון לבנות מערכת שלימה בזמן שהמשתמש ממתין לתשובה.

        מישהו יודע דרך נוספת ?

        M תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • M
          MGM IVR מומחה @Chaim נערך לאחרונה על ידי

          @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

          לא אוכל להדריך את המשתמש ללחוץ על 1 כדי לבחור את הפריט, אלא כל פריט יצטרך להקיש את השלוחה המתאימה לפריט. כמו"כ המשתמש לא יוכל לדפדף בין הפריטים - פריט הקודם / פריט הבא. אין אפשרות לדפדף בין שלוחות בלי להקיש את מס' השלוחה.

          תפריט זמני ראשי:
          קובץ tts עם:
          לתחנה רבי עקיבא / גן ורשא הקישו 1
          לתחנה חזו״א / האדמו״ר מגור הקישו 2

          שלוחה 1
          קובץ m1000 : קו 123 יגיע לתחנה רבי עקיבא גן וורשא בשעה 10:59
          שלוחה 6 מעבר לשלוחה אחרת זמני/2
          שלוחה 2
          קובץ m1000 : קו 123 יגיע לתחנה חזו״א האדמו״ר מגור בשעה 11:03
          שלוחה 6 מעבר לשלוחה אחרת זמני/1
          שלוחה 4 מעבר לשלוחה אחרת זמני /3

          וכן על זה הדרך.

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

          @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

          למשל שבלחיצה על 1 בעת שמיעת קובץ יעביר את המשתמש לשלוחה מסויימת עם פרמטרים מסויים (כדי שאדע איזה קובץ העביר את המשתמש).

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

          @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

          שוב, זה נראה לי מאד לא נכון לבנות מערכת שלימה בזמן שהמשתמש ממתין לתשובה.

          באיזה שפה אתה כותב?

          C תגובה 1 תגובה אחרונה תגובה ציטוט 1
          • C
            Chaim @MGM IVR נערך לאחרונה על ידי

            @MGM-IVR כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

            באיזה שפה אתה כותב?

            #C

            M תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • M
              MGM IVR מומחה @Chaim נערך לאחרונה על ידי

              @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

              @MGM-IVR כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

              באיזה שפה אתה כותב?

              #C

              באיזה שרת http?

              C תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • C
                Chaim @MGM IVR נערך לאחרונה על ידי Chaim

                @MGM-IVR כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                באיזה שרת http?

                אין לי מושג. זה NET.

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

                צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • C
                  Chaim נערך לאחרונה על ידי

                  למישהו יש פיתרון ?
                  אין פיתרון בימות המשיח ?
                  מה אומר @ימות-המשיח ?

                  A צ 2 תגובות תגובה אחרונה תגובה ציטוט 0
                  • A
                    amp Software 0 @Chaim נערך לאחרונה על ידי amp Software 0

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

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

                    תגובה 1 תגובה אחרונה תגובה ציטוט 1
                    • צ
                      צדיק תמים מומחה @Chaim נערך לאחרונה על ידי צדיק תמים

                      @Chaim כמו שכתבו הפתרון הוא read, כדאי לכתוב את זה בnode.js כי יש ספריה שנבנתה ע"י @מאזין-נלהב ושופרה על ידי.
                      https://github.com/ShlomoCode/yemot-router2
                      אם לדוגמה אתה רוצה

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

                      הקוד ייראה בערך ככה:

                         for (let i = 0; i < messages.length; i++) {
                              const message = messages[i];
                              const resp = await call.read([message], 'tap', { block_change_type_lang: true, read_none: true,  sec_wait: 0.1, max: 1 });
                              // הדגמה - אם הקיש 2 תוך כדי שם התחנה - לחזור לתחנה קודמת
                              if (resp === '2') {
                                  if (i === 0) { // שלא יגיע למספר שלילי
                                      i -= 1;
                                  } else {
                                      i -= 2;
                                  }
                              }
                          }
                      

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

                      C ה 3 תגובות תגובה אחרונה תגובה ציטוט 3
                      • C
                        Chaim @צדיק תמים נערך לאחרונה על ידי

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

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

                          @צדיק-תמים כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

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

                          השרת ממשיך לחכות לתשובה?
                          כי הבנתי שבphp לא

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

                            @הלי כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                            @צדיק-תמים כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

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

                            השרת ממשיך לחכות לתשובה?
                            כי הבנתי שבphp לא

                            ברור
                            node.js היא לא PHP...

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

                              @צדיק-תמים ימות המשיח שולחים קריאות בעקרון לphp לא?

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

                                @הלי כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                                @צדיק-תמים ימות המשיח שולחים קריאות בעקרון לphp לא?

                                🙄 ממש לא

                                תגובה 1 תגובה אחרונה תגובה ציטוט 2
                                • C
                                  Chaim @צדיק תמים נערך לאחרונה על ידי

                                  @צדיק-תמים כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                                  @Chaim כמו שכתבו הפתרון הוא read, כדאי לכתוב את זה בnode.js כי יש ספריה שנבנתה ע"י @מאזין-נלהב ושופרה על ידי.
                                  https://github.com/ShlomoCode/yemot-router2
                                  הקוד ייראה בערך ככה:

                                     for (let i = 0; i < messages.length; i++) {
                                          const message = messages[i];
                                          const resp = await call.read([message], 'tap', { block_change_type_lang: true, read_none: true,  sec_wait: 1, max: 1 });
                                          // הדגמה - אם הקיש 2 תוך כדי שם התחנה - לחזור לתחנה קודמת
                                          if (resp === '2') {
                                              if (i === 0) { // שלא יגיע למספר שלילי
                                                  i -= 1;
                                              } else {
                                                  i -= 2;
                                              }
                                          }
                                      }
                                  

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

                                  אני ב- #C. רוצה להבין יותר ברור.

                                  1. אני צריך לשמור היכן שהוא את הרשימה ?
                                  2. איך אני יודע באיזה פריט המאזין אוחז ?

                                  הרי בכל פעם שמאזין מגיב (או לא מגיב), ימות חוזרים אלי לשרת כאילו מהתחלה, לא כן ?
                                  אז לגבי שאלה 2, אולי אגדיר לכל פריט שאני שולח למאזין, משתנה הכולל את האינדקס (לדוגמא MSG_1) ואז יצטברו בURL כל הפריטים, ובכל פעם אבדוק מה הפריט האחרון שהתווסף וכד' ?
                                  אבל עדיין מה עם שאלה 1 - היכן לשמור את הרשימה ? ב-DB - לפי המס' שהתקשר ? נראה לי קצת מדאי הרבה פעולות על כל פריט (שליפה מ-DB וכו') המאזין יצטרך לנוח בין כל פריט ופריט....

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

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

                                    @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                                    אבל זה לא העניין, אני יכול לכתוב גם בשפות אחרות. עדיין אין לי פיתרון לכל הדרישות.

                                    ממליץ אם כן לכתוב בnode.js עם הספריה הנ"ל.
                                    אם אתה מתעקש על C#, לא נותר לי אלא לאחל בהצלחה, תעבור קצת על קודים בפורום ותראה איך משתמשים מתמודדים עם הבעיה שכל בקשה מריצה את הקוד מההתחלה (בשפות אחרות).


                                    @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

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

                                    לא מדויק. בURL יהיה גם את כל הערכים הקודמים.
                                    כדאי לקרוא בעיון את https://f2.freeivr.co.il/post/78283

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

                                    @Chaim כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                                    אבל עדיין מה עם שאלה 1 - היכן לשמור את הרשימה ? ב-DB - לפי המס' שהתקשר ? נראה לי קצת מדאי הרבה פעולות על כל פריט (שליפה מ-DB וכו') המאזין יצטרך לנוח בין כל פריט ופריט....

                                    אין סיבה בdb, אפשר במשתנה גלובלי כלשהו, כלומר משתנה שמחזיק בין הבקשות.
                                    לדוגמה בexpress (node.js) יש את app.locals, או סתם משתנה שמוגדר בסקופ יותר גבוה.
                                    כנ"ל בפייתון, ע"י המילה השמורה global

                                    C ש 3 תגובות תגובה אחרונה תגובה ציטוט 0
                                    • C
                                      Chaim @צדיק תמים נערך לאחרונה על ידי

                                      @צדיק-תמים תודה רבה לך!

                                      תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                      • C
                                        Chaim @צדיק תמים נערך לאחרונה על ידי Chaim

                                        @צדיק-תמים כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                                        ממליץ אם כן לכתוב בnode.js עם הספריה הנ"ל.
                                        אם אתה מתעקש על C#, לא נותר לי אלא לאחל בהצלחה, תעבור קצת על קודים בפורום ותראה איך משתמשים מתמודדים עם הבעיה שכל בקשה מריצה את הקוד מההתחלה (בשפות אחרות).

                                        @צדיק-תמים כברכתך ... כתבתי אכן ב-#C בהצלחה ב"ה. אכן חייבים ספריה מסודרת אחרת אפשר להתבלבל בגדול. ואכן לצורך כך פיתחתי את HTP.Yemot.NET שניתן להוריד אותה מכאן. בהמשך אשתדל לתעד ולהוסיף דוגמאות. בנתיים ניתן להשתמש בה בהצלחה.

                                        ב C צ 3 תגובות תגובה אחרונה תגובה ציטוט 1
                                        • ב
                                          בוס @Chaim נערך לאחרונה על ידי

                                          @Chaim הקישורים חסומים

                                          C תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                          • C
                                            Chaim @בוס נערך לאחרונה על ידי

                                            @בוס כתב במודול API - ביצוע פעולות על רשימה שחוזרת מהשרת:

                                            @Chaim הקישורים חסומים

                                            זה ב- github
                                            https://github.com/chaimhtp/HTP.Yemot.NET
                                            חסום לך github ?

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