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

AGI-Script im Background starten?

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von thorsten.gehrig, 8 Juli 2004.

  1. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo
    ich habe ein script dass ich bei jedem Anruf starten will (es zeit mir die Caller-ID im Display meines VDR).
    Leider wartet der Dialplan solange bis das script fertig ist. Ich will aber das Script im Hintergrund laufen lassen (quasi ./script.sh &).
    Kann mir jemand sagen wie ich das genau Aufrufen muss?

    exten => 464480,1,SetCallerID(0${CALLERIDNUM})
    exten => 464480,2,agi(/etc/asterisk/anruf.sh|${CALLERID})

    mit dem |${CALLERID} übergebe ich die Rufnummer...

    Gruß
    Thorsten
     
  2. fabe

    fabe Neuer User

    Registriert seit:
    13 Juli 2004
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    da du dazu scheinbar kein echtes agi script brauchst mach doch einfach System...

    also System(/etc/asterisk/anruf.sh ${CALLERID} &)
    damit legst du das programm in den hintergrund...
    allerdings wird das dann auch nicht beendet, wenn der anrufer auflegt!
    mach doch ansonsten 2 scripts... eins zum anzeigen und eins zum ausblenden, daß du onhangup aufrufst.
     
  3. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
  4. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    @Fabe: Danke - ich werde es heute abend probieren. Das Scipt blendet automatisch nur für einen fest definierten Zeitraum die Nummer ein... ein "ausblendescript" brauche ich daher nicht.

    @Rajo, genau daher habe ich meine Anregung. ABER: das Anzeigen von Nachrichten auf dem VDR über die genannte Methode dauert etwas (ca. 1-2 Sekunden).
    Genau diese 1-2 Sekunden klingelt das Telefon aber noch nicht (bzw. die paralell am NTBA angeschlossenen ISDN-Telefone klingeln schon...) - und das will ich verhindern.

    Durch die Lösung von Fabe hat sich mein Problem wohl erledigt...

    Gruß
    Thorsten
     
  5. Kermit23

    Kermit23 Neuer User

    Registriert seit:
    31 Okt. 2004
    Beiträge:
    116
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Beruf:
    IT-Systemelektroniker
    Ort:
    Köln
    Wie startet man ein AGI-Script denn nun im Hintergrund (unabhängig von der System() Lösung)?
    Im "CallerID mit AGI an VDR per Telnet übermitteln"-Thread wurde von System() wieder auf AGI umgeschwenkt. Mir ist aber nicht klar, warum das AGI nun nicht mehr im Vordergerund läuft, bzw. auf Rückgabe/Beendigung des Scripts wartet?
    Ich möchte auf meinem *-Server ein paar Beeps beim Eingehenden Anruf absetzten. Dummerweise wartet er die Beeps ab, bevor er auf meine Telefonanlage schaltet.
     
  6. laureen

    laureen Mitglied

    Registriert seit:
    17 Okt. 2004
    Beiträge:
    369
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    für diese zwecke ist AGI nicht geeignet, da ein AGI script über stdin/stdout mit der asterisk kommuniziert. verwendet doch "TrySystem" und startet ein script im hintergrund:
    Code:
    ...
    exten = _X.,1,TrySystem(/usr/local/bin/tuewas.sh ${CALLERID(num)} >/dev/null 2>&1 &)
    exten = _X.,n,Dial(SIP/tel10,60)
    ...
    dann läutet das telefon "tel10" nur sekundenbruchteile nach dem script-aufruf.

    das "&" am schluss befördert das script in den hintergrund und der dialplan wird sofort fortgesetzt.

    grüße,
    laureen