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

HELP bei programierung extension.conf und AGI

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von korny75, 23 Nov. 2005.

  1. korny75

    korny75 Neuer User

    Registriert seit:
    1 Juni 2005
    Beiträge:
    5
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    IT ADMIN
    Ort:
    Herzen Bayerns
    hallo forum:

    ich möchte meinem AGI script aus der extension.conf 2 variablen übergeben

    extension.conf

    Code:
    [default]
    exten => 300,1,Goto(mainmenu,s,1)
    
    [mainmenu]
    
    exten => s,1,BackGround(VR_GutenTag)
    exten => s,2,Goto(submenu_markt,s,1)
    
    [submenu_markt]
    
    exten => s,1,BackGround(VR_marktnummer_eingabe)
    exten => _XXX,1,SayAlpha(${EXTEN})
    exten => _XXX,2,System(echo Marktnummer:M${EXTEN} >> /tmp/nummer.txt)
    exten => _XXX,3,SetVar(DTMF_MARKT=M${EXTEN})
    exten => _XXX,4,Goto(submenu_auftrag,s,1)
    
    
    [submenu_auftrag]
    
    exten => s,1,BackGround(VR_Auftrag_Eingabe)
    exten => _ZXXXXX,1,BackGround(VR_Nummer_lautet)
    exten => _ZXXXXX,2,SayAlpha(${EXTEN})
    exten => _ZXXXXX,3,System(echo Auftragsnummer:${EXTEN} >> /tmp/nummer.txt)
    exten => _ZXXXXX,4,SetVar(DTMF_AUFTRAG=${EXTEN})
    exten => _ZXXXXX,5,Goto(submenu_korrekt,s,1)
    
    
    [submenu_korrekt]
    exten => s,1,BackGround(VR_Eingabe_korrekt_1_9)
    exten => 1,1,Goto(submenu_auftragssuche,s,1)
    exten => 9,1,Goto(mainmenu,s,1)
    exten => 8,1,Goto(submenu_test,s,1)
    
    [submenu_auftragssuche]
    exten => s,1,BackGround(VR_Auftrag_wird_gesucht)
    exten => s,2,AGI(auftragssuche.agi)
    exten => s,3,Goto(submenu_markt,s,1)
    exten => s,4,Hangup()
    
    
    

    agiscript: auftragssuche.agi

    Code:
    
    #!/bin/bash
    #
    #
    # =============================================================================
    # KONFIGURATION AN LOKALE BEGEBENHEITEN ANPASSEN
    # =============================================================================
    
    #
    #
    basedir=/usr/share/asterisk             # Verzeichnis zu *-"Zutaten"
    agidir=$basedir/agi-bin                 # AGI-Verzeichnis
    
    workdir=/home/asterisk                          # FÃr tests und zum "debugen"
    
    database=$workdir/einfachesfile.txt
    
    # UebergabeVariablen
    MARKT= "HIER SOLLTE DIE VARIABLE AUS ASTERISK ${DTMF_MARKT} stehen"
    AUFTRAG="HIER SOLLTE DIE VARIABLE AUS ASTERISK ${DTMF_AUFTRAG} stehen"
    #
    #
    STATUS=`grep $MARKT $database | grep $AUFTRAG |cut -d: -f4`
    #
    ===========================================================================
    # ab hier folgt der code:
    # ===========================================================================
    
    echo "der eingegeben markt lautet:"$MARKT"\n" >> /tmp/test.txt
    echo "die eingegeben autragsnummer lautet:"$AUFTRAG"\n" >> /tmp/test.txt
    echo "der Status des Auftrages betraegt:"$STATUS"\n" >> /tmp/test.txt
    
    

    wenn ich das agiscript manuell auf der shell aufrufe mit ./auftragssuche.agi XXX XXXXXX funktioniert es .

    wenn ich das aber über asterisk aufrufe:
    z.B.
    Code:
    [submenu_auftragssuche]
    exten => s,1,BackGround(VR_Auftrag_wird_gesucht)
    exten => s,2,AGI(auftragssuche.agi ${DTMF_MARKT} ${DTMF_AUFTRAG})
    exten => s,3,Goto(submenu_markt,s,1)
    
    
    wird nichtś in das ausgabefile geschrieben:
    auszug aus der CLI

    Code:
    -- Playing 'VR_Auftrag_wird_gesucht' (language 'de')
        -- Executing AGI("SIP/xlite1-dee1", "auftragssuche.agi M011 123456") in new stack
        -- Launched AGI Script /usr/share/asterisk/agi-bin/auftragssuche.agi M011 123456
    AGI Tx >> agi_request: auftragssuche.agi M011 123456
    AGI Tx >> agi_channel: SIP/xlite1-dee1
    AGI Tx >> agi_language: de
    AGI Tx >> agi_type: SIP
    AGI Tx >> agi_uniqueid: asterisk-30580-1132750538.30
    AGI Tx >> agi_callerid: "xlite1" <xlite1>
    AGI Tx >> agi_dnid: 300
    AGI Tx >> agi_rdnis: unknown
    AGI Tx >> agi_context: submenu_auftragssuche
    AGI Tx >> agi_extension: s
    AGI Tx >> agi_priority: 2
    AGI Tx >> agi_enhanced: 0.0
    AGI Tx >> agi_accountcode:
    AGI Tx >>
        -- AGI Script auftragssuche.agi M011 123456 completed, returning 0
        -- Executing Goto("SIP/xlite1-dee1", "submenu_markt|s|1") in new stack
        -- Goto (submenu_markt,s,1)
        -- Executing BackGround("SIP/xlite1-dee1", "VR_marktnummer_eingabe") in new stack                                                     
    
    
    
    muss ich die variablen vielleicht anders übergeben????

    vielleicht kann mir jemand dabei helfen.

    danke schon mal im voraus.

    korny
     
  2. rbaer

    rbaer Mitglied

    Registriert seit:
    7 Okt. 2004
    Beiträge:
    280
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    München
    Wenn ich mich recht erinnere musst du die Argumente durch | trennen
    also: exten => s,2,AGI(auftragssuche.agi|${DTMF_MARKT} ${DTMF_AUFTRAG})

    Wie das jedoch in deinem shell script funktionieren soll ist mir schleierhaft da du ja mit
    die Variable MARKT auf den folgenden Text setzt.
    Meiner Meinung nach sollte das
    MARKT=$1
    AUFTRAG=$2
    lauten.
     
  3. korny75

    korny75 Neuer User

    Registriert seit:
    1 Juni 2005
    Beiträge:
    5
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    IT ADMIN
    Ort:
    Herzen Bayerns
    danke für die schnelle hilfe :D

    hier die nun richtige passage:

    exten => s,2,AGI(auftragssuche.agi|${DTMF_MARKT}|${DTMF_AUFTRAG})
    die variablen müssen auch mit | getrennt werden, sonst wird es als eine variable gesehen.


    zu dem agi script :
    ich habe in meinem original schon mit $1 und $2 die eingabe abgegriffen.
    der text sollte eigentlich zu verstehen sein.
    anscheinend habe ich da zur verwirrung beigetragen.

    so jetzt mach ich mich weiter an den rückgabewert => sollte ja ne abfrage werden um dem anrufer den status per sprache zu übermitten.
    und nicht lokal auf ein textfile zu schreiben :)

    nochmals herzlichen dank.

    korny
     
  4. jensx

    jensx Neuer User

    Registriert seit:
    20 Okt. 2004
    Beiträge:
    124
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Dresden
    Rückgabe geht evtl. mit

    echo "SET VARIABLE TEST \"Inhalt \"\n"

    mfg jens
     
  5. vschellin

    vschellin Neuer User

    Registriert seit:
    10 Juni 2004
    Beiträge:
    30
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Braunschweig
    Rückgabe der Werte realisiert?

    Hallo korny,

    hast Du die Rückgabe der Werte an den den laufenden "asterisk-Prozess" mittlerweile realisiert.

    Das Ergebnis würde mich interessieren. Ich habe das ähnliche Problem, dass ich auf einfach Art und Weise Daten austauschen möchte.

    Danke und Gruß

    Volker