Asterisk auf FBF Rückwärtssuche

tihmann

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

hier im Forum gibt es ja eine Rückwärtssuche für Asterisk in dasoertliche.de: http://www.ip-phone-forum.de/showthread.php?t=164211.
Hat jemand so eine Rückwärtssuche mit Asterisk auf FBF am Laufen. Oben genanntes Skript läuft so nicht auf der FBF, wahrscheinlich liegt es an der Bash Implementierung.

Vielen Dank.

Liebe Grüße,

T. Ihmann
 
Probier mal das

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="/var/media/ftp/CoolDriveB-Partition-0-1/tmp/invsuche.conf"

#pfad um das tempfile anzulegen

TMPFILE="/var/media/ftp/CoolDriveB-Partition-0-1/tmp/tmpsuche"
LOG="/var/media/ftp/CoolDriveB-Partition-0-1/tmp/anrufliste"

rm $TMPFILE
if [ "$1" == "" ]; then
NAME="anonym"
#DETAILS="Keine details"
else
NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/+49/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 -e s/^.*\>//g`
#DETAILS=`grep ';.*<br\/>' $TMPFILE  | sed  -e s/'   '//g -e s/\&nbsp\;/\ /g -e s/'\n'//g -e s/'\t'//g -e s/'<br\/>'//  `
if [ "$NAME" == "" ]; then
if grep "Kein Teilnehmer gefunden" $TMPFILE > /var/media/ftp/CoolDriveB-Partition-0-1/tmp/null; then
NAME="$NUMMER"
#DETAILS="Kein Eintrag $2"
fi;
fi;
if [ "$NAME" == "" ]; then
NAME="$NUMMER"
#DETAILS="Fehler $2"
else
echo -e "$NUMMER\t$NAME" >> $CACHE
fi;
fi
fi
echo -e "`date +%e.%m\ %H:%M ` $NAME" >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" 
echo "Name: $NAME"
#echo "Details: $DETAILS"

Pfad zum Stick musst Du noch anpassen.
Das Script gibt den Namen zurück.
Leider hats bei mir nicht funktioniert mit dem CACHE- Schreiben deshalb gehen meine Namen in die Datenbank.

extensions.conf
Code:
;Capi-in
exten => 50008/_XX.,1,Ringing()
exten => 50008/_XX.,n,Set(GLOBAL(DBNUMMER)=${CALLERID(num)})
exten => 50008/_XX.,n,GotoIf(${DB_EXISTS(telefon${DBNUMMER})}?database,s,1)
exten => 50008/_XX.,n,AGI(klick50008.agi,${CALLERID(num)})
exten => 50008/_XX.,n,SetCallerPres(allowed)
exten => 50008/_XX.,n,Set(CALLERID(name)=${LONGNAME})
exten => 50008/_XX.,n,Set(DB(telefon/${DBNUMMER})=${LONGNAME})
exten => 50008/_XX.,n,Dial,SIP/205|40|Ttm

[database]
exten => s,1,SetCallerPres(allowed)
exten => s,n,Set(GLOBAL(DBNAME)=${DB(telefon/${DBNUMMER})})
exten => s,n,Set(CALLERID(name)=${DBNAME})
exten => s,n,Set(CALLERID(num)=${DBNUMMER})
exten => s,n,system(echo "${DATETIME} - ${DBNAME}" >> /var/media/ftp//CoolDriveB-Partition-0-1/tmp/anrufliste) 
exten => s,n,Dial,SIP/205|60|Ttr
exten => s,n,Macro(anke)

[macro-anke]
exten => s,1,NoOp(Wir sind im Macro ruf gelandet)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-BUSY,1,Playtones(busy)
exten => s-BUSY,n,Hangup
exten => s-NOANSWER,1,Dial,CAPI/ISDN1/XXXXXXXXXXXXX|40|Ttm
exten => s-NOANSWER,n,Hangup
exten => s-CHANUNAVAIL,1,Dial,CAPI/ISDN1/XXXXXXXXXX|40|Ttm
exten => s-CHANUNAVAIL,n,Hangup
exten => s-CONGESTION,1,Dial,CAPI/ISDN1/XXXXXXXXXXXXX|40|Ttm
exten => s-CONGESTION,n,Hangup
 
Leider hats bei mir nicht funktioniert mit dem CACHE- Schreiben deshalb gehen meine Namen in die Datenbank.
Was genau hat denn nicht funktioniert ?

Gruß
dynamic
 
Der $awk Befehl zum auslesen war nicht da.
Hab dann eine andre busybox genommen und trotz dem liest er nicht aus der datei, obwohl alles richtig drin steht. ????
Hab es dann aufgegeben und das mit der datenbank geschrieben. Das funktioniert jedenfalls.

Code:
#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"

Findest Du da einen Fehler? Habs aus dem dasörtliche script übernommen.
 
Findest Du da einen Fehler? Habs aus dem dasörtliche script übernommen.
Wo wird denn die Variable "$awk" gesetzt und auf welchen Inhalt ?
In Deinem Script wird diese Variable, die auf das zu nutzende "awk-Binary" zeigen soll, nicht definiert.

Gruß
dynamic
 
Zuletzt bearbeitet:
Code:
awk="/bin/busybox awk"

so hatte ich die variable gesetzt. Habs irgendwann mal gelöscht weil es einfach nicht gehen wollte.
 
So hättes es eigentlich funktionieren müssen ... für eine Ursachenanalyse müsste man jedoch die Fehlermeldungen usw. sehen.

DU scheinst ja einen Workaround zu haben und daher stellt das kein Problem mehr dar und daher keine weitere Analyse erforderlich ;)
 
