Anrufinfo auf Windows PC

e18

Mitglied
Mitglied seit
9 Sep 2004
Beiträge
420
Punkte für Reaktionen
0
Punkte
16
Hallo,

ich hab jetzt alle Suchworte mal durchprobiert aber noch nix gefunden:

Wie kann ich mir von meinem Asterisk eingehende Anrufe auf meinem Windows-PC signalisieren lassen (nur die CLI-Informationen, nicht den Anruf selbst, der geht über SPA3K an analoge Nebenstelle).

Mir schwebt so was vor wie ein kleines "blub" rechts unten in der Taskleiste:

"Da ist schon wieder Herr Meier aus Schwabing, Tel: 300033 am Apparat"

wenn das Telefon anfängt zu klingeln.

Einige haben es ja irgendwie schon am VDR hinbekommen, aber ich schaue nicht die ganze Zeit Glotze....
 
Such mal nach Asterisk + Tapi. Wir sind gerade dran ein Freeware Programm umzuschreiben, ist für Asterisk 1.0 Programmiert worden und hat auf Asterisk 1.2 den Fehler das es die eigene Nr. anzeigt anstatt die es anrufers.

Wenn wir das Programm gefixt haben, kann ich es dir ja Mailen.
Ansonsten findest du auch noch kommerzielle Tapi Programme die mit Asterisk laufen.

Du kannst dir natürlich auch selber ein Programm schreiben, wenn du nur eine Anzeige haben möchtest wer Anrufst brauchst du im Prinzip nur ein Telnet Programm und dann auf den Asterisk Manager connecten.

telnet xxx.xxx.xxx.xxx 5038

Den Syntax und die Konfiguration des Managers guckst du auf www.voip-info.org

Gruss
Liquido
 
ich hab nur einen schlanken * auf der kleinen linksys nlsu laufen, mir gefällt das traymessage Java-Teil (danke @chaos), auf dem Windows-PC hab ich es schon zum laufen, jetzt muss ich mir nur noch das Reverse-Lookup-Klicktel script, was ich hier irgendwo schon mal gefunden habe, umbasteln.....

falls das schon mal jemand gemacht hat, nur vor....ansonsten werde ich Vollzug melden :)
 
@e18

ich kenne das script jetzt nicht, ich verwende das "oertliche"; Wie willst Du das umbsteln?
 
@chaos: korrektur, geht auch an das oertliche, habe von einem Freund gehört, goyellow sei besser?!?

@alle: helft doch mal einem unbegabten cut&paste-programmierer weiter:

habe jetzt in der extensions.conf

exten => 111,1,agi(notify.sh|${CALLERIDNUM})

stehen und im agi-bin-verzeichnis folgendes script:
notify.sh
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="/opt/var/spool/asterisk/invsuche_cache"

#pfad um das tempfile anzulegen
TMPFILE="/tmp/tmpsuche"
LOG="/opt/var/log/asterisk/anrufliste_log"

if [ "$1" == " " ]; then
    NAME="anonymer Anrufer"
    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 [URL]www.dasoertliche.de[/URL]"
#        lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_inver
s=$NUMMER&main=Antwort&s=2" \
#        -dump -nolist -connect_timeout=3>  $TMPFILE
wget "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER
&main=Antwort&s=2" -O $TMPFILE


        NAME=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 2) print
$0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"`
        DETAILS=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 3) pri
nt $0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"`
        if [ "$NAME" == "" ]; then
            if grep "Kein Teilnehmer gefunden" $TMPFILE > /dev/null; then
                NAME="Telefonnummer $NUMMER"
                DETAILS="Kein Eintrag $2"
            fi;
        fi;
        if [ "$NAME" == "" ]; then
            NAME="Telefonnummer $NUMMER"
            DETAILS="Fehler $2"
        else
            echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE
        fi;
    fi
fi

wget -t 1 -O /dev/null "http://192.168.0.100:23232/@$NAME/$DETAILS"
echo -e "`date +%e.%m\ %H:%M ` $NAME " >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
read in

