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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. API לימות המשיח

API לימות המשיח

מתוזמן נעוץ נעול הועבר תכנות
31 פוסטים 4 כותבים 463 צפיות 5 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • י יוסף בן שמעון

    @MusiCode אמר בהבעיה היא לא הgoto:

    אמ:לק

    @MusiCode אמר בהבעיה היא לא הgoto:

    אמ:לק

    אני פתרתי את הסיפור של מערכת בימות המשיח.
    יש לי עכשיו קוד רציף, קל, זורם.
    https://www.npmjs.com/package/yemot-router

    אה, בנוד.
    לא בPHP...

    const express = require("express");
    const yemot_router = require("yemot-router");
     
    const port = 3000;
    const app = express();
    const y = yemot_router();
     
    y.add_fn(async (call) => {
     
        let massage = [{ type: "text", data: "היי, תקיש 10" }];
        let r = await call.read(massage);
     
        console.log(r);
     
        massage = [{ type: "text", data: "הקשת " + r + " תקיש 1 ונסיים סיפור" }];
        call.id_list_message(massage);
    });
     
    app.use("/", y);
     
    app.listen(port, () => {
        console.log("lisen in port", port);
    });
    

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

    שאפו על הקוד המושקע!
    אולי תעשה גם קבצי d.ts בשביל שעורך הקוד יכיר את הטיפוסים שלך, זה סטנדרט ב NPM
    ועוד משהו, המוסכמה של פונקציות ומשתנים בJS הם camelCase ולא קו תחתי מפריד, קו תחתון זה PHP...

    MusiCodeM מנותק
    MusiCodeM מנותק
    MusiCode
    כתב ב נערך לאחרונה על ידי
    #2

    @יוסף-בן-שמעון אמר בAPI לימות המשיח:

    שאפו על הקוד המושקע!

    תודה תודה!

    אולי תעשה גם קבצי d.ts בשביל שעורך הקוד יכיר את הטיפוסים שלך, זה סטנדרט ב NPM

    איך עושים?
    אני שברתי את הראש על זה!
    אפילו פתחתי כאן שרשור, אא"ט.

    י תגובה 1 תגובה אחרונה
    0
    • MusiCodeM מנותק
      MusiCodeM מנותק
      MusiCode
      כתב ב נערך לאחרונה על ידי MusiCode
      #3

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

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

      nigunN 2 תגובות תגובה אחרונה
      1
      • MusiCodeM MusiCode

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

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

        nigunN מנותק
        nigunN מנותק
        nigun
        כתב ב נערך לאחרונה על ידי
        #4

        @MusiCode
        אני לא מכיר את נוד, ולא משקיע בימות
        אז אין מה לבנות עלי כ"כ
        (אני חושב שעדיף כבר לבנות פלטפורמה נוחה לאסטריסק)

        מייל: nigun@duck.com

        תגובה 1 תגובה אחרונה
        0
        • MusiCodeM מנותק
          MusiCodeM מנותק
          MusiCode
          כתב ב נערך לאחרונה על ידי
          #5

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

          תגובה 1 תגובה אחרונה
          1
          • MusiCodeM MusiCode

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

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

            nigunN מנותק
            nigunN מנותק
            nigun
            כתב ב נערך לאחרונה על ידי
            #6

            @MusiCode אמר בAPI לימות המשיח:

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

            למה באמת אתה לא רואה סיבה לעזוב את ימות?

            מייל: nigun@duck.com

            MusiCodeM תגובה 1 תגובה אחרונה
            0
            • nigunN nigun

              @MusiCode אמר בAPI לימות המשיח:

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

              למה באמת אתה לא רואה סיבה לעזוב את ימות?

              MusiCodeM מנותק
              MusiCodeM מנותק
              MusiCode
              כתב ב נערך לאחרונה על ידי
              #7

              @nigun כי הם נותנים לי הכי הרבה.

              וההפנייה לSIP תקולה אצלם, כך שאי אפשר לבנות על הפנייה לIP.

              nigunN יעקב ישראלי 2 תגובות תגובה אחרונה
              0
              • MusiCodeM MusiCode

                @nigun כי הם נותנים לי הכי הרבה.

                וההפנייה לSIP תקולה אצלם, כך שאי אפשר לבנות על הפנייה לIP.

                nigunN מנותק
                nigunN מנותק
                nigun
                כתב ב נערך לאחרונה על ידי
                #8

                @MusiCode
                ז"א כי הם נותנים לך פלטפורמה מוכנה
                אז למה להמציא את הגלגל?

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

                מייל: nigun@duck.com

                תגובה 1 תגובה אחרונה
                1
                • MusiCodeM מנותק
                  MusiCodeM מנותק
                  MusiCode
                  כתב ב נערך לאחרונה על ידי
                  #9

                  @nigun אמר בAPI לימות המשיח:

                  @MusiCode
                  ז"א כי הם נותנים לך פלטפורמה מוכנה
                  אז למה להמציא את הגלגל?

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

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

                  nigunN תגובה 1 תגובה אחרונה
                  1
                  • MusiCodeM MusiCode

                    @nigun אמר בAPI לימות המשיח:

                    @MusiCode
                    ז"א כי הם נותנים לך פלטפורמה מוכנה
                    אז למה להמציא את הגלגל?

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

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

                    nigunN מנותק
                    nigunN מנותק
                    nigun
                    כתב ב נערך לאחרונה על ידי
                    #10

                    @MusiCode
                    אתה מתכוון דמי קישורית?
                    יש לך גם מחוץ לימות

                    מייל: nigun@duck.com

                    תגובה 1 תגובה אחרונה
                    0
                    • MusiCodeM מנותק
                      MusiCodeM מנותק
                      MusiCode
                      כתב ב נערך לאחרונה על ידי
                      #11

                      לא ידוע לי על מישהו שישלם לי, כמותם.

                      nigunN תגובה 1 תגובה אחרונה
                      0
                      • MusiCodeM MusiCode

                        לא ידוע לי על מישהו שישלם לי, כמותם.

                        nigunN מנותק
                        nigunN מנותק
                        nigun
                        כתב ב נערך לאחרונה על ידי
                        #12

                        @MusiCode
                        שאלת את @clickone ?

                        מייל: nigun@duck.com

                        תגובה 1 תגובה אחרונה
                        0
                        • MusiCodeM מנותק
                          MusiCodeM מנותק
                          MusiCode
                          כתב ב נערך לאחרונה על ידי
                          #13

                          כן...

                          מול מי אתה עובד?

                          nigunN תגובה 1 תגובה אחרונה
                          0
                          • MusiCodeM MusiCode

                            כן...

                            מול מי אתה עובד?

                            nigunN מנותק
                            nigunN מנותק
                            nigun
                            כתב ב נערך לאחרונה על ידי nigun
                            #14

                            @MusiCode
                            מול 015
                            אמנם עדיין לא קיבלתי שקל כי עדיין לא הגעתי למינימום הדקות שהם רוצים
                            אבל הם אמרו שהם ישלמו 0.5 אג,
                            החל מחצי מליון דקות.
                            (אבל זה לא באמת משנה לי כי אני מרוויח מהפיתוח ולא בונה על דקות)

                            מייל: nigun@duck.com

                            MusiCodeM תגובה 1 תגובה אחרונה
                            0
                            • nigunN nigun

                              @MusiCode
                              מול 015
                              אמנם עדיין לא קיבלתי שקל כי עדיין לא הגעתי למינימום הדקות שהם רוצים
                              אבל הם אמרו שהם ישלמו 0.5 אג,
                              החל מחצי מליון דקות.
                              (אבל זה לא באמת משנה לי כי אני מרוויח מהפיתוח ולא בונה על דקות)

                              MusiCodeM מנותק
                              MusiCodeM מנותק
                              MusiCode
                              כתב ב נערך לאחרונה על ידי MusiCode
                              #15

                              @nigun וואו.
                              זה יותר ממה שיש לי.

                              יאללה, עוברים?...

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

                              יש ממשק ניהול מסודר?

                              nigunN תגובה 1 תגובה אחרונה
                              0
                              • MusiCodeM MusiCode

                                @nigun וואו.
                                זה יותר ממה שיש לי.

                                יאללה, עוברים?...

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

                                יש ממשק ניהול מסודר?

                                nigunN מנותק
                                nigunN מנותק
                                nigun
                                כתב ב נערך לאחרונה על ידי nigun
                                #16

                                @MusiCode
                                😅 אני יודע שזה יותר מימות
                                אבל עד שאני לא מקבל את השקל הראשון אין מה לרוץ (זה לא בדיוק אני, אני יושב על מספרים של מישהו אחר
                                אני לבד לא מכניס כ"כ הרבה דקות).

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

                                ממשק מסודר לצערי אין
                                ולכן רציתי להקים שרת קמיליו שינתב את כל השיחות לשרתים הרלוונטים.
                                אבל התייאשתי ואני כנראה יעבור ל @clickone (כאמור לא מעניין אותי הקש"ג).
                                אבל נראה לי שיש עוד חברות שנותנות מחירים דומים חוץ מ015
                                סלקום אמרו שבאופן עקרוני הם מוכנים למשהו, אבל המו"מ לא התקדם בכ"כ
                                בעיקר כי לא מקבלים קש"ג על שיחות מלקחות סלקום
                                כנ"ל אפשר לנסות בעוד חברות.

                                מייל: nigun@duck.com

                                תגובה 1 תגובה אחרונה
                                1
                                • MusiCodeM MusiCode

                                  @יוסף-בן-שמעון אמר בAPI לימות המשיח:

                                  שאפו על הקוד המושקע!

                                  תודה תודה!

                                  אולי תעשה גם קבצי d.ts בשביל שעורך הקוד יכיר את הטיפוסים שלך, זה סטנדרט ב NPM

                                  איך עושים?
                                  אני שברתי את הראש על זה!
                                  אפילו פתחתי כאן שרשור, אא"ט.

                                  י מנותק
                                  י מנותק
                                  יוסף בן שמעון
                                  כתב ב נערך לאחרונה על ידי
                                  #17

                                  @MusiCode אמר בAPI לימות המשיח:

                                  איך עושים?

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

                                  
                                  const Call = require("./call");
                                  const Router = require("express").Router;
                                  const EventEmitter = require("this.events");
                                  
                                  class Call {
                                      read (massage) { }
                                      id_list_message (massage) { }
                                  }
                                  class Yemot_Router extends Router {
                                      constructor() {
                                          super()
                                          this.events = new EventEmitter();
                                          this.this.active_calls = {};
                                      }
                                  
                                      /**
                                       *
                                       * @param {string} path
                                       * @param {Call} fn
                                       */
                                      addFn (path, fn) {
                                  
                                  
                                          this.all(path, (req, res, next) => {
                                  
                                              req.query = check_query(req.query);
                                  
                                              const call_id = req.query.ApiCallId;
                                  
                                              const [current_call, is_new_req] = this.get_current_call(call_id);
                                  
                                              current_call.get_req_vals(req, res, next);
                                  
                                              if (is_new_req) {
                                  
                                                  fn(current_call).then((r) => {
                                  
                                                      delete this.this.active_calls[call_id];
                                                      console.log(call_id, "deleted", r);
                                                  });
                                  
                                              } else {
                                                  this.events.emit(call_id);
                                              }
                                          });
                                      };
                                  
                                      get_current_call (call_id) {
                                  
                                          let current_call = this.active_calls[call_id];
                                          let is_new_req = false;
                                  
                                          if (!current_call) {
                                              current_call = this.active_calls[call_id] = new Call(call_id, this.events);
                                  
                                              is_new_req = true;
                                              console.log(call_id + " is new");
                                          }
                                  
                                          return [current_call, is_new_req];
                                      };
                                  
                                      const check_query = function check_query (query) {
                                  
                                          if (typeof query == "object") {
                                              let iterator;
                                  
                                              for (const key of Object.keys(query)) {
                                  
                                                  iterator = query[key];
                                  
                                                  if (typeof iterator === "object") {
                                  
                                                      query[key] = iterator[(iterator.length - 1)];
                                                  }
                                              }
                                          }
                                  
                                          return query;
                                      };
                                  
                                  };
                                  
                                  module.exports = () => new Yemot_Router()
                                  
                                  
                                  י תגובה 1 תגובה אחרונה
                                  1
                                  • י יוסף בן שמעון

                                    @MusiCode אמר בAPI לימות המשיח:

                                    איך עושים?

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

                                    
                                    const Call = require("./call");
                                    const Router = require("express").Router;
                                    const EventEmitter = require("this.events");
                                    
                                    class Call {
                                        read (massage) { }
                                        id_list_message (massage) { }
                                    }
                                    class Yemot_Router extends Router {
                                        constructor() {
                                            super()
                                            this.events = new EventEmitter();
                                            this.this.active_calls = {};
                                        }
                                    
                                        /**
                                         *
                                         * @param {string} path
                                         * @param {Call} fn
                                         */
                                        addFn (path, fn) {
                                    
                                    
                                            this.all(path, (req, res, next) => {
                                    
                                                req.query = check_query(req.query);
                                    
                                                const call_id = req.query.ApiCallId;
                                    
                                                const [current_call, is_new_req] = this.get_current_call(call_id);
                                    
                                                current_call.get_req_vals(req, res, next);
                                    
                                                if (is_new_req) {
                                    
                                                    fn(current_call).then((r) => {
                                    
                                                        delete this.this.active_calls[call_id];
                                                        console.log(call_id, "deleted", r);
                                                    });
                                    
                                                } else {
                                                    this.events.emit(call_id);
                                                }
                                            });
                                        };
                                    
                                        get_current_call (call_id) {
                                    
                                            let current_call = this.active_calls[call_id];
                                            let is_new_req = false;
                                    
                                            if (!current_call) {
                                                current_call = this.active_calls[call_id] = new Call(call_id, this.events);
                                    
                                                is_new_req = true;
                                                console.log(call_id + " is new");
                                            }
                                    
                                            return [current_call, is_new_req];
                                        };
                                    
                                        const check_query = function check_query (query) {
                                    
                                            if (typeof query == "object") {
                                                let iterator;
                                    
                                                for (const key of Object.keys(query)) {
                                    
                                                    iterator = query[key];
                                    
                                                    if (typeof iterator === "object") {
                                    
                                                        query[key] = iterator[(iterator.length - 1)];
                                                    }
                                                }
                                            }
                                    
                                            return query;
                                        };
                                    
                                    };
                                    
                                    module.exports = () => new Yemot_Router()
                                    
                                    
                                    י מנותק
                                    י מנותק
                                    יוסף בן שמעון
                                    כתב ב נערך לאחרונה על ידי יוסף בן שמעון
                                    #18

                                    בשביל תיעוד מלא, תעשה קובץ בשם yemot_router.d.ts, וב require אל תציין סיומת קובץ צור קובץ בשם index.d.ts ותמקם אותו בתיקית השורש

                                    declare function Yemot(): YemotRouter;
                                    interface YemotRouter {
                                        addFn?(path: string, handler: Handler): void;
                                    }
                                    interface Call {
                                        read(massage: string): Promise<string>
                                    }
                                    type Handler = (p: Call) => void;
                                    
                                    export = Yemot;
                                    
                                    
                                    MusiCodeM תגובה 1 תגובה אחרונה
                                    4
                                    • י יוסף בן שמעון

                                      בשביל תיעוד מלא, תעשה קובץ בשם yemot_router.d.ts, וב require אל תציין סיומת קובץ צור קובץ בשם index.d.ts ותמקם אותו בתיקית השורש

                                      declare function Yemot(): YemotRouter;
                                      interface YemotRouter {
                                          addFn?(path: string, handler: Handler): void;
                                      }
                                      interface Call {
                                          read(massage: string): Promise<string>
                                      }
                                      type Handler = (p: Call) => void;
                                      
                                      export = Yemot;
                                      
                                      
                                      MusiCodeM מנותק
                                      MusiCodeM מנותק
                                      MusiCode
                                      כתב ב נערך לאחרונה על ידי
                                      #19

                                      @יוסף-בן-שמעון אמר בAPI לימות המשיח:

                                      בשביל תיעוד מלא, תעשה קובץ בשם yemot_router.d.ts, וב require אל תציין סיומת קובץ צור קובץ בשם index.d.ts ותמקם אותו בתיקית השורש

                                      declare function Yemot(): YemotRouter;
                                      interface YemotRouter {
                                          addFn?(path: string, handler: Handler): void;
                                      }
                                      interface Call {
                                          read(massage: string): Promise<string>
                                      }
                                      type Handler = (p: Call) => void;
                                      
                                      export = Yemot;
                                      
                                      

                                      תודה רבה!

                                      בוצע.

                                      תגובה 1 תגובה אחרונה
                                      1
                                      • MusiCodeM MusiCode

                                        @nigun כי הם נותנים לי הכי הרבה.

                                        וההפנייה לSIP תקולה אצלם, כך שאי אפשר לבנות על הפנייה לIP.

                                        יעקב ישראלי מנותק
                                        יעקב ישראלי מנותק
                                        יעקב ישראל
                                        כתב ב נערך לאחרונה על ידי
                                        #20

                                        @MusiCode לא מבין איפה הבעיה שולחים לשירות לקוחות את כתובת הIP והם פותחים לך זה כולה עניין של אבטחה

                                        nigunN תגובה 1 תגובה אחרונה
                                        0
                                        • יעקב ישראלי יעקב ישראל

                                          @MusiCode לא מבין איפה הבעיה שולחים לשירות לקוחות את כתובת הIP והם פותחים לך זה כולה עניין של אבטחה

                                          nigunN מנותק
                                          nigunN מנותק
                                          nigun
                                          כתב ב נערך לאחרונה על ידי
                                          #21

                                          @יעקב-ישראל
                                          השיחה לא מחזיקה יותר מחצי שעה

                                          מייל: nigun@duck.com

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


                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

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