Callmessage auf 7270 dank BODEGA!! Änderungen bei das Örtliche

hi.

ich benutze seit kurzem Freetz und darin den Callmonitor. Ist mega simpel damit alles.
Warum macht ihr das nicht auch? Reine Neugier...

Gruß
 
Hi ganz einfach, ich muss immer ein neues Image machen sobald ne neu FW rauskommt! Zumindest auf meiner Masterbox ist Freetz kein Thema für mich! Auf den Slave Boxen habe ich Freetz auch am laufen!

PS: Ich habe den Fhler gefunden es geht jetzt wieder! Ein Leerzeichen hat in der debug.cfg gefehlt..deshalb war der Fehler vorhanden! Muss mir beim Bearbeiten mal passiert sein!

Gruß und THX BOLLE
 
[Edit frank_m24: Fullquote auf das Notwendige beschränkt. Lies noch mal die Forumregeln.]
Warum macht ihr das nicht auch? Reine Neugier...

Ich bin noch zu neu und bin froh, dass mein Zeugs überhaupt lüppt. Ich habe schon von Freetz gehört, aber leider noch keine Seite gefunden, wo man auch mal ein paar Bilder vom WebInf sieht und was man damit alles so einstellen kann. Wichtig is bei mir auch, dass ich das interne Modem abschalten können muss, denn ich habe leider nur SHDSL hier bei mir.
 
kann es sein dass das cnt=7 nicht mehr stimmt. Kann das mal jemand nachschauen ob invers noch geht?

PS : allerdings mit noch einer unbekannten Nummer ...da sonst die contact.txt abgerufen wird!
 
bei mir geht weder NAME noch ADDRESS. hat es wieder eine größere Änderung gegeben?
 
Hallo juwo,

