anzeigen des Anrufers auf der D-BoxII

chaos2000

Aktives Mitglied
Mitglied seit
22 Aug 2004
Beiträge
2,028
Punkte für Reaktionen
0
Punkte
36
Is zwar nicht fein, aber nützlich kann es sein ;)

Code:
#!/usr/bin/perl -w
# dboxmessage.pl -- Sendet eine Nachricht an die D-BoxII unter Neutrino. 
# ARGV[0] - IPadresse der Box
# ARGV[1] - Port des nhttpd (zu finden unter /var/tuxbox/config/nhttpd.conf)
# ARGV[2] - Machrichtentyp popup|nmsg  
# ARGV[3] - informationen über den Anrufer

use strict; 
use LWP::UserAgent;

my ($url, $ua, $request, $response);
my $ip = $ARGV[0];
my $port = $ARGV[1];
my $messagetype = $ARGV[2];
my $anrufer = $ARGV[3];

$url = "http://172.17.1.150/control/message?popup=Anruf von: ".$ARGV[0];
#$url = "http://".$ip.":".$port."/control/message?".$messagetype."=Anruf von: ".$anrufer;

print $url, "\n";
$ua = LWP::UserAgent->new();

$request = HTTP::Request->new('GET', $url);
$response = $ua->request($request);
#print $response->code ,"\n";
 
unter Vorraussetzung D-BoxII mit Neutinosystem (Linux):

is recht simple;

1. du speichert das script unter /var/lib/asterisk/agi-bin/dboxscript.pl
2. in /etc/asterisk/extensions.conf trägst du in dem gewünschten abschitt
[...]
exten => 20,1,agi(dboxscript.pl|${CALLERID})
[...]
3. reload von asterisk

--> fertig


P.S.: wenn du zeile 17 auskommentierst und in zeile 18 das # entfernst kannst du in der extensions.conf alle parameter zum verbindungsaufbau und den messagetype angeben
 
Hallo,

könnte man die Inverssuche der Telekom einbinden um den Namen des Anrufers anzeigen zu lassen?

Habe hier folgendes gefunden:
lynx "http://www.dasoertliche.de/DB4Web/es/oetb2suche/home.htm?kw_invers=123456&main=Antwort&s=2" \
-dump -nolist | grep printselected.gif -A 2 -m 1 | awk '{ if (NR>1) {printf $0} } END { print }'

anstatt der 123456 im Link muss natürlich die Telefonnummer rein.

Gruss lxuser
 
