callmonitor gegen callmessage-script

donatello

Neuer User
Mitglied seit
1 Aug 2008
Beiträge
20
Punkte für Reaktionen
0
Punkte
0
kurz informiert:

wir nutzten bis zu letzt immer das callmessage-script, welches über das pseudo-image von the-construct.com erzeugt wurde, um rufnummern und bilder von anrufern im XBMC (mediacenter für xbox1, linux, mac, windows) anzeigen zu lassen.
dazu mußte einiges editiert werden:

-----------------------------------------------------------------------------------------

1. Pseudo-image mit "callmessage"-skript und telnet erstellen.
1a) Image auspacken und die Install mit dem Texteditor bearbeiten. Danach wieder einpacken.

2) Image flashen.
2a) (alternativ zu 1a) per telnet auf die fritzbox und script dort bearbeiten. z.B. mit "vi"

Es geht dabei eigentlich nur um das "callmessage.sh", das liegt nach dem flashen in /var/tmp/callmessage.sh bzw. beginnt im pseudo image mit
Code:
# write send script to file
cat > /var/tmp/callmessage.sh << 'ENDCALLMESSAGE'
...
ENDCALLMESSAGE
Diese Zeilen ändern:
Ort des Telefonbuchs, damit man jederzeit Änderungen durchführen kann:
# search name in contact list
entry=`cat /var/flash/debug.cfg 2>/dev/null | fgrep "#contact=${caller}:" | sed "s/#contact=${caller}://"`
nach
# search name in contact list
entry=`cat /var/media/ftp/WinFast-Disk128MB-01/contacts.txt 2>/dev/null | fgrep "#contact=${caller}:" | sed "s/#contact=${caller}://"`
... bei Bedarf ebenso in den andern Zeilen.

und die notification für die xbox:

wget -O /dev/null "http://192.168.2.30/xbmcCmds/xbmcHttp?command=ExecBuiltIn&parameter=XBMC.Notification(Eingehender%20Anruf,Anrufer%3A%0A${httpname}%0A${httpstreet}%0A${httpzip}%0A%0ALeitung%3A%20${httptheline})" >/dev/null 2>&1 &
wget -O /dev/null "http://192.168.2.30/xbmcCmds/xbmcHttp?command=ExecBuiltIn&parameter=XBMC.Notification(${name},"eingehender%20Anruf.",5000,q:\\media\\$caller.png)" >/dev/null 2>&1 &

Das Telefonbuch, also die contacts.txt, liegt jetzt auf einem USB-Stick, kann natürlich auch irgendwo anders auf der fritzbox liegen, muss nur der Pfad angepasst werden.
Das Format (der nervige Teil):
Code:
#CONTACTS
#contact=:anonym;
#contact=0123456789:C .M. Burns;Strasse;PLZ Stadt;
#CONTACTSEND

#LINES
#line=:anonym;
#line=SIP0:Sipgate;
#LINESEND

Am Ende muss noch das Popup vom skin bearbeitet werden, zumindest im PM3 war es viel zu klein.
Das wird im skin in DialogKaiToast.xml definiert. (und einen grösseren font in fonts.xml)

-----------------------------------------------------------------------------------------

mit dem callmonitor bekomme ich das einfach nicht auf die reihe.
außer einem "pause" bei anrufern konnte ich keine aktion erreichern:

Code:
in:request ^ ^ wget "http://192.168.1.20:8080/xbmcCmds/xbmcHttp?command=Pause"

was mache ich falsch?
welche befehle kann ich "so" nicht im callmonitor verwenden?
 
yup. kenne ich.
der großteil beruht ja auf genau den scripts (die aber alle vom xbmc aus gestartet werden).
das script hat außerdem den fehler, dass es keine namen anzeigt.

die idee hinter dem editieren des callmessage-scritp ist ja, dass kein script mehr auf dem xbmc laufen muss.

die fritzbox überträgt mit dem callmonitor die information per "xboxmessage" an das xbmc.
das funktioniert so weit auch.
nur müßten jetzt noch die bilder mit angezeigt werden.

Code:
XBMC.Notifi cation(${name},"eingehender%20Anruf.",5000,q:\\media\\$ca ller.png)"

haben wir ja anstatt xboxmessage verwendet, damit eben auch bilder mit angezeigt werden.
 
