18 Commits

Author SHA1 Message Date
114e9c3e49 Conditional clauses: Only start script on incoming calls. 2021-07-16 21:41:49 +02:00
3a32e64719 Merge branch 'master' into everycall 2021-07-16 20:54:48 +02:00
97eb34814f Some more fixes on docker build related files. 2021-07-14 21:44:11 +02:00
60adf393ef Further corrections on docker build related files. 2021-07-14 21:08:24 +02:00
d91095dcf8 olm-dev was missing in the Dockerfile to build cryptography of matrix-commander. 2021-07-14 20:30:06 +02:00
1949f9f84a Corrected the python-magic item (typo). Also if one doesn't upgrade the requirements matrix-nio won't work. 2021-07-14 19:29:28 +02:00
b7fdd6e0e6 Added some condtions to prevent script from breaking if list of missed calls is empty. 2021-07-14 19:27:39 +02:00
6652def351 Merge branch 'docker' 2021-07-11 16:29:12 +02:00
7c299786f0 Reduced image size furtherly. Now 329MB and based on python:alpine. 2021-07-11 16:23:13 +02:00
31cd42b43c Merge branch 'everycall' of https://git.ismus.net/homer77/FritzAB2Matrix into everycall 2021-07-10 23:06:33 +02:00
01f450fca9 Some dependencies were missing to successfully build the docker image. 2021-07-10 23:00:39 +02:00
dbc54f595e Updated README regarding missed call feature. 2021-07-10 18:52:01 +02:00
22af5f80eb Get branch to state of master. 2021-07-10 18:42:18 +02:00
7e2ef5822d Uncommented deletion of not longer needed packages from docker image. 2021-07-10 10:22:04 +02:00
63004853a3 Merge pull request 'Changed base image to alpine:latest.' (#10) from docker into master
Reviewed-on: #10
2021-07-10 09:12:31 +02:00
2462cba3c4 Changed base image to alpine:latest. 2021-07-10 09:08:58 +02:00
002858c7cc Erroneously had functions twice in code after merge and deleted them. 2021-07-08 22:50:30 +02:00
134e966ed9 Minor markdown correction 2021-07-08 00:03:48 +02:00
6 changed files with 45 additions and 27 deletions

View File

@@ -4,7 +4,8 @@ __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

@@ -1,8 +1,9 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM ubuntu:latest FROM python:alpine
ENV TZ=Europe/Berlin ENV TZ=Europe/Berlin
ENV UNBUFFERED=1
WORKDIR /app WORKDIR /app
VOLUME /app VOLUME /app
@@ -10,23 +11,20 @@ VOLUME /app
COPY . . COPY . .
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone; \ RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone; \
/bin/bash -c 'apt update && apt install -y libolm-dev python3-pip ffmpeg htop; \ apk --no-cache update && apk add --no-cache --virtual .build-deps \
pip install update pip && pip install -r requirements.txt ;' gcc \
cargo \
libffi-dev \
openssl-dev \
ENTRYPOINT ["./fritzab2matrix.py "] olm-dev \
zlib-dev \
jpeg-dev ; \
apk add --no-cache olm libmagic ffmpeg speex; \
pip install pip -U --no-cache-dir; \
pip install --no-cache-dir -r requirements.txt ; \
apk del --no-cache .build-deps;
# ENTRYPOINT ["python3", "-u", "fritzab2matrix.py"]
ENTRYPOINT /bin/sh -c "export UNBUFFERED=1 && python3 -u ./fritzab2matrix.py"

View File

@@ -7,7 +7,7 @@ services:
context: ../. context: ../.
dockerfile: ./docker/Dockerfile dockerfile: ./docker/Dockerfile
working_dir: /app working_dir: /app
entrypoint: ./fritzab2matrix.py # entrypoint: /bin/sh -c "export UNBUFFERED=1 && python3 -u ./fritzab2matrix.py"
volumes: volumes:
- ../.:/app - ../.:/app

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

@@ -1,3 +1,4 @@
fritzconnection fritzconnection
python-dotenv python-dotenv
xmltodict xmltodict
@@ -7,13 +8,16 @@ pydub
# for matrix-commander # for matrix-commander
aiohttp aiohttp
aiofiles<0.5.0,>=0.4.0 aiofiles #<0.5.0,>=0.4.0
argparse argparse
asyncio asyncio
atomicwrites
cachetools
datetime datetime
markdown markdown
matrix-nio[e2e]>=0.14.1 matrix-nio[e2e]>=0.18.3
peewee
Pillow Pillow
python_magic python-magic
uuid uuid