Variablenübergabe aus Bash Skript an * ohne AGI

tihmann

Neuer User
Mitglied seit
13 Apr 2007
Beiträge
36
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe das Problem, daß ich eine Variable aus einem Bash Skript an * ohne AGI übergeben möchte. Ich benutze * auf einer Fritzbox und da funktioniert AGI nicht. Wie bekomme ich dies hin ?

MfG

T. Ihmann
 
und was soll der Asterisk dann mit dieser Variablen machen :gruebel:
 
Zum besseren Verständnis: Ich würde gerne per Rückwärtssuche die Namen der Anrufer an die SIP Telefone übergeben.Dazu habe ich hier im Forum ein Skript gefunden. Es funktioniert auf Kommandozeilenebene auch so wie es soll. Nur leider hat der Asterisk auf FBF Probleme AGI auszuführen.

PHP:
#!/bin/sh

read agi_request
read agi_language
read agi_channel
read agi_type
read agi_uniqueid
read agi_callerid
read agi_dnid
read agi_rdnis
read agi_context
read agi_extension
read agi_priority
read agi_enhanced
read agi_accountcode
read emptyline


#pfad zum cachefile
CACHE="/var/spool/asterisk/inverssuche/invsuche_cache"

#pfad um das tempfile anzulegen

TMPFILE="/tmp/tmpsuche"
LOG="/var/log/asterisk/anrufliste_log"

rm $TMPFILE
if [ "$1" == "" ]; then
NAME="anonymer Anrufer"
DETAILS="Keine details"
else
NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/0049/0/"`

echo "Suche nach $NUMMER im cache"
NAME=`awk  -F '\t' '{ if ($1 == "'$NUMMER'") print $2 }' $CACHE`
DETAILS=`awk  -F '\t' '{ if ($1 == "'$NUMMER'") print $3 }' $CACHE`
echo "Name: $NAME"
echo "Details: $DETAILS"

if [ "$NAME" == "" ]; then
echo "Suche nach $NUMMER in www.dasoertliche.de"
wget -q -O $TMPFILE "http://www1.dasoertliche.de/?form_name=search_inv&ph=$NUMMER"
NAME=`grep 'class=\"entry\".*' $TMPFILE | sed -e s/^.*\"entry\"\>//g -e s/\<'\/'a\>.*//g`
DETAILS=`grep ';.*<br\/>' $TMPFILE  | sed -e s/\&nbsp\;/\ /g -e s/'\n'//g -e s/'\t'//g -e s/\<br.*//g`

if [ "$NAME" == "" ]; then
if grep "Kein Teilnehmer gefunden" $TMPFILE > /dev/null; then
NAME="$NUMMER"
DETAILS="Kein Eintrag $2"
fi;
fi;
if [ "$NAME" == "" ]; then
NAME="$NUMMER"
DETAILS="Fehler $2"
else
echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE
fi;
fi
fi
echo -e "`date +%e.%m\ %H:%M ` $NAME " >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
read in
echo "Name: $NAME"
echo "Details: $DETAILS"

Der Aufruf des Skripts aus Asterisk würde dann so erfolgen:

PHP:
chroot /oldroot /sbin/script.sh 012345-12345
 
Das geht bestimmt irgendwie direkt, auch wenn mir nun grade nicht einfällt, wie (ich mag AGI nicht)

Als workaround würde ich das Ergebnis einfach in eine Umgebungsvariable des Betriebssystems schreiben und diese vom Asterisk aus lesen.
 
wie wär's denn mit:

asterisk -rx "core set global FOO BAR"

?

Gruß
britzelfix
 
Zuletzt bearbeitet:
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.