Kannst das callmessenger script hier veröffentlichen oder mir zukommen lassen? Leider gibts die Construct Seite ja nicht mehr...
 
Joop, ausm Streamboard....

Ich werd mal alte bekannte besuchen gehen. Das sind Sammler von Daten... Evlt ist da was dabei...

Bei Archive.org ist kein ganzes abbild der Seite, leider... Wäre zu schön gewesen, wenn die Scripte von the-construct irgendwo als open-source noch wären..
 
Darf ich euch mal fragen, was "the-construct"-Sachen mit freetz zu tun haben, ausser dass sie sich mit der selben Hardware beschäftigen?
 
mit freetz hat es nichts zu tun, eventuell Thema verschieben ;-)

ich suche auch dieses script wie damals bei der construct seite, wäre nicht schlecht wenn jemand den Code posten könnte.
 
"leere" debug.cfg mit meiner Anpassung von gestern und allen Skripten. Achung: Zeilenumbrüche!!
und das ist für die Dreambox und läuft auf einer 7270

Code:
#!/bin/sh

LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led  ] ; then
  LED_DEVICE=/var/led
  echo "set led: ${LED_DEVICE}"
fi
# start internet phone led flashing
echo "set internet phone led to blink (modul=14, state=3)"
echo 14,3 > ${LED_DEVICE}

# check kernel version
KERNEL_VERSION=`uname -r | grep 2.6`
if [ -z "${KERNEL_VERSION}" ]
then
  KERNEL_VERSION="linux24"
  ETHERWAKE="etherwake"
else
  KERNEL_VERSION="linux26"
  ETHERWAKE="ether-wake"
fi

# init busybox var
BUSYBOX="/bin/busybox"

# wait to be able to interrupt in case of emergency
sleep 120

if [ -z "$(busybox | grep telnetd)" ]
then
  while !(ping -c 1 ftp.the-construct.com)
  do
    sleep 5
  done
  # check if file already exists
  if [ ! -f /var/tmp/busybox ]
  then
    wget -qO /var/tmp/busybox http://ftp.the-construct.com/files/${KERNEL_VERSION}/busybox
    # make it executable
    chmod +x /var/tmp/busybox
  fi
  # set busybox var
  BUSYBOX="/var/tmp/busybox"
fi
# start telnet deamon with password of web gui
${BUSYBOX} telnetd -l /sbin/ar7login

major=`grep tffs /proc/devices`
tffs_major=${major%%tffs}

#write calllog
cat > /var/calllog << 'ENDCALLLOG'
#!/bin/sh

CALLER=${1}
LINE=${3}
if [ -z "${LINE}" ]
then
  LINE=${2}
fi
if [ "${LINE}" = "ISDN" ]
then
  LINE=${2}
fi
if [ -z "${LINE}" ]
then
  LINE=${1}
  CALLER=""
fi

sh /var/tmp/parse_telefon.sh "${LINE}" "${CALLER}" &

ENDCALLLOG

# save /var/calllog
mknod /var/flash/calllog c $tffs_major $((0x77))
cp /var/calllog /var/flash/calllog

#CONTACTS
#contact=:anonym;
#CONTACTSEND

#LINES
#line=:anonym;
#line=Nummer1:TELEFON;
#line=Nummer2:FAX;
#LINESEND

# write reverse lookup script to file
cat > /var/tmp/invers.sh << 'ENDINVERS'
#!/bin/sh
#adapted 20120125 - juwo - ip-phone-forum.de

number="$1"

url="http://www.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 0 "var data")
echo "${temp}" > /var/tmp/page
sList=`echo $temp | sed 's/\',\ \'/"\n"/g'`

name=$(echo "$sList" | sed -n '6p')
name=$(echo "$name" | sed 's/\(^.*\"\)\(.*\)\(\".*$\)/\2/')
name=$(echo "$name" | sed 's/&/u./g' | sed 's/\%20/ /g' | sed 's/-/ /g' | sed 's/,/u./g')
name=`echo ${name} | tr -d "\f\n\r\t\v\a\b!\"$%&/()='"`
echo "${name}"
echo "${name}" > /var/tmp/name

