9 Commits

5 changed files with 8128 additions and 1870 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

@@ -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'):

File diff suppressed because it is too large Load Diff

View File

@@ -4,20 +4,25 @@ python-dotenv
xmltodict xmltodict
smbprotocol smbprotocol
pydub pydub
audioop-lts
# for matrix-commander # for matrix-commander
aiohttp aiohttp
aiofiles #<0.5.0,>=0.4.0 aiofiles #>=0.6.0
argparse argparse
asyncio asyncio
async-timeout
atomicwrites atomicwrites
cachetools cachetools
datetime datetime
emoji
markdown markdown
matrix-nio[e2e]>=0.18.3 matrix-nio[e2e]>=0.18.3
notify2
peewee peewee
Pillow Pillow
python-magic python-magic
pyxdg
uuid uuid