.titleBar { margin-bottom: 5px!important; }

Paralleles verarbeiten von gosub sektionen ?

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von lynckmeister, 23 Jan. 2007.

  1. lynckmeister

    lynckmeister Neuer User

    Registriert seit:
    4 Apr. 2006
    Beiträge:
    140
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Forum ,

    ich folgendes Problem :

    bei einem Anruf sollen zwei dinge gleichzeitig passieren.
    1. erstens es soll sofort ein sip telefon angerufen werden
    2. es soll gewartet werden n sekunden und dann soll ein anderes telefon angerufen werden.

    der befehl dial nimmt zwei nummern an , aber die werden logischer weise immer gleichzeitig angerufen.
    wenn ich also in einem gosub zb mehrere subs angeben koennte oder in einer zeile zwei gosubs ( was ich nirgends gesehn habe und deshalb auch keinen syntax dafuer kenne) wäre mein problem gelöst. während das eine gosub direkt einen dial macht, hat das andere ein wait n vor dem dial.

    vielleicht gibt es aber auch einen ganz anderen ansatz ?


    grüße

    filip
     
  2. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    Hallo lynckmeister,

    so richtig verstehe ich dein Problem nicht.
    Du willst erst ein Telefon anrufen und nach n sekunden ein anderes?

    Code:
    exten => 0815,1,Dial(SIP/phone1,n)
    exten => 0815,2,Dial(SIP/phone2)
    
     
  3. lynckmeister

    lynckmeister Neuer User

    Registriert seit:
    4 Apr. 2006
    Beiträge:
    140
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    äh nein , ich will zeitverzögert anrufen. zum schluß sollen beide telefone klingeln. das eine soll aber zuerst klingeln.
    in deinem beispiel wird erst das eine angerufen , und wenn die n sekunden rum sind das andere... das erste soll aber weiter angerufen werden....
     
  4. Pirat

    Pirat Neuer User

    Registriert seit:
    25 Aug. 2004
    Beiträge:
    163
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Code:
    exten => 0815,1,Dial(SIP/phone1,n)
    exten => 0815,2,Dial(SIP/phone1&SIP/phone2)
    
     
  5. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    Was auch noch gehen würde aber nicht die schönste Lösung ist:

    Code:
    exten => 0815,1,Dial(SIP/phone1&Local/phone2@phones,n)
    
    [phones]
    
    exten => phone2,1,noop()
    exten => phone2,n,wait(n)
    exten => phone2,n,dial(SIP/phone2)
    
     
  6. lynckmeister

    lynckmeister Neuer User

    Registriert seit:
    4 Apr. 2006
    Beiträge:
    140
    Zustimmungen:
    0
    Punkte für Erfolge:
    0


    ja genauso habe ich's führt aber dazu , dass nach n sekunden der call zum sip phone neu aufgebaut wird und es kommt leider viel häufiger vor als man denkt, dass man genau in dem moment abhebt. der linksys reagiert dann so drauf, dass er den in dem moment neu ankommenden call ignoriert, damit ist das gespraech garnicht mehr erreichbar !
     
  7. lynckmeister

    lynckmeister Neuer User

    Registriert seit:
    4 Apr. 2006
    Beiträge:
    140
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    ah das sieht interessant aus, mit local wird also die prioreihe fuer phone2 angestossen ? das muss ich gleich mal testen ...
    danke !
     
  8. lynckmeister

    lynckmeister Neuer User

    Registriert seit:
    4 Apr. 2006
    Beiträge:
    140
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    also du hast recht, so gehts.... wieso ist das eine "nicht schöne " lösung? wie wäre es denn schöner?

    gruesse

    filip
     
  9. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    Nicht schön ist es weil man es nicht gut verallgemeinern kann.
    Was machst du nun wenn es für 15 phones oder mehr gelten soll?
    Das macht Deinen dialplan sehr unübersichtlich und unstrukturiert.
     
  10. thunder

    thunder Neuer User

    Registriert seit:
    10 Sep. 2005
    Beiträge:
    27
    Zustimmungen:
    0
    Punkte für Erfolge:
    1
    wie wäre es denn damit:
    ...
    exten => 0815,1,Dial(SIP/1&Local/2@delay-5-sec)
    ...

    [delay-5-sec]
    ...
    exten => 2,1,Wait(5)
    exten => 2,2,Dial(SIP/2)
    ...
     
  11. chaos2000

    chaos2000 Aktives Mitglied

    Registriert seit:
    22 Aug. 2004
    Beiträge:
    2,028
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    LE
    ja, und ....?

    gleiches steht auch oben!?
    Das Problem besteht darin das du nicht die Wartezeit und/oder die Phone(s) dynamisch ändern kannst.

    für die die Waittime würde es noch diese Lösung geben:


    Code:
    exten => 0815,1,Dial(SIP/1&Local/15@paralleldelay)
    
    [paralleldelay]
    
    exten => _X.,1,noOp()
    exten => _X.,n,Wait(${EXTEN})
    exten => _X.,n,Dial(SIP/phone2)