exit 0

aber irgendwie bekomme ich immer nur eine leere Blase. Wie muss ich das script auf der kommandozeile aufrufen (mit $1=Telefonnnummer), um es zu debuggen?
 
ja versuche es mal in der Konsole mit

./notify.sh $telefonnummer

edit:
Hast du auf die Zeilenumbrüche geachtet?
Wenn es wie das obige Code ausschaut geht es nicht!!!!
 
Zuletzt bearbeitet:
das habe ich schon probiert, da passiert nix (wartet auf weitere eingabe), wie schicke ich EOF?

EDIT: Ja, (Zeilenumbrüche), hatte nur probleme beim zurückkopieren hier ins forum)

EDIT2: irgendwie kommt immer permission denied, müssen die Klammern beim if eckig sein?
 
hier nochmal sauber kopiert:

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="/opt/var/spool/asterisk/invsuche_cache"

#pfad um das tempfile anzulegen
TMPFILE="/tmp/tmpsuche"
LOG="/opt/var/log/asterisk/anrufliste_log"

if [ "$1" == " " ]; then
    NAME="anonymer Anrufer"
    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 [URL]www.dasoertliche.de[/URL]"
#        lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER&main=Antwort&s=2" \
#        -dump -nolist -connect_timeout=3>  $TMPFILE
wget "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER&main=Antwort&s=2" -O $TMPFILE


        NAME=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 2) print $0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"`
        DETAILS=`grep printselected.gif -A 2 $TMPFILE | awk '{ if (FNR == 3) print $0 }' |  sed  -e "s/\ \+//" -e "s/\ \+/\ /g" -e "s/\[_\]//g"`
        if [ "$NAME" == "" ]; then
            if grep "Kein Teilnehmer gefunden" $TMPFILE > /dev/null; then
                NAME="Telefonnummer $NUMMER"
                DETAILS="Kein Eintrag $2"
            fi;
        fi;
        if [ "$NAME" == "" ]; then
            NAME="Telefonnummer $NUMMER"
            DETAILS="Fehler $2"
        else
            echo -e "$NUMMER\t$NAME\t$DETAILS" >> $CACHE
        fi;
    fi
fi

wget -t 1 -O /dev/null "http://192.168.0.100:23232/@$NAME/$DETAILS"
echo -e "`date +%e.%m\ %H:%M ` $NAME " >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
read in

exit 0

Danke für#s draufschauen!
 
funktioniert bei mir;
nach dem ausführen mal ein wenig ENTER drücken (ca 15 mal)
und die datei /opt/var/spool/asterisk/invsuche_cache anlegen und schreibrechte setzen
 
Eine ganz andere Lösung wäre einfach ein Softwaretelefon auf dem Windowsrechner zu installieren und das Mitklingeln lassen.
Nachteil:
- Sollte das eigentliche Telefon besetzt sein, klingelt das Computer Telefon noch weiter
wg. "nur die CLI-Informationen, nicht den Anruf selbst, der geht über SPA3K an analoge Nebenstelle"
- extra Telefonbuch (außer man hat eins mit LDAP und ebenso auf dem Asterisk)
 
chaos2000 schrieb:
funktioniert bei mir;
nach dem ausführen mal ein wenig ENTER drücken (ca 15 mal)
und die datei /opt/var/spool/asterisk/invsuche_cache anlegen und schreibrechte setzen

ich bekomme immer diesen Fehler:

