HELP bei programierung extension.conf und AGI

korny75

Neuer User
Mitglied seit
1 Jun 2005
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
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
 
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
MARKT= "HIER SOLLTE DIE VARIABLE AUS ASTERISK ${DTMF_MARKT} stehen"
die Variable MARKT auf den folgenden Text setzt.
Meiner Meinung nach sollte das
MARKT=$1
AUFTRAG=$2
lauten.
 
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
 
Rückgabe geht evtl. mit

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

mfg jens
 
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
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,840
Beiträge
2,219,266
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.