funktioniert das hier bei dir?
Code:
number="$1"
url="http://www2.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$number"
temp=$(wget -q -O - "$url" | grep -A 10 class=\"entry)
name=$(echo "$temp" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g; 1p')
addr=$(echo "$temp" | grep "&nbsp" | sed -e 's/ //g; s/&nbsp;/ /g; s/<[^<]*>//g;')
if [ "$name" != "" ]; then echo -n "$name"; fi
if [ "$addr" != "" ]; then echo "$addr"; fi

EDIT:
Ok.. bei mir gab es Leerzeichen. Hab es nun auch geändert.
 
Zuletzt bearbeitet:
hallo mein Freund,

ja das geht ohne Probleme. Müsste das vermutlich jetzt nur so einbauen in die debug.cfg bzw den Teil der invers.sh entsprechend abändern oder, aber da bräuchste ich noch ein wenig Hilfe.

Code:
#!/bin/sh

number=$1

rm /var/tmp/page 2>/dev/null

url="http://www2.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$number"
temp=$(wget -q -O - "$url" | grep -A 10 class=\"entry)
name=$(echo "$temp" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g; 1p')
addr=$(echo "$temp" | grep "&nbsp" | sed -e 's/ //g; s/&nbsp;/ /g; s/<[^<]*>//g;')

while read reverse
do

if [ "$gotname" = "1" ];
then
  # get address
	if [ "$addr" != "" ];
		then
   		echo "$addr";
   		echo "$addr" > /var/tmp/address;
        break;
    fi
fi
                         
  # get name
    case ${reverse} in
    *entry*)
    name=${reverse#*\>}
    name=${name%%\<*}
    gotname=1
    ;;
esac
done < /var/tmp/page
                                          
ENDINVERS

# make it executable
chmod +x /var/tmp/invers.sh

Mit der Adresse komm ich klar, aber wie baue ich die Routine für den Namen ein, denn er schaut ja zuerst, ob der zugehörige Namen mit Anschrift nicht schon in der debug.cfg eingetragen ist. Nur wenn er dort nicht steht, dann wird er ermittelt. Das sollte auch so bleiben, weil ich dort bereits ein paar manuelle Änderungen eingetragen habe.

D.h., das müsste irgendwie rein
Code:
if [ "$name" != "" ];
then
   echo -n "$name";
   echo -n "$name" > /var/tmp/name;
fi

Gerade gesehen, dass das Script /var/tmp/callmessage.sh danach erstellt wird, trotzdem bin ich mir nicht sicher, wie man wie gesagt die Namensfrage löst.
Was ich auch nicht gefunden habe ist die Stelle, in der NAME und ADDRESS wieder gelöscht werden
 
Zuletzt bearbeitet:
und noch 2 Fragen:

1. wenn ich in der invers.sh zuerst die beiden dateien NAME und ADDRESS weglösche
Code:
rm /var/tmp/name
rm /var/tmp/address
fällt dann das nächste Script beim Aufruf doch sicher auf die Nase, wenn es kein name findet oder?
Code:
.........
# make it executable
chmod +x /var/tmp/invers.sh

# write send script to file
cat > /var/tmp/callmessage.sh << 'ENDCALLMESSAGE'
#!/bin/sh

caller=${2}
called=${1}

# search name in contact list
entry=`cat /var/flash/debug.cfg 2>/dev/null | fgrep "#contact=${caller}:" | sed "s/#contact=${caller}://"`
name=${entry%%\;*}
address=${entry#*\;}
address=${address%\;*}
street=${address%%\;*}
zip=${address##*\;}

# name not found?
if [ -z "${name}" ]
then
  # do reverse lookup at www.dasoertliche.de
  /var/tmp/invers.sh ${caller}
  name=`cat /var/tmp/name`
  # found name?
..........



2. kann man das eventuell mit einem aufruf
Code:
echo > /var/tmp/name
umgehen? oder wird dann angenommen, dass ein leerer String als gültiger Name in der Datei NAME steht?
 
Hallo juwo,

ich erinnere mich. Du hattest ja das Skript aus Beitrag #12 genommen. Schon ein ganzes Jahr rum ;)

Also im Endeffekt müsste die Datei /var/tmp/invers.sh nun so aussehen:
Code:
# write reverse lookup script to file
cat > /var/tmp/invers.sh << 'ENDINVERS'
#!/bin/sh
number="$1"
url="http://www2.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$number"
temp=$(wget -q -O - "$url" | grep -A 10 class=\"entry)
name=$(echo "$temp" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g; 1p')
addr=$(echo "$temp" | grep "&nbsp" | sed -e 's/ //g; s/&nbsp;/ /g; s/<[^<]*>//g;')

echo "${name}" > /var/tmp/name     # Variable $name nach /var/tmp/name schreiben
echo "${addr}" > /var/tmp/address  # Variable $addr nach /var/tmp/address schreiben
ENDINVERS
...
Bei dem Skript aus #107 gebe ich Name und Adresse auf der Konsole aus. Im obigen Skript wird Name und Adresse nun in Dateien geschrieben, wie in #12 auch. Jedoch ist die while-Schleife weggefallen, da nun die wget-Ausgabe direkt in eine Variable geschrieben wird, anstatt in /var/tmp/page. Vorher wurde Zeile für Zeile eingelesen und verglichen, nun geht es direkt.

Der andere Teil des Skriptes müsste gleich bleiben.
 
[gelöst]

Hallo Marco,

klasse, dass du dich noch an mich erinnerst. Jo, so schnell geht ein Jahr vorüber, trotzdem nutze ich deine Skripten noch. An dieser Stelle auch von mir noch alles Gute fürs Neue Jahr. Habe ich Stoffel wieder vor lauter Aufregung vergessen.

:groesste::groesste::groesste:

jetzt muss nur noch jemand von außen anrufen, der nicht in der Liste ist :)

ein kleiner Schönheitsfehler ist mir noch aufgefallen. Der erste Anruf nach Neustart wird nicht ermittelt, weil ihm die telefon_parse.sh noch fehlt.

Code:
[avm_power]event: 27 not handled
Jan  5 21:02:30 telefon[679]: '/var/calllog' script not found!
sh: can't open /var/tmp/parse_telefon.sh
Jan  5 21:02:30 telefon[679]: SIGCHLD received!
mknod: /var/flash/calllog: File exists
/etc/init.d/rc.S: /var/flash/debug.cfg: line 297: cannot create /var/led: No such device or address

aber damit kann ich leben

wiedermal meinen allergrößten Respekt und nochmals DANKE!!!!

Gruß
Jürgen aus Oberfranken
 
Hallo Jürgen,

auch dir ein gesundes neues Jahr. Klar erinnere ich mich an dich. Nur die Konfiguration/Konstellation gerät schonmal in Vergessenheit.

Aber super, dass es nun läuft. Zum Thema parse_telefon.sh:
Code:
# write parse_telefon script to file
cat > /var/tmp/parse_telefon.sh << 'ENDPARSETEL'

.......

ENDPARSETEL

# make it executable
chmod +x /var/tmp/parse_telefon.sh
Damit erstellst du die Datei parse_telefon.sh und machst sie ausführbar.
Vielleicht ist bei ENDPARSETEL irgendwo ein Leerzeichen zu viel. Nur geraten, da mir das auch ein paar mal passiert ist :)
 
also die Datei selbst wird ja nach dem ersten Anruf auch korrekt erstellt, denn die Syntax steht weiter unten in der debug.cfg. Es liegt vermutlich an einem ersten Aufruf ziemlich weit oben in der debug.cfg
Code:
sh /var/tmp/parse_telefon.sh "${LINE}" "${CALLER}" &

Vielleicht reicht es, wenn man das Script einfach nach eb schiebst?
Ich hänge mal meine debug ran, wie sie im Moment ist.
 

Anhänge

  • debug.txt
    5.7 KB · Aufrufe: 30
Hallo Jürgen,

nach oben schieben könnte funktionieren. Das müsstest du mal ausprobieren.
Vielleicht auch nach dem Neustart 5-10 min warten und dann einen Testanruf wagen. Das Skript braucht eventuell etwas länger, bis es komplett abgearbeitet wurde.
 
[Edit frank_m24: Mehrere Beiträge zusammengefasst. Man kann seine Beiträge auch editieren. Lies noch mal die Forumregeln.]
riesengroße megasch........... :confused:

nachdem nun ein erster Anrufer von außen kam, wars vorbei. die debug.cfg verschwand komplett. ich habs nachgestellt und tatsächlich, mit dem Aufruf

Code:
/var/tmp/parse_telefon.sh <meine MSN>:TELEFON 09115403690

geht alles dem Bach runter. Vor allem erscheint der Eintrag der Adresse doppelt, weil er sich 2 mal auf der Seite befindet. Der 2. "Name" scheint wiederum leer zu sein

Code:
# cat name
Audi Zentrum N³rnberg-Marienberg

Code:
# cat address
Marienbergstr. 88, 90411 N³rnberg
Marienbergstr. 88, 90411 N³rnberg



Und jetzt will die debug.cfg gar nicht mehr. Werd wohl nochmal ein Pseudoimage drüberklopfen (oder doch auf freetz gehen müssen) :(:(

[Beitrag 2:]
wär es eine Lösung, wiederum nur einen esten Eintrag in NAME und ADDRESS zu nehmen?
Das könnte man ja auch nach dem Auslesen der Seite machen oder?

Code:
name=$(echo "$name" | head -n 1)
addr=$(echo "$addr" | head -n 1)
echo "${name}" > /var/tmp/name
echo "${addr}" > /var/tmp/address

p.s. ich bin kein linuxer, aber habe die Funktion zufällig gefunden.
Was aber immer komisch ist, ist die Leerzeile beim Namen. Die wird auch mit dem HEAD immer ausgegeben, also sprich eine zusätzliche Leerzeile nach dem Namen

Insgesamt sieht mein momentanes Revers so aus:

Code:
# cat /var/tmp/test.sh
#!/bin/sh

number="$1"

url="http://www2.dasoertliche.de/?form_name=search_inv&page=RUECKSUCHE&context=RUECKSUCHE&action=STANDARDSUCHE&la=de&rci=no&ph=$number"
temp=$(wget -q -O - "$url" | grep -A 10 class=\"entry)
name=$(echo "$temp" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g;1p')
addr=$(echo "$temp" | grep "&nbsp" | sed -e 's/ //g; s/&nbsp;/ /g; s/<[^<]*>//g;')
name=$(echo "$name" | head -n 1)
addr=$(echo "$addr" | head -n 1)
echo "${name}" > /var/tmp/name
echo "${addr}" > /var/tmp/address
trau mich nur nicht das einzubauen mit der vorhergehenden negativen Erfahrung

[Beitrag 3:]
das größte Problem ist für mich nach wie vor, einen Anruf zu simulieren, der den ganzen Vorgang mal auslöst, ala
Code:
sh /var/flash/debug.cfg <RUFNUMMER>
 
Hallo Jürgen,

aber eine Sicherung und ein Testen der debug.cfg wäre für mich selbstverständlich :confused:

Ich benötige auch nur den Teil mit der Rückwärtssuche und kann nur Tipps zu anderen Konstellationen geben. Ich hoffe du verstehst, dass ich nicht jede debug.cfg hier im Forum testen kann (das wäre ja noch schöner ;))

Ich finde es eigentlich auch etwas suboptimal, Adresse und Name in die debug.cfg zu schreiben, wenn man eine 7170 oder 7270 hat. Da kann man genausogut alles auf USB schreiben, ohne sich irgendetwas zu zerschießen.

Es hilft aber alles nichts. Du musst dich (leider) mit Shellprogrammierung auseinandersetzen. Verstehe mich nicht falsch, aber das sind alles grundsätzliche Dinge die man wissen muss, bevor man sich an die debug.cfg wagt. Alles andere ist leichtsinnig, wie du bereits festgestellt hast.
 
Zuletzt bearbeitet:
ich versteh dich schon richtig, du hast ja Recht.
Ich habe jetzt noch ein wenig gebastelt und mal sehen, was daraus wird.

Ich würde gerne eines noch verstehen, denn dazu konnte ich nichts finden, weil man einfach leider nicht danach suchen kann. Vielleicht kannst du mir auch eine gute Seite empfehlen?

Was bedeuten folgende Zeichen/Befehle

1.
Code:
sh /var/tmp/parse_telefon.sh "${LINE}" "${CALLER}" [B][COLOR="Red"]&[/COLOR][/B]

2.
Code:
name=$(echo "$temp" | sed -n -e 's/<[^<]*>/\ /g; s/^[^a-zA-Z0-9]*//g;[B][COLOR="Red"] 1p'[/COLOR][/B])

3.
Code:
name=${[COLOR="Red"]entry%%\;*[/COLOR]}
address=${[COLOR="Red"]entry#*\;[/COLOR]}
address=${[COLOR="Red"]address%\;*[/COLOR]}
street=${[COLOR="Red"]address%%\;*[/COLOR]}
zip=${[COLOR="Red"]address##*\;[/COLOR]}

Trotzdem DANKE für deine Hilfe
 
@Marco

habs jetzt hinbekommen, dass es läuft. War wohl wieder irgendein falscher Zeilenumbruch.

Trotzdem hätte ich noch eine kleine Programmierhilfe von Dir gebraucht, wenn es ginge.
Und zwar wird im callmessage.sh die ADDRESS wie folgt ausgegeben (also Leerzeichen nach dem ";")

Code:
cat address
strasse 1; 12345 stadt

mit
Code:
street=${address%%\;*}
wird die strasse richtig extrahiert
aber mit
Code:
zip=${address##*\;}
bleibt vor und hinter der stadt jeweils ein unschönes Leerzeichen,
Code:
_12345 stadt_
Das hintere ist kein Problem, aber das erste würde ich gerne löschen, denn die Anzeige auf der Dreambox ist dadurch bei der Stadt um eine Stelle nach rechts verschoben.

Dafür gibts doch sicher ne schnelle Lösung oder? Bin leider in der Richtung ein wenig eitel :blonk:
 
juwo

könntest du vielleicht deine debug.cfg hier posten so wie sie im Moment aussieht.
 
bitteschön,

das eine oder andere ist vielleicht nicht besonders schön programmiert, aber es funzt nun wie es soll!
suche in der debug.cfg nach xxxxxx, dann kannst du deine persönlichen Angaben abändern. Oder noch besser, du installierst das pseudo-Image von "the construct" und änderst dann die debug.cfg im Bereich callmessage.sh und invers.sh entsprechend ab.
GANZ WICHTIG: Windows und Linux unterscheiden sich bei den Zeilenumbrüchen. Daher ist es gut, das Pseudo-Image zu installieren. Ich bin immer reingefallen, wen ich etwas auf Windows geändert habe und dann auf die Fritz kopierte, bis hin zum totalverlust der debug.cfg

Gruß
Jürgen
 

Anhänge

  • debug.cfg.txt
    6.3 KB · Aufrufe: 26
Zuletzt bearbeitet:
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.