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

    עזרה בתחילת העבודה עם הספריה לnodejs למתחיל

    פורום מפתחים API
    2
    11
    220
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגיבו כנושא
    התחברו בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • מ
      מוטי מן נערך לאחרונה על ידי

      יש את הספריה שפרסם @צדיק-תמים כאן https://github.com/ShlomoCode/yemot-router2/tree/master

      ואני מנסה להבין כיצד אני צריך להשתמש בה, אני מתחיל בnode.

      יש לי בשרת (אובנטו) את הקובץ הבא, שמשמיע לי בטלפון "שלום עולמי, בית חלומי",

      const express = require('express');
      const app = express();
      const port = 3101;
      
      app.listen(port, function () {
          console.log(`Server is listening on port ${port}`);
      });
      
      app.get('/test', function (req, res) {
          res.send('id_list_message=t-שלום עולמי.t-בית חלומי &');
      });
      

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

      כיצד אני עושה דבר כזה עם הספרייה הנ"ל?

      תודה לכל המסייעים!

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

        @מוטי-מן יש דוגמה, ראית אותה? כדאי גם לעבור על התיעוד.

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

          @צדיק-תמים עברתי, ולא ממש הבנתי את הדוגמה עצמה, היא יותר מידי עמוסה ומורכבת 😞

          האם אפשר לטעון את הדוגמה עצמה כך

          nodejs exmple.js
          

          ?

          א"כ, אילו מודולים צריך להתקין?

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

            @מוטי-מן הנה דוגמה יותר מופשטת:

            import { YemotRouter } from 'yemot-router2';
            import express from 'express';
            export const app = express();
            
            export const router = YemotRouter({ printLog: true });
            
            /** @param {import('yemot-router2').Call} call */
            async function callHandler (call) {
                const choice = await call.read([{
                    type: 'text',
                    data: 'לשלום עולמי הקש 1 לבית חלומי הקש 2'
                }], 'tap', {
                    max_digits: 1,
                    digits_allowed: [1, 2]
                });
            
                console.log('choice', choice);
            
                return call.id_list_message([{
                    type: 'text',
                    data: 'שלום ותודה'
                }]);
            }
            
            router.get('/', callHandler);
            
            app.use(router);
            
            const port = 3000;
            app.listen(port, () => console.log(`example yemot-router2 running on port ${port}`));
            

            כדי להריץ אותה יש להתקין קודם את התלות:

            npm install express yemot-router2
            
            תגובה 1 תגובה אחרונה תגובה ציטוט 1
            • צ
              צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי

              @מוטי-מן כתב בעזרה בתחילת העבודה עם הספריה לnodejs למתחיל:

              @צדיק-תמים עברתי, ולא ממש הבנתי את הדוגמה עצמה, היא יותר מידי עמוסה ומורכבת 😞

              האם אפשר לטעון את הדוגמה עצמה כך

              nodejs exmple.js
              

              ?

              א"כ, אילו מודולים צריך להתקין?

              כדי להריץ את הדוגמה ששם תוריד את כל הrepo למחשב, תריץ npm install ואז npm run example (שזה בעצם node --watch example.js)

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

                @צדיק-תמים כיצד ניתן לעבוד עם api_url_post=yes?

                אני מקבל את השגיאה

                
                Error: YemotRouter: it look you use api_url_post=yes, but you didn't include express.urlencoded({ extended: true }) middleware! (https://expressjs.com/en/4x/api.html#express.urlencoded)
                    at file:///var/www/node/node_modules/yemot-router2/lib/yemot_router.js:122:35
                    at Layer.handle [as handle_request] (/var/www/node/node_modules/express/lib/router/layer.js:95:5)
                    at next (/var/www/node/node_modules/express/lib/router/route.js:144:13)
                    at Route.dispatch (/var/www/node/node_modules/express/lib/router/route.js:114:3)
                    at Layer.handle [as handle_request] (/var/www/node/node_modules/express/lib/router/layer.js:95:5)
                    at /var/www/node/node_modules/express/lib/router/index.js:284:15
                    at Function.process_params (/var/www/node/node_modules/express/lib/router/index.js:346:12)
                    at next (/var/www/node/node_modules/express/lib/router/index.js:280:10)
                    at Function.handle (/var/www/node/node_modules/express/lib/router/index.js:175:3)
                    at router (/var/www/node/node_modules/express/lib/router/index.js:47:12)
                
                צ תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • צ
                  צדיק תמים מומחה @מוטי מן נערך לאחרונה על ידי צדיק תמים

                  @מוטי-מן כתוב לך בדיוק מה הבעיה 🤔

                  @מוטי-מן כתב בעזרה בתחילת העבודה עם הספריה לnodejs למתחיל:

                  Error: YemotRouter: it look you use api_url_post=yes, but you didn't include express.urlencoded({ extended: true }) middleware! (https://expressjs.com/en/4x/api.html#express.urlencoded)

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

                    @צדיק-תמים כן אבל זה לא ממש מובן, לפחות לאנשים כמוני 🙄

                    ובדרך אגב, יש דרך לשמור את הלוגים שהספריה מדפיסה לקובץ כלשהו בשרת?

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

                      @מוטי-מן אתה צריך להוסיף:

                      app.use(express.urlencoded({ extended: true }));
                      

                      ממליץ לך שאחרי שהצלחת להקים hellow world תעבור על הדוגמה המלאה.

                      @מוטי-מן כתב בעזרה בתחילת העבודה עם הספריה לnodejs למתחיל:

                      ובדרך אגב, יש דרך לשמור את הלוגים שהספריה מדפיסה לקובץ כלשהו בשרת?

                      הספריה משתמשת בconsole.log, אתה יכול להפנות את הפלט של התהליך לקובץ טקסט:

                      node app.js >> log.txt
                      

                      כדי להחליף כל פעם את הקובץ במקום להוסיף, תשתמש ב> אחד.

                      עבור השרת אני ממליץ להשתמש בpm2 (https://tchumim.com/topic/2190/pm2-כלי-לניהול-והרצת-אפליקציות-טרמינל), כלי נוח מאוד שגם מאפשר לשמור את הלוגים עם תאריך ושעה אוטומטי, הפעלה אוטומטית של האפליקציות אחרי הפעלה מחדש, ועוד המון דברים.

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

                        @צדיק-תמים ניסיתי את זה כבר, ככה

                        router.get('/', call);
                        router.post('/', call);
                        app.use(router);
                        app.use(express.urlencoded({ extended: true }));
                        

                        או ככה

                        router.get('/', call);
                        router.post('/', call);
                        app.use(router, express.urlencoded({ extended: true }));
                        

                        ועדיין מחזיר לי את השגיאה הנ"ל בעת קריאה בpost

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

                          @מוטי-מן השורה שהוספת צריכה להיות לפני הapp.use(router), כמו כל middleware

                          app.use(express.urlencoded({ extended: true }));
                          router.get('/', call);
                          router.post('/', call);
                          app.use(router);
                          

                          אגב זה לא משהו של הספריה שלי, גם אם היית בונה שרת HTTP באקספרס פשוט ושולח אליו בצורה שימות שולחים בpost, היית צריך את המידלוור הזה.

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