13 Commits

Author SHA1 Message Date
f537edc4cb Script failed when Callers Number was empty i.e. NoneType. Put a['Number'] into str() fixed this. 2021-10-08 09:22:15 +02:00
63a3dee8fd Raised sleep to 10 because 5secs didn't suffice obviously. 2021-07-22 18:20:38 +02:00
558ed192d9 Merge branch 'master' of https://git.ismus.net/homer77/FritzAB2Matrix 2021-07-22 09:32:58 +02:00
2b65daff7f Fixed issue #8 by adding a 5sec delay with time.sleep(5) to multitam(). Request for messages was too fast so that the new message wasn't in it yet. 2021-07-22 09:31:59 +02:00
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
5 changed files with 39 additions and 15 deletions

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:1 # syntax=docker/dockerfile:1
FROM alpine:latest FROM python:alpine
ENV TZ=Europe/Berlin ENV TZ=Europe/Berlin
ENV UNBUFFERED=1 ENV UNBUFFERED=1
@@ -11,10 +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/sh -c 'apk update && apk add --no-cache gcc musl-dev python3-dev py3-wheel py3-pip py3-olm libffi-dev openssl-dev cargo zlib-dev jpeg-dev libmagic speex ffmpeg htop; \ apk --no-cache update && apk add --no-cache --virtual .build-deps \
pip install update pip && pip install -r requirements.txt ; \ gcc \
apk del zlib-dev jpeg-dev gcc musl-dev python3-dev openssl-dev cargo;' cargo \
libffi-dev \
openssl-dev \
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 ["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: /bin/sh -c "export UNBUFFERED=1 && python3 -u ./fritzab2matrix.py" # entrypoint: /bin/sh -c "export UNBUFFERED=1 && python3 -u ./fritzab2matrix.py"
volumes: volumes:
- ../.:/app - ../.:/app

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
@@ -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
@@ -90,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 ###
############################################ ############################################
@@ -118,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'] + ") "
@@ -166,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,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