9 Commits

5 changed files with 28 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__
@@ -67,4 +69,4 @@ Especially to
* https://github.com/jiaaro/pydub/ * https://github.com/jiaaro/pydub/
* https://git.savannah.nongnu.org/cgit/fbvbconv-py.git/ * https://git.savannah.nongnu.org/cgit/fbvbconv-py.git/

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

@@ -70,13 +70,20 @@ def get_last_call():
except: except:
print("Couldn't connect to Box") print("Couldn't connect to Box")
missed_calls = fc.get_missed_calls(False,1,1) missed_calls = fc.get_missed_calls(False,1,1)
return missed_calls[0]
if len(missed_calls) > 0:
return missed_calls[0]
else:
return False
def lastcall2matrix(tam,tam_no): def lastcall2matrix(tam,tam_no):
# Call Watch to Matrix # Call Watch to Matrix
if env_call_watch and not at_least_one_new_message: if env_call_watch and not at_least_one_new_message:
c = get_last_call() c = get_last_call()
c_msg = "{} - {} ({})".format(c.Date, c.Caller, c.Name) if c:
c_msg = "{} - {} ({})".format(c.Date, c.Caller, c.Name)
else:
return False
# ... and send message and file to Matrix Room # ... and send message and file to Matrix Room
## if Number of a TAM and the last call match ## if Number of a TAM and the last call match

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,9 +15,9 @@ 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
uuid uuid