Ich habe jetzt das da gebastelt:
Code:
#!/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="/etc/asterisk/invsuche_cache.conf"
#pfad um das tempfile anzulegen
TMPFILE="/tmp/tmpsuche"
LOG="/var/log/asterisk/anrufliste_log"
if [ $1 == anonym ]; then
NUMMER= $1
NAME="ohne Nummer"
else
NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/+41/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.tel.search.ch"
lynx "http://tel.search.ch/result.html?name=&misc=&strasse=&ort=&kanton=&tel=$NUMMER" \
-dump -nolist -connect_timeout=3> $TMPFILE
if grep "Suche verfeinern" $TMPFILE
then
NAME=`grep [tel.search.ch] -A 12 $TMPFILE | sed "/^$/d" | awk '{ if (FNR == 10) print $0 }' | sed -e "s/ //"`
DETAILS=`grep [tel.search.ch] -A 12 $TMPFILE | sed "/^$/d" | awk '{ if (FNR == 11) print $0 }' | sed -e "s/\// /"`
if [ "$NAME" == "" ]; then
NAME="$NUMMER"
DETAILS="Fehler $2"
else
echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE
fi;
else
NAME="$NUMMER"
DETAILS="Kein Eintrag $2"
fi;
fi
fi
rm -f /tmp/tmpsuche
echo -e "`date +%e.%m\ %H:%M ` $NAME $DETAILS" >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME $DETAILS" >/dev/stdout
read in
exit 0
Und das scheint zu funktionieren.
Da mein (Siemens)-Telefon beim anonym telefonieren "00None" überträgt, bzw. das in der Asterisk-Konsole angezeigt wird, habe ich beim Wählplan noch hinzugefügt, dass er bei eben diesem Vorkommen "anonym" als Nummer weitergeben soll. Darum taucht das auch hier
Code:
if [ $1 == anonym ]; then
NUMMER= $1
NAME="ohne Nummer"
else
auf. Vielleicht ist das ein Spezialfall oder es gibt eine elegantere Lösung; habe einfach auf die Schnelle nichts Besseres gefunden.