11 Commits

5 changed files with 21 additions and 10 deletions

View File

@@ -5,6 +5,7 @@ __FritzAB2Matrix__ reads out the answering machine (_TAM_) of a _Fritz!Box_ in y
Uses the python based cmd-line-tool [matrix-commander](https://github.com/8go/matrix-commander) so the matrix-commander.py in this repo is just a copy of that file to ease testing. Uses the python based cmd-line-tool [matrix-commander](https://github.com/8go/matrix-commander) so the matrix-commander.py in this repo is just a copy of that file to ease testing.
## Features ## Features
* Since _v0.1.1_ __Multitam__ is integrated so that you can check multiple answering machines __and__ post the messages to different matrix rooms. (Use _FRITZ\_TAM_ variable in .env file) * Since _v0.1.1_ __Multitam__ is integrated so that you can check multiple answering machines __and__ post the messages to different matrix rooms. (Use _FRITZ\_TAM_ variable in .env file)
* Set _FRITZ\_CALL\_WATCH_=True if you want to receive a message everytime you miss a call.
## Installation ## Installation
If you like to test this repository you are recommended to use one of the following two options. If you like to test this repository you are recommended to use one of the following two options.
### Necessary preparations for both cases ### Necessary preparations for both cases
@@ -30,6 +31,7 @@ FRITZ_IP="192.168.178.1"
FRITZ_TMP="/tmp" FRITZ_TMP="/tmp"
# FRITZ_VOICEBOX_PATH="fritz.nas/FRITZ/voicebox" # FRITZ_VOICEBOX_PATH="fritz.nas/FRITZ/voicebox"
FRITZ_TAM='{"0" : "!roomhash1:matrix.org", "1" : "!roomhash2:matrix.org"}' FRITZ_TAM='{"0" : "!roomhash1:matrix.org", "1" : "!roomhash2:matrix.org"}'
FRITZ_CALL_WATCH=False
``` ```
__.env__ __.env__

View File

@@ -16,13 +16,15 @@ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone;
cargo \ cargo \
libffi-dev \ libffi-dev \
openssl-dev \ openssl-dev \
olm-dev \
zlib-dev \ zlib-dev \
jpeg-dev ; \ jpeg-dev ; \
apk add --no-cache ffmpeg speex; \ apk add --no-cache olm libmagic ffmpeg speex; \
pip install --no-cache-dir upgrade pip; \ pip install pip -U --no-cache-dir; \
pip install --no-cache-dir -r requirements.txt ; \ pip install --no-cache-dir -r requirements.txt ; \
apk del --no-cache .build-deps; apk del --no-cache .build-deps;
ENTRYPOINT ["python3", "-u", "fritzab2matrix.py "] # ENTRYPOINT ["python3", "-u", "fritzab2matrix.py"]
ENTRYPOINT /bin/sh -c "export UNBUFFERED=1 && python3 -u ./fritzab2matrix.py"

View File

@@ -8,7 +8,7 @@ from libs.monitoring import endedCall
from libs.message import conversion as conv from libs.message import conversion as conv
import urllib.request import urllib.request
import xmltodict, json import xmltodict, json
import sys, os import sys, os, time
import smbclient import smbclient
@@ -97,7 +97,6 @@ def lastcall2matrix(tam,tam_no):
def fritzab2matrix(tam): def fritzab2matrix(tam):
### CHECK AND GET MESSAGES FROM FRITZBOX ### ### CHECK AND GET MESSAGES FROM FRITZBOX ###
############################################ ############################################
@@ -125,7 +124,7 @@ def fritzab2matrix(tam):
for a in messages: for a in messages:
# format the information regarding the message # format the information regarding the message
msg_info = a['Date'] + " - " + a['Number'] msg_info = a['Date'] + " - " + str(a['Number'])
if a['Name']: if a['Name']:
msg_info += " (" + a['Name'] + ") " msg_info += " (" + a['Name'] + ") "
@@ -173,6 +172,7 @@ def fritzab2matrix(tam):
def multitam(tams): def multitam(tams):
time.sleep(10)
for tam in tams.keys(): for tam in tams.keys():
print("Check TAM {}.".format(tam)) print("Check TAM {}.".format(tam))
fritzab2matrix(tam) fritzab2matrix(tam)

View File

@@ -15,10 +15,17 @@ def watch_disconnect(monitor, event_queue, func, tams, healthcheck_interval=10):
else: else:
# do event processing here: # do event processing here:
print(event) print(event)
if 'DISCONNECT' in event: if 'DISCONNECT;0' in event:
print("Anruf beendet. Jetzt den AB checken.\n") print("Incoming call stopped. Check the TAM.\n")
func(tams) func(tams)
elif 'DISCONNECT;1' in event:
print("Outgoing call stopped. Do nothing.\n")
else:
print("Unknown event.\n")
def endedCall(func, tams, fritz_ip='192.168.1.1'): def endedCall(func, tams, fritz_ip='192.168.1.1'):

View File

@@ -15,7 +15,7 @@ atomicwrites
cachetools cachetools
datetime datetime
markdown markdown
matrix-nio # [e2e]>=0.18.3 matrix-nio[e2e]>=0.18.3
peewee peewee
Pillow Pillow
python-magic python-magic