From b2ac69d49fdcb212641e967404d5d2133ce349c2 Mon Sep 17 00:00:00 2001 From: Homer S Date: Sat, 10 Jul 2021 13:40:19 +0200 Subject: [PATCH] Added option to also notify about missed calls. --- .env.sample | 1 + fritzab2matrix.py | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/.env.sample b/.env.sample index b1c8423..c38c867 100644 --- a/.env.sample +++ b/.env.sample @@ -4,3 +4,4 @@ FRITZ_IP="192.168.178.1" FRITZ_TMP="/tmp" FRITZ_VOICEBOX_PATH="fritz.nas/FRITZ/voicebox" FRITZ_TAM='{"0" : "!roomhash1:matrix.org", "1" : "!roomhash2:matrix.org"}' +FRITZ_CALL_WATCH=False diff --git a/fritzab2matrix.py b/fritzab2matrix.py index 0f3698f..1a62c2e 100755 --- a/fritzab2matrix.py +++ b/fritzab2matrix.py @@ -20,8 +20,15 @@ env_pass = os.environ.get('FRITZ_PASSWORD') env_ip = os.environ.get('FRITZ_IP') env_voicebox = os.environ.get('FRITZ_VOICEBOX_PATH') env_tam = json.loads(os.environ.get('FRITZ_TAM')) +env_call_watch = eval(os.environ.get('FRITZ_CALL_WATCH')) env_tmp = os.environ.get('TEMP_DIR') +if env_call_watch is None: + env_call_watch = False +elif env_call_watch: + at_least_one_new_message = False + + if env_voicebox is None: env_voicebox = "/fritz.nas/FRITZ/voicebox/" @@ -29,12 +36,13 @@ if env_tam is None: env_tam = { "0" : "!MxRrNGhFuQwnIeEWnX:ismus.net" } -print(env_tam) +#print(env_tam) if env_tmp is None: env_tmp = "/tmp" + # Build the url to download the message via smb def build_download_url(mid, tam=0): recording = "rec." + str(tam) + r"." + str(mid).zfill(3) @@ -61,8 +69,24 @@ def get_last_call(): fc = FritzCall(address=env_ip,password=env_pass) except: print("Couldn't connect to Box") - missed_calls = fc.get_missed_calls() - return missed_calls.pop() + missed_calls = fc.get_missed_calls(False,1,1) + return missed_calls[0] + +def lastcall2matrix(tam,tam_no): + # Call Watch to Matrix + if env_call_watch and not at_least_one_new_message: + c = get_last_call() + c_msg = "{} - {} ({})".format(c.Date, c.Caller, c.Name) + + # ... and send message and file to Matrix Room + ## if Number of a TAM and the last call match + if tam_no == c.CalledNumber: + cmd = "python3 matrix-commander.py --room {} -m '{}'".format(env_tam[tam],c_msg) + os.system(cmd) + + else: + print("Call Watch is off.") + def fritzab2matrix(tam): @@ -136,6 +160,8 @@ def fritzab2matrix(tam): # Show that message is already read print("__ " + msg_info) + tam_no = a['Called'] + lastcall2matrix(tam,tam_no) @@ -143,8 +169,8 @@ def multitam(tams): for tam in tams.keys(): print("Check TAM {}.".format(tam)) fritzab2matrix(tam) - # if not at_least_one_new_message: - # print(get_last_call()) + + if __name__ == "__main__":