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

Asterisk auf FBF Rückwärtssuche

Dieses Thema im Forum "Asterisk auf FBF" wurde erstellt von tihmann, 26 Okt. 2008.

  1. tihmann

    tihmann Neuer User

    Registriert seit:
    13 Apr. 2007
    Beiträge:
    36
    Zustimmungen:
    0
    Punkte für Erfolge:
    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
     
  2. SR166

    SR166 Neuer User

    Registriert seit:
    11 Apr. 2007
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
    
     
  3. dynamic

    dynamic Aktives Mitglied

    Registriert seit:
    1 Apr. 2006
    Beiträge:
    1,154
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Was genau hat denn nicht funktioniert ?

    Gruß
    dynamic
     
  4. SR166

    SR166 Neuer User

    Registriert seit:
    11 Apr. 2007
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  5. dynamic

    dynamic Aktives Mitglied

    Registriert seit:
    1 Apr. 2006
    Beiträge:
    1,154
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #5 dynamic, 2 Nov. 2008
    Zuletzt bearbeitet: 2 Nov. 2008
    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
     
  6. SR166

    SR166 Neuer User

    Registriert seit:
    11 Apr. 2007
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Code:
    awk="/bin/busybox awk"
    so hatte ich die variable gesetzt. Habs irgendwann mal gelöscht weil es einfach nicht gehen wollte.
     
  7. dynamic

    dynamic Aktives Mitglied

    Registriert seit:
    1 Apr. 2006
    Beiträge:
    1,154
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    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 ;)
     
  8. SR166

    SR166 Neuer User

    Registriert seit:
    11 Apr. 2007
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  9. SR166

    SR166 Neuer User

    Registriert seit:
    11 Apr. 2007
    Beiträge:
    86
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
      Dateigröße:
      122.8 KB
      Aufrufe:
      28