Habe zu diesem Zweck bei mir ein
Code:
exten => 62,6,System(wget -bq -o /dev/null -O /dev/null http://dbox/control/message?popup="""Anruf von ${CALLERIDNAME} ${CALLERIDNUM}""" >/dev/null)
in der extensions.conf stehen.
Wo liegt der Vorteil deiner Lösung ?
 
lxuser schrieb:
könnte man die Inverssuche der Telekom einbinden um den Namen des Anrufers anzeigen zu lassen?

prinzipell kein problem, werde ich in der nächsten zeit einmal einbauen und veröffentlichen
THX für den tipp
 
@fux

habe es mal mit Deinem Einzeilder versucht:
exten => 62,6,System(wget -bq -o /dev/null -O /dev/null http://dbox/control/message?popup="""Anruf von ${CALLERIDNAME} ${CALLERIDNUM}""" >/dev/null)

Ich bekommezwar eine Meldung auf dem Fernseher, aber ohne die Variablen. Im CLI meldet er :

/bin/sh: CALLERIDNAME: command not found
/bin/sh: CALLERIDNUM: command not found

Ich habe dem exten => bei mir die Priorität 1 gegeben. Warum hat es bei dir die Priorität 6, was läuft bei dir davor noch ab?

Vielleicht hast Du ja einen Tipp warum er die Werte für die Variablen nicht setzt. Werde wohl auch mal das Perl-Script testen als Alternative. Ausserdem möchte ich noch In der Meldung das Ziel des Anrufs haben (Anruf von 089xxx für Teilnehmer 99 - Privat)

@chaos2000
Bei Deinem Script ist mir nicht klar welchen Namen die Definition in der Extensions.conf tragen müssen . Definiere ich dort dann "ip" oder "ARGV[0]"? Bin mit Perl nicht sehr bewandert, wundere mich daher über die Variablendefinitionen. Hilfreich wäre es Deine extensions.conf mal dazu zu sehen.
 
zum besseren Verständnis hier noch mal ein Ausschnitt aus der Extension

/etc/asterisk/extensions.conf
Code:
exten => 21,2,agi(dboxmessage.pl|${CALLERID})


das dazugehörige script
/var/lib/asterisk/agi-bin/dboxmessage.pl
Code:
#!/usr/bin/perl -w
# dboxmessage.pl -- Sendet eine Nachricht an die D-BoxII unter Neutrino. 
# ARGV[0] - IPadresse der Box
# ARGV[1] - Port des nhttpd (zu finden unter /var/tuxbox/config/nhttpd.conf)
# ARGV[2] - Machrichtentyp popup|nmsg  
# ARGV[3] - informationen über den Anrufer

use strict; 
use LWP::UserAgent;

my ($url, $ua, $request, $response);
my $ip = $ARGV[0];
my $port = $ARGV[1];
my $messagetype = $ARGV[2];
my $anrufer = $ARGV[3];


$url = "http://172.17.1.151/control/message?nmsg=Anruf von: ".$ARGV[0];
#$url = "http://".$ip.":".$port."/control/message?".$messagetype."=Anruf von: ".$anrufer;

$ua = LWP::UserAgent->new();

$request = HTTP::Request->new('GET', $url);
$response = $ua->request($request);
print $response->code ,"\n";
 
@chaos

Genau da habe ich das Problem

$url = "http://172.17.1.151/control/message?nmsg=Anruf von: ".$ARGV[0];

$ARGV[0] wurde doch oben als

# ARGV[0] - IPadresse der Box

definiert aber eigentlich soll hier rein ja ${CALLERID} übergeben werden. Das tut es wohl auch, aber dann ist doch dieobige Definition/Dokumentation falsch.

Ich muss noch irgendwie hinzufügen für welches Ziel der Anruf ist, also

Anruf von ${CALLERID} für ???

Das sollte sich aber machen lassen denke ich, aber ich bin halt noch etwas verwirrt, insbesondere von der momentan auskommentierten Zeile im Perl-Script und wie die Variablen dann alle aus der extensions.conf kommen sollen. Müssen dann halt alle hintereinander übergeben werden, aber wie gesagt verwirren dann die Definitionen oben, denn die können sich nur auf den Fall übergebener Variablen beziehen.

Danke erstmal!

Gruß,

Jui
 
chaos2000 schrieb:
lxuser schrieb:
könnte man die Inverssuche der Telekom einbinden um den Namen des Anrufers anzeigen zu lassen?

prinzipell kein problem, werde ich in der nächsten zeit einmal einbauen und veröffentlichen
THX für den tipp

Hallo,

gibt es schon was neues von dir?

Ansonsten sieht die Lösung von thorsten.gehrig für den VDR auch sehr gut aus. Wie müsste hier der geänderte Aufruf für die dbox aussehen?

Grüsse lxuser
 
HI
es gibt doch schon einen Thread für die Anrufanzeige auf dem VDR - mit Reservssuche. Wenn man nun dieses Script nimmt und die Ausgaberoutinen für die dbox2 einbaut hat man beides - reversesuche und anzeige auf der dbox2...
Mit ein bisschen wollen kein problem - wenn doch: problem schildern und ich helfe...

Gruß
Thorsten Gehrig
 
Hallo,

wenn ich das richtig verstehe wird aus
....
fi

echo -e -n "mesg TEL:$NAME \nquit\n" | telnet vdr.gehrig.lan 2001
echo -e -n "mesg $DETAILS \nquit\n" | telnet vdr.gehrig.lan 2001
echo -e "`date +%e.%m\ %H:%M ` $NAME " >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
read in

exit 0

....
fi

wget http://172.17.1.150/control/message?popup=Anruf von: $NAME%0A$DETAILS
echo -e "`date +%e.%m\ %H:%M ` $NAME " >>$LOG
echo 'SET VARIABLE LONGNAME '"\"$NAME\"" >/dev/stdout
read in

exit 0

%0A sorgt für einen Zeilenumbruch und %20 für ein Leerzeichen.
Hier ist die HTTP-Ansteuerung der d-box2 beschrieben: http://cvs.tuxbox.org/cgi-bin/viewc...rev=1.31&content-type=text/vnd.viewcvs-markup


Ausserdem würde ich noch gerne den Namen per netsend auf einen Windows Rechner schicken. Dazu müsste dann doch auch nur eine Zeile eingefügt werden?
...
echo Anruf von $NAME $DETAILS | smbclient -M hostname
...

Die beiden Sachen habe ich vorher über den fli4l gemacht, der jetzt einem ipcop und einem Debian-Server weichen musste.


Da mein Asterisk zur Zeit nicht läuft, kann ich die skripte leider nicht testen.

Erstmal danke für die Hilfe.


@ thorsten.gehrig

Wäre es nicht sinnvoll dein Skript in die VDR-Wiki zu stellen?

Gruss lxuser
 
Ich würde das Script aber noch abändern, sodaß nicht bie jedem Anruf gleich auf teleauskunft gesucht wird, sondern erst in der lokalen DB, dann erst teleauskunft und dann der Eintrag in der lokalen DB verweigt wird.
Das ahtden Vorteil, daß das auch schneller geht und ausserdem ist ja auch nicht jeder Teilnehmer oder Mobiltelefon bei teltarif verewigt.
Auch finde ich hier wird mit Perl auf Säue geschossen, der Perl-Interpreter schluckt gleich mal minimum 10 MB, das ganze geht auch mit der normalen bash. Ich bin gerade dabei sowas zusammen zu nageln, leider fehlt mit im Moment der Antrieb das auch zu ende zu bringen....
Also Leute, wer nicht so stinkfaul ist wie ich, ran an die Arbeit !!!!
 
@ DerDominic

Genau so wie du die Lösung beschreibst ist die Lösung von thorsten.gehrig für den VDR. Also mit lokalem Speicher und als bask-skript ausgeführt. Siehe http://www.ip-phone-forum.de/forum/viewtopic.php?t=968&start=15

Es ist eigentlich nur noch der telnet-Aufruf zum VDR am Ende des Skriptes mit einen http-Aufruf der d-box auszutauschen. Daran habe ich mich mal oben versucht :?

Gruss lxuser
 
Ja, muß zugeben, ich habe mich nicht durch das ganze Script gequält, ich hatte halt das Script von Chaos2000 (welch ein Name) gesehen, da schleuderte mir doch glatt als erstes ein .pl und Perl ins Gesicht, da wollte ich auch nicht mehr genauer nachlesen.

Für die DBox ist das absolut kein Problem, kansst Du mit wget machen, wurde hier in einem anderen Thread ja auch schon sehr schön gezeigt.....

Dominic
 
Hallo @DerDominic,

sieht gut aus was du da geschrieben hast.
Die sache mit dem netsend ist auch eine gute idee - ich werde die mal bei mir lokal implementieren...

Auf die idee mit dem Wiki bin ich garnicht gekommen - wahrscheinlich hatte/habe ich auch keine List das auf englisch zu dokumentieren - wobei es eh nur für deutsche interessant ist...

Ich werd mich mal aufraffen...

Gruß
Thorsten
 
@ thorsten.gehrig

Super, das es jetzt im wiki steht. Ich dachte eigentlich eher an die wikis zum VDR bzw. später zur d-box. So sind aber alle drei Möglichkeiten schön übersichtlich zusammen.

Ich hoffe, dass die Aufrufe für die d-box und den Windows-Nachrichtendienst so in Ordnung sind.
Kann sein das noch Parameter an wget, um die Ausgabe von wget nach /dev/null umzuleiten, übergeben werden müssen wie im Beispiel aus dem dbox-Forum beschrieben:
Da ist auch noch ein Beispiel für die Dream-Box vorhanden.

Daher bitte ich mal jemanden zu testen und eine Rückmeldung zu geben.

Ich selbst habe leider erst wieder nächsten Mittwoch nach meiner Klausur Zeit mich mit dem Asterisk zu befassen. Dann wird unser kleines WG-Netzwerk mit 6 Teilnehmern und ebensovielen d-boxen, PCs und Rufnummern endlich wieder vervollständigt.

Gruss lxuser
 
Noch eine kleine Anregung.

Die Rufanzeige ist ja schon ganz nett :)
Perfekt wäre aber noch der Zugriff auf die Anrufliste.

thorsten.gehrig hat folgendes zum VDR geschrieben
/var/log/asterisk/anrufliste_log
Hier stehen die eingegangenen Anrufe drinnen - in einem Format was man wunderbar am VDR lesen kann (commands.cmd => tac /pfad/zum/log/anrufliste_log | tail -n 100 )
Da Neutrino jetzt skripte unterstützt http://wiki.tuxbox.org/Neutrino:Skripte und diese auch eine Rückmeldung auf OSD geben können, könnte man die Anrufliste am Fernseher abrufen.
Leider ist in der busybox kein tac enthalten. Wie würde ein skript mit netcat aussehen, das nur die letzten x Anrufe anzeigt ?

Da es für die dbox und den VDR ein Newsticker-Plugin gibt und wäre es auch nicht schlecht ein Newsticker-rdf zu erstellen. Damit könnte man sich sogar plattformübergreifend mit KDE/GNOME oder Windows bzw. über Internet und evt. auch mit dem Handy die Anrufliste anschauen.

Vielleicht kann man aus dem Skript von http://217.172.178.142/~frank/mlcomplete.htm einiges übernehmen.

Gruss lxuser
 
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.