Könnte mir vielleicht jemand erklären, wie man auch noch klicktel abfragen könnte?
Leider liefert das örtliche nicht immer einen treffer. Über die HP von klicktel ist die trefferquote deutlich höher. Scheint aktueller zu sein.

Danke im Voraus.
 
Hier nochmal ein überarbeitetes Script für die Rückwärtssuche.
Das Script sucht erst im Telefonbuch nach der passenden Nummer. Findet es die Nummer nicht, sucht es im Oertlichen.
Das Problem war bei mir nun aber, dass Anlagenanschlüsse vom Oertlichen nicht aufgelöst werden können, sprich die Nummer ist zu lang und man erhält keinen Eintrag.

Hier kommt klicktel zum Einsatz. Klicktel kürzt automatisch die Nummer und man bekommt zu 90 % den passenden Eintrag.
Wenn jedoch gar kein Eintrag zur Nummer existiert, listet Klicktel ähnliche Nummern auf und man bekommt zu viel Einträge angezeigt. Deshalb habe ich nochmal gefiltert und bekomme nur Einträge mit "1 Teilnehmer".
Blacklist ist auch mit eingebaut um ungebetene Gäste abzuwimmeln. Die bekommen dann eine Ansage von der Rechtsabteilung.
Code:
#!/bin/sh
awk="/bin/busybox awk"
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/media/ftp/MassStorageDevice-Partition-0-5/tel/telefonbuch.txt"
EXTEN="$2"
CODE="$3"
BLACK="/var/media/ftp/MassStorageDevice-Partition-0-5/tel/black.txt"
TMPFILE="/var/media/ftp/MassStorageDevice-Partition-0-5/tel/tmpsuche"
TMPFILE1="/var/media/ftp/MassStorageDevice-Partition-0-5/tel/tmpsuche1"
TMPFILE2="/var/media/ftp/MassStorageDevice-Partition-0-5/tel/tmpsuche2"
TMPFILE3="/var/media/ftp/MassStorageDevice-Partition-0-5/tel/tmpsuche3"
LOG="/var/media/ftp/MassStorageDevice-Partition-0-5/tel/anrufliste.txt"
TITEL="span class="\"title\"
EINS="1"
NULL="/var/media/ftp/MassStorageDevice-Partition-0-5/tel/null"

######################################_IM_CACHE_SUCHEN_####################################################################
rm $TMPFILE
NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/+49/0/"`
echo "Nummer: $NUMMER"

if grep "$NUMMER" $CACHE > $NULL; then
	DATENSATZ="`grep ${NUMMER} ${CACHE}`"
	NAME="${DATENSATZ%;*}"
	echo "Name: $NAME"
######################################_IM_OERTLICHEN_SUCHEN_###############################################################
else
	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 -e s/^.*\>//g`
	echo "WEB-Name: $NAME"
fi;
######################################_IM_KLICKTEL_SUCHEN_#################################################################
if echo $1 | grep '^01';then

	echo "Das ist ein Handy"
        
else
	if [ "$NAME" == "" ]; then
	echo "Suche nach $NUMMER in www.klicktel.de"
	wget -q -O $TMPFILE "http://www.klicktel.de/inverssuche/backwardssearch.html?newSearch=1&boxtype=backwards&sid=270asss9s9u1m4l7bfvhc3tbb6&vollstaendig=$NUMMER"
	# Adresse Zeile herausfiltern und in Datei speichern
    	#durch Verkürzung
		if grep -i "1 Treffer" $TMPFILE > $NULL;then
		echo "EIN TREFFER!"	
		grep  $TMPFILE -e "$TITEL" >$TMPFILE1
		rm $TMPFILE
   		tr -d ' ' < $TMPFILE1 > $TMPFILE
                #Umwandlung von html in text
		NAME="`sed -e 's/<[^>]*>//g' $TMPFILE`" 
		echo "WEB2-Name: $NAME"
		else
		echo "FEHLER"
		fi;	
	fi;
fi;	
#########################################_BLACKLIST_#######################################################################
if [ "$NAME" == "" ]; then
		NAME="KEIN_EINTRAG"
		echo "KTG: $NAME"
else
	if grep -i "Personalleasing\|Personalvermittlung\|Zeitarbeit\|Wirtschaftsauskunft" $TMPFILE > $NULL;then
	echo 'DATABASE PUT blacklist '"$NUMMER \"$EINS\""  
	echo -e "$NAME;$NUMMER" >>$BLACK
	echo "UNTERBINDEN"
	fi;
fi;
#########################################_NEU_NUMMER_INS_BUCH_#############################################################
if grep "$NUMMER" $CACHE > $NULL; then
	echo "Bereits vorhanden"
	else
	echo -e "$NAME;$NUMMER" >>$CACHE
fi;
#########################################_VARIABLE_SETZEN_#################################################################
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" 
echo -e "`date +%e.%m\ %H:%M ` $NAME-$NUMMER-an-$EXTEN-$CODE" >>$LOG

Das Macro für blacklist:
Code:
[macro-blacklist]
exten => s,1,GotoIf(${DB_EXISTS(blacklist/${ARG1})}?black)
exten => s,10(black),NoOp(Nummer ${ARG1} ist auf der Blacklist)
exten => s,n,Playback(spam2)
exten => s,n,Busy(5)
exten => s,n,Hangup()
 

Anhänge

  • spam2.zip
    122.8 KB · Aufrufe: 28

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,300
Beiträge
2,249,713
Mitglieder
373,904
Neuestes Mitglied
Elemir
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.