[: ==: unknown operand
[: ==: unknown operand
--13:43:51-- http://192.168.0.100:23232/@/
=> `/dev/null'
Connecting to 192.168.0.100:23232... connected.
HTTP request sent, awaiting response...

sowie eine Leere Blase angezeigt
 
if hat bei mir runde klammern
 
bin ein schritt weiter: habe in der ersten Zeile sh durch bash ersetzt. Jetzt läuft es soweit, aber beim grep gibts eine Fehlermeldung, der Parameter -A wird bei meinem mini-linux offensichtlich nicht unterstützt:

Options:
-H prefix output lines with filename where match was found
-h suppress the prefixing filename on output
-i ignore case distinctions
-l list names of files that match
-n print line number with output lines
-q be quiet. Returns 0 if result was found, 1 otherwise
-v select non-matching lines
-s suppress file open/read error messages

grep: invalid option -- A

kann ich das was anderes nehmen?
 
orginal ist:

Context control:
-B, --before-context=NUM print NUM lines of leading context
-A, --after-context=NUM print NUM lines of trailing context
-C, --context=NUM print NUM lines of output context
-NUM same as --context=NUM
--color[=WHEN],
--colour[=WHEN] use markers to distinguish the matching string
WHEN may be `always', `never' or `auto'.
-U, --binary do not strip CR characters at EOL (MSDOS)
-u, --unix-byte-offsets report offsets as if CRs were not there (MSDOS)


dann sollte man das ganze mal nach perl umschreiben
 
oh nee, perl kann die kleine box erst recht nicht.

habe schon mit grep Detailansicht den korrekten Ausschnitt (mit allen Infos, jetzt noch dieses awk-Zeugs.....
 
Zuletzt bearbeitet:
da kann ich dir leider nicht weiter helfen, kenne mich damit nicht aus
 
ERFOLG: jetzt klappts zusammen mit dem traymessage JAVA progrämmchen von oben:

Code:
#!/bin/bash 
# 
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="/opt/var/spool/asterisk/invsuche_cache"

#pfad um das tempfile anzulegen
TMPFILE="/tmp/tmpsuche"
LOG="/opt/var/log/asterisk/anrufliste_log"

if [ "$1" == " " ]; then
    NAME="anonymer_Anrufer"
else
    NUMMER=`echo $1 | sed -e "s/\ //g" -e "s/+49/0/"`
     echo "Suche nach $NUMMER im cache"
    NAME=`grep $NUMMER $CACHE | sed -e "s/$NUMMER#//"`
     echo "Name: $NAME"
    if [ "$NAME" == "" ]; then 
         echo "Suche nach $NUMMER in [URL]www.dasoertliche.de[/URL]"
#        lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER&main=Antwort&s=2" \
#        -dump -nolist -connect_timeout=3>  $TMPFILE
wget "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=$NUMMER&main=Antwort&s=2" -O $TMPFILE


        NAME=`grep Detailansicht  $TMPFILE |  sed  -e "s/<br>/;/; s/<[^>]*>//g; s/	//g; s/ /_/g; s/_//"` 

        if [ "$NAME" == "" ]; then
            if grep "Kein Teilnehmer gefunden" $TMPFILE > /dev/null; then
                NAME="Telefonnummer_$NUMMER"
            fi;
        fi;
        if [ "$NAME" == "" ]; then
            NAME="Telefonnummer_$NUMMER"
        else
            echo -e "$NUMMER#$NAME" >> $CACHE
        fi;
    fi
fi
echo "*$NAME*"
wget -t 1 -O /dev/null "http://192.168.0.102:23232/@$NAME"
wget -t 1 -O /dev/null "http://192.168.0.100:23232/@$NAME"
echo -e "`date +%e.%m\ %H:%M ` $NAME " >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
read in

exit 0

Danke für Eure Unterstützung!
 
telnet zeilenweise interpretieren

Neue Challenge: Jetzt habe ich eine Fritzbox, von der kann ich per Telnet eingehende Anrufinfos lesen, nur -> wie bekomme ich mit Hilfe eines scriptes Zeile für Zeile des Telnet-Output verarbeitet?

wenn ich
#nc fritz.box 1012 | grep RING | notify.sh
aufrufe, habe ich das Problem, dass - weil die Fritzbox ja ein continuous output liefert, kein EOF kommt und das script notify nie aufgerufen wird, gibts da einen anderes Kommando, das man nutzen kann?
 
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.