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

    עזרה בהגדרות לקו נסיעות שיתופיות בAPI

    מתוזמן נעוץ נעול הועבר עזרה הדדית למשתמשים מתקדמים
    19 פוסטים 4 כותבים 148 צפיות 3 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ע מנותק
      עידו @יצמח פורקניה
      נערך לאחרונה על ידי עידו

      @יצמח-פורקניה מה ההגדרות בשלוחה?
      איזה שרת?

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

        ההגדרות בשלוחה

        type=api
        api_link=https://yemot-rides.onrender.com/ivr-api
        api_add_id=yes
        api_add_phone=yes
        

        השרת כתוב ב-Node.js עם פריימוורק Express, והוא מאוחסן ב-Render. מסד הנתונים הוא MongoDB Atlas.
        את הקוד העליתי בהודעה קודמת

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

          @יצמח-פורקניה
          א"א לגשת לקוד.
          תעלה אותו לכאן בתור קוד.

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

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

            שלום לכולם,

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

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

            הוספה לקובץ EnterIDValName, וכו'.

            ממשק נהגים ונוסעים:

            (רשימה לבנה)

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

            API ודאי יהיה צריך להיות מעורב בעסק, מה שכן, אני חושב שאפשר להסתדר רק עם מודול api

            כמו כן יהיה לנהגים אפשרות לשמיעת נוסעים שהשאירו הודעה ולחייג אליהם ישירות בלחיצה על 0 (2 ערוצים מקבילים).

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

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

            כנ"ל

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

            לא רואה דרך בלי api.

            בכל מקרה אני רוצה שההודעות ימחקו אוטומטית לאחר 3 שעות.

            מודול api.

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

            תגיד איפה אתה צריך יותר הרחבה.

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

              זה הקוד בJS שבינה כתבה לי

              const express = require("express");
              const mongoose = require("mongoose");
              
              const app = express();
              const port = process.env.PORT || 3000;
              const BASE_URL = "https://yemot-rides.onrender.com/ivr-api";
              const mongoURI = process.env.MONGO_URI;
              
              // --- חיבור ל-MongoDB ---
              mongoose.connect(mongoURI, {useNewUrlParser:true, useUnifiedTopology:true})
                  .then(()=>console.log("Mongo connected"))
                  .catch(err=>console.log("Mongo error:", err));
              
              // --- מודלים ---
              const userSchema = new mongoose.Schema({
                  phone: {type:String, required:true, unique:true},
                  name_recorded: {type:Boolean, default:false},
                  createdAt: {type:Date, default:Date.now}
              });
              
              const rideSchema = new mongoose.Schema({
                  type: {type:String, enum:["driver","passenger"], required:true},
                  driver_phone: {type:String, required:true},
                  direction: String,
                  time: String,
                  seats: String,
                  note_id: String,
                  createdAt: {type:Date, default:Date.now, expires:10800}
              });
              
              const User = mongoose.model("User", userSchema);
              const Ride = mongoose.model("Ride", rideSchema);
              
              // --- מסלול IVR ---
              app.get("/ivr-api", async (req,res)=>{
                  const ApiPhone = req.query.ApiPhone || req.query.phone;
                  const {ApiDigits, action, t, d, tm, s, r_id} = req.query;
              
                  if(!ApiPhone || ApiPhone==="anonymous"){
                      return res.send("say=t-לא ניתן לזהות את מספר הטלפון&goto_all_endpoints=exit");
                  }
              
                  try {
                      // --- בדיקה אם המשתמש רשום ---
                      let user = await User.findOne({phone: ApiPhone});
                      if(!user){
                          user = await User.create({phone: ApiPhone});
                      }
              
                      // --- הקלטת שם מיידית ---
                      if(!user.name_recorded && action!=="reg"){
                          const recName = `name_${ApiPhone}`;
                          return res.send(
                              `say=t-שלום! הקליטו את שמכם לאחר הצליל וסיימו בסולמית`+
                              `&record=${recName},1,10,no,no`+
                              `&go_to=${BASE_URL}?action=reg`
                          );
                      }
              
                      if(action==="reg"){
                          await User.updateOne({phone:ApiPhone},{name_recorded:true});
                          return res.send(`say=t-ההרשמה הושלמה&go_to=${BASE_URL}?action=main`);
                      }
              
                      // --- תפריט ראשי ---
                      if(!action || action==="main"){
                          return res.send(
                              `read=t-לנהגים הקישו 1 לנוסעים הקישו 2 למחיקת פרסומים הקישו 3`+
                              `=digits,1,1,1,7,yes,no&action=h_main`
                          );
                      }
              
                      if(action==="h_main"){
                          if(ApiDigits==="1") return res.send(`go_to=${BASE_URL}?action=d_menu`);
                          if(ApiDigits==="2") return res.send(`go_to=${BASE_URL}?action=p_menu`);
                          if(ApiDigits==="3") return res.send(`go_to=${BASE_URL}?action=del`);
                          return res.send(`go_to=${BASE_URL}?action=main`);
                      }
              
                      // --- נהג ---
                      if(action==="d_menu"){
                          return res.send(
                              `read=t-לפרסום נסיעה הקישו 1 לשמיעת בקשות נוסעים הקישו 2`+
                              `=digits,1,1,1,7,yes,no&action=h_d`
                          );
                      }
                      if(action==="h_d"){
                          if(ApiDigits==="1") return res.send(`go_to=${BASE_URL}?action=sel_dir&t=driver`);
                          if(ApiDigits==="2") return res.send(`go_to=${BASE_URL}?action=list&list_t=passenger`);
                          return res.send(`go_to=${BASE_URL}?action=main`);
                      }
              
                      // --- נוסע ---
                      if(action==="p_menu"){
                          return res.send(
                              `read=t-לבקשת נסיעה הקישו 1 לשמיעת נהגים הקישו 2`+
                              `=digits,1,1,1,7,yes,no&action=h_p`
                          );
                      }
                      if(action==="h_p"){
                          if(ApiDigits==="1") return res.send(`go_to=${BASE_URL}?action=sel_dir&t=passenger`);
                          if(ApiDigits==="2") return res.send(`go_to=${BASE_URL}?action=list&list_t=driver`);
                          return res.send(`go_to=${BASE_URL}?action=main`);
                      }
              
                      // --- בחירת כיוון ---
                      if(action==="sel_dir"){
                          return res.send(
                              `read=t-מירושלים לבני ברק הקישו 1 מבני ברק לירושלים הקישו 2`+
                              `=digits,1,1,1,7,yes,no&action=h_dir&t=${t}`
                          );
                      }
                      if(action==="h_dir"){
                          if(t==="driver"){
                              return res.send(
                                  `read=t-הקישו שעת יציאה בארבע ספרות`+
                                  `=digits,4,1,4,7,yes,no&action=set_time&t=${t}&d=${ApiDigits}`
                              );
                          }
                          return res.send(`go_to=${BASE_URL}?action=finish&t=${t}&d=${ApiDigits}`);
                      }
                      if(action==="set_time"){
                          return res.send(
                              `read=t-הקישו מספר מקומות פנויים`+
                              `=digits,1,1,2,7,yes,no&action=finish&t=${t}&d=${d}&tm=${ApiDigits}`
                          );
                      }
              
                      // --- שמירה סופית ---
                      if(action==="finish"){
                          await Ride.create({
                              type:t,
                              driver_phone:ApiPhone,
                              direction:d,
                              time:tm,
                              seats:ApiDigits
                          });
                          return res.send(`say=t-הפרסום נשמר בהצלחה&go_to=${BASE_URL}?action=main`);
                      }
              
                      // --- רשימות ---
                      if(action==="list"){
                          const listT = req.query.list_t;
                          const items = await Ride.find({type:listT}).sort({createdAt:-1}).limit(1);
                          if(items.length===0) return res.send(`say=t-אין כרגע פרסומים&go_to=${BASE_URL}?action=main`);
                          const item = items[0];
                          let msg = "t-פרסום נסיעה. .";
                          if(item.time) msg+=`t-בשעה ${item.time}. .`;
                          if(item.seats) msg+=`t-${item.seats} מקומות פנויים. .`;
                          msg+="t-לחיוג הקישו 0 לחזרה הקישו 2";
                          return res.send(`read=${msg}=digits,1,1,1,7,yes,no&action=list_opt&r_id=${item._id}`);
                      }
                      if(action==="list_opt"){
                          if(ApiDigits==="0"){
                              const ride = await Ride.findById(r_id);
                              if(ride) return res.send(`dial=${ride.driver_phone}`);
                          }
                          return res.send(`go_to=${BASE_URL}?action=main`);
                      }
              
                      // --- מחיקה ---
                      if(action==="del"){
                          const count = await Ride.countDocuments({driver_phone:ApiPhone});
                          if(count===0) return res.send(`say=t-אין לכם פרסומים פעילים&go_to=${BASE_URL}?action=main`);
                          return res.send(`read=t-נמצאו ${count} פרסומים למחיקה הקישו 7=digits,1,1,1,7,yes,no&action=del_ok`);
                      }
                      if(action==="del_ok" && ApiDigits==="7"){
                          await Ride.deleteMany({driver_phone:ApiPhone});
                          return res.send(`say=t-הפרסומים נמחקו&go_to=${BASE_URL}?action=main`);
                      }
              
                      return res.send(`go_to=${BASE_URL}?action=main`);
              
                  } catch(err){
                      console.log(err);
                      return res.send(`say=t-תקלה זמנית במערכת&goto_all_endpoints=exit`);
                  }
              });
              
              app.listen(port,()=>console.log("Server running on port", port));
              
              י תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • י מנותק
                יהודה צ. כ. @יצמח פורקניה
                נערך לאחרונה על ידי יהודה צ. כ.

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

                זה הקוד בJS שבינה כתבה לי

                const express = require("express");
                const mongoose = require("mongoose");
                
                const app = express();
                const port = process.env.PORT || 3000;
                const BASE_URL = "https://yemot-rides.onrender.com/ivr-api";
                const mongoURI = process.env.MONGO_URI;
                
                // --- חיבור ל-MongoDB ---
                mongoose.connect(mongoURI, {useNewUrlParser:true, useUnifiedTopology:true})
                    .then(()=>console.log("Mongo connected"))
                    .catch(err=>console.log("Mongo error:", err));
                
                // --- מודלים ---
                const userSchema = new mongoose.Schema({
                    phone: {type:String, required:true, unique:true},
                    name_recorded: {type:Boolean, default:false},
                    createdAt: {type:Date, default:Date.now}
                });
                
                const rideSchema = new mongoose.Schema({
                    type: {type:String, enum:["driver","passenger"], required:true},
                    driver_phone: {type:String, required:true},
                    direction: String,
                    time: String,
                    seats: String,
                    note_id: String,
                    createdAt: {type:Date, default:Date.now, expires:10800}
                });
                
                const User = mongoose.model("User", userSchema);
                const Ride = mongoose.model("Ride", rideSchema);
                
                // --- מסלול IVR ---
                app.get("/ivr-api", async (req,res)=>{
                    const ApiPhone = req.query.ApiPhone || req.query.phone;
                    const {ApiDigits, action, t, d, tm, s, r_id} = req.query;
                
                    if(!ApiPhone || ApiPhone==="anonymous"){
                        return res.send("say=t-לא ניתן לזהות את מספר הטלפון&goto_all_endpoints=exit");
                    }
                
                    try {
                        // --- בדיקה אם המשתמש רשום ---
                        let user = await User.findOne({phone: ApiPhone});
                        if(!user){
                            user = await User.create({phone: ApiPhone});
                        }
                
                        // --- הקלטת שם מיידית ---
                        if(!user.name_recorded && action!=="reg"){
                            const recName = `name_${ApiPhone}`;
                            return res.send(
                                `say=t-שלום! הקליטו את שמכם לאחר הצליל וסיימו בסולמית`+
                                `&record=${recName},1,10,no,no`+
                                `&go_to=${BASE_URL}?action=reg`
                            );
                        }
                
                        if(action==="reg"){
                            await User.updateOne({phone:ApiPhone},{name_recorded:true});
                            return res.send(`say=t-ההרשמה הושלמה&go_to=${BASE_URL}?action=main`);
                        }
                
                        // --- תפריט ראשי ---
                        if(!action || action==="main"){
                            return res.send(
                                `read=t-לנהגים הקישו 1 לנוסעים הקישו 2 למחיקת פרסומים הקישו 3`+
                                `=digits,1,1,1,7,yes,no&action=h_main`
                            );
                        }
                
                        if(action==="h_main"){
                            if(ApiDigits==="1") return res.send(`go_to=${BASE_URL}?action=d_menu`);
                            if(ApiDigits==="2") return res.send(`go_to=${BASE_URL}?action=p_menu`);
                            if(ApiDigits==="3") return res.send(`go_to=${BASE_URL}?action=del`);
                            return res.send(`go_to=${BASE_URL}?action=main`);
                        }
                
                        // --- נהג ---
                        if(action==="d_menu"){
                            return res.send(
                                `read=t-לפרסום נסיעה הקישו 1 לשמיעת בקשות נוסעים הקישו 2`+
                                `=digits,1,1,1,7,yes,no&action=h_d`
                            );
                        }
                        if(action==="h_d"){
                            if(ApiDigits==="1") return res.send(`go_to=${BASE_URL}?action=sel_dir&t=driver`);
                            if(ApiDigits==="2") return res.send(`go_to=${BASE_URL}?action=list&list_t=passenger`);
                            return res.send(`go_to=${BASE_URL}?action=main`);
                        }
                
                        // --- נוסע ---
                        if(action==="p_menu"){
                            return res.send(
                                `read=t-לבקשת נסיעה הקישו 1 לשמיעת נהגים הקישו 2`+
                                `=digits,1,1,1,7,yes,no&action=h_p`
                            );
                        }
                        if(action==="h_p"){
                            if(ApiDigits==="1") return res.send(`go_to=${BASE_URL}?action=sel_dir&t=passenger`);
                            if(ApiDigits==="2") return res.send(`go_to=${BASE_URL}?action=list&list_t=driver`);
                            return res.send(`go_to=${BASE_URL}?action=main`);
                        }
                
                        // --- בחירת כיוון ---
                        if(action==="sel_dir"){
                            return res.send(
                                `read=t-מירושלים לבני ברק הקישו 1 מבני ברק לירושלים הקישו 2`+
                                `=digits,1,1,1,7,yes,no&action=h_dir&t=${t}`
                            );
                        }
                        if(action==="h_dir"){
                            if(t==="driver"){
                                return res.send(
                                    `read=t-הקישו שעת יציאה בארבע ספרות`+
                                    `=digits,4,1,4,7,yes,no&action=set_time&t=${t}&d=${ApiDigits}`
                                );
                            }
                            return res.send(`go_to=${BASE_URL}?action=finish&t=${t}&d=${ApiDigits}`);
                        }
                        if(action==="set_time"){
                            return res.send(
                                `read=t-הקישו מספר מקומות פנויים`+
                                `=digits,1,1,2,7,yes,no&action=finish&t=${t}&d=${d}&tm=${ApiDigits}`
                            );
                        }
                
                        // --- שמירה סופית ---
                        if(action==="finish"){
                            await Ride.create({
                                type:t,
                                driver_phone:ApiPhone,
                                direction:d,
                                time:tm,
                                seats:ApiDigits
                            });
                            return res.send(`say=t-הפרסום נשמר בהצלחה&go_to=${BASE_URL}?action=main`);
                        }
                
                        // --- רשימות ---
                        if(action==="list"){
                            const listT = req.query.list_t;
                            const items = await Ride.find({type:listT}).sort({createdAt:-1}).limit(1);
                            if(items.length===0) return res.send(`say=t-אין כרגע פרסומים&go_to=${BASE_URL}?action=main`);
                            const item = items[0];
                            let msg = "t-פרסום נסיעה. .";
                            if(item.time) msg+=`t-בשעה ${item.time}. .`;
                            if(item.seats) msg+=`t-${item.seats} מקומות פנויים. .`;
                            msg+="t-לחיוג הקישו 0 לחזרה הקישו 2";
                            return res.send(`read=${msg}=digits,1,1,1,7,yes,no&action=list_opt&r_id=${item._id}`);
                        }
                        if(action==="list_opt"){
                            if(ApiDigits==="0"){
                                const ride = await Ride.findById(r_id);
                                if(ride) return res.send(`dial=${ride.driver_phone}`);
                            }
                            return res.send(`go_to=${BASE_URL}?action=main`);
                        }
                
                        // --- מחיקה ---
                        if(action==="del"){
                            const count = await Ride.countDocuments({driver_phone:ApiPhone});
                            if(count===0) return res.send(`say=t-אין לכם פרסומים פעילים&go_to=${BASE_URL}?action=main`);
                            return res.send(`read=t-נמצאו ${count} פרסומים למחיקה הקישו 7=digits,1,1,1,7,yes,no&action=del_ok`);
                        }
                        if(action==="del_ok" && ApiDigits==="7"){
                            await Ride.deleteMany({driver_phone:ApiPhone});
                            return res.send(`say=t-הפרסומים נמחקו&go_to=${BASE_URL}?action=main`);
                        }
                
                        return res.send(`go_to=${BASE_URL}?action=main`);
                
                    } catch(err){
                        console.log(err);
                        return res.send(`say=t-תקלה זמנית במערכת&goto_all_endpoints=exit`);
                    }
                });
                
                app.listen(port,()=>console.log("Server running on port", port));
                

                אני אמור לצחוק או לבכות?
                נראה לי צריך לתלות שלט ענק בכניסה לימות המשיח - "אסור להשתמש ב ai" .
                הדבר נאמר פה כבר עשרות פעמים,
                זה הכלל: בנושא מערכות ivr2 , ה ai מבין בערך כמו שאני מבין במתכונים ל "גלע"...

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

                  @יהודה-צ.-כ. אני עשיתי עם AI דברים מדהימים אם תרצה אשתף אותך באישי

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

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

                    @יהודה-צ.-כ. אני עשיתי עם AI דברים מדהימים אם תרצה אשתף אותך באישי

                    לא פקפקתי באופן כללי ביכולותיו של ה ai, תקרא שוב מה כתבתי.

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

                      @יהודה-צ.-כ. קח דוגמה שAI עשה לי
                      הנתונים מקבצי LogPlaybackPlayStop
                      תוכן הקבצים והשדרנים מטבלה שלי בגוגל שיטס שם אני כותב כל מספר הודעה מה התוכן
                      שם השלוחה מGetTextFile
                      אני מסכים איתך שהוא לא מכיר את הפונקציות ואני צריך לכתוב לו מה הנתונים שימות המשיח נותן לי ועם זה הוא משתמש, אי אפשר להסתמך עליו שיקח לבד נתונים מהפורום פה
                      2ec0d26e-fcc4-4175-9d01-fb99b56a3c07-image.png

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

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

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

                        ובקיצור:
                        ההתממשקות ב api, מכיוון שרובה בנויה על קוד, מאוד קל ליצור ממשק בעזרת ai,
                        משא"כ בניית המערכת עצמה בימות המשיח, שכל צד המשתמש (לקוח) שלה בנוי על קבצי הגדרות שאינם דברים ידועים אלא המציא אותם מר "ימות המשיח" בכבודו ובעצמו... ואם היה מתחשק לו, הוא גם היה משנה את הגדרת תפריט מזו: type=menu לזו: avatiach=matschik, או לכל פרמטר אחר... ודבר כזה כמובן שאין לדודה בינה @נר-יצחק"> איך לדעת...

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