street=$(echo "$sList" | sed -n '7p8p')
street=$(echo "$street" | sed 's/\(^.*\"\)\(.*\)\(\".*$\)/\2/')
city=$(echo "$sList" | sed -n '4p5p')
city=$(echo "$city" | sed 's/\(^.*\"\)\(.*\)\(\".*$\)/\2/')

addr=$(echo "$street; $city")
addr=$(echo "$addr" | sed 's/&/u./g' | sed 's/\%20/ /g' | sed 's/-/ /g')
addr=`echo ${addr} | tr -d "\f\n\r\t\v\a\b!\"$%&/()='"`
echo "${addr}"
echo "${addr}" > /var/tmp/address

ENDINVERS

# 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}
caller_nr=$caller
anruf=`date +"Zeit%3A%20%d.%m.%Y%20%H%3A%M%3A%S%20Uhr"`

# 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##*\;}
zip=`echo "$zip" | sed 's/^ *//;s/ *$//'`

# 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?
  if [ -n "${name}" ]
  then
    # add found contact to debug.cfg
    address=`cat /var/tmp/address`
    street=${address%%\;*}
    zip=${address##*\;}
    zip=`echo "$zip" | sed 's/^ *//;s/ *$//'`
    cat /var/flash/debug.cfg | sed -e "s/^#CONTACTSEND$/#contact=${caller}:${name};${address};#CONTACTSEND/g" | sed -e 's/#CONTACTSEND$/\
#CONTACTSEND/g' > /var/tmp/debug.cfg
  else
    # add anonymous for contact to debug.cfg
    cat /var/flash/debug.cfg | sed -e "s/^#CONTACTSEND$/#contact=${caller}:${caller};#CONTACTSEND/g" | sed -e 's/#CONTACTSEND$/\
#CONTACTSEND/g' > /var/tmp/debug.cfg
  fi
  cp /var/tmp/debug.cfg /var/flash/debug.cfg
# rm /var/tmp/debug.cfg
fi

# name not found?
if [ -z "${name}" ]
then
  name=${caller}
fi
httpname=`echo "${name}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
httpstreet=`echo "${street}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
httpzip=`echo "${zip}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`
echo "Name: ${name}"
echo "Strasse: ${street}"
echo "PLZ: ${zip}"

# search line in line list
theline=`cat /var/flash/debug.cfg 2>/dev/null | fgrep "#line=${called}:" | sed "s/#line=${called}://"`
theline=${theline%%\;*}

# line not found?
if [ -z "${theline}" ]
then
  theline=${called}
fi
httptheline=`echo "${theline}" | sed -e '{s/ /%20/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/&/%26/g;}'`

# Send information to all DHCP clients
while read x x IP x
do
  wget -O /dev/null "http://${IP}:23232/?caller=${caller}&called=${called}&name=${name}&line=${theline}" >/dev/null 2>&1 &
done < /var/flash/multid.leases

# send information to DreamBoxes
wget -O /dev/null "http://192.168.178.70/cgi-bin/xmessage?timeout=60&caption=Eingehender%20Anruf&body=Anrufer%3A%0A${httpname}%0A${httpstreet}%0A${httpzip}%0A%0ALeitung%3A%20${httptheline}%0ANummer%3A%20${caller_nr}%0A${anruf}" >/dev/null 2>&1 &

sleep 3
killall wget
ENDCALLMESSAGE

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

# write dummy WakeOnCall script
echo "#!/bin/sh" > /var/tmp/woc.sh
# make it executable
chmod +x /var/tmp/woc.sh

# write parse_telefon script to file
cat > /var/tmp/parse_telefon.sh << 'ENDPARSETEL'
#!/bin/sh

trap "" SIGCHLD

prefix=01234 #Vorwahlnummer
caller="$2"
called="$1"
called=${called%%#*}

# normalize caller
case ${caller} in
  0049*)
    caller=0${caller#*0049}
  ;;
  49????????*)
    caller=0${caller#*49}
  ;;
  [1-9]????????*)
    caller=0${caller}
  ;;
  [1-9]*)
    caller=${prefix}${caller}
  ;;
esac

# exec woc.sh
/var/tmp/woc.sh ${called} ${caller} &
# exec callmessage.sh
/var/tmp/callmessage.sh ${called} ${caller} &

ENDPARSETEL

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

# stop internet phone led flashing
echo 14,1 > ${LED_DEVICE}
 
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.