13 Commits

Author SHA1 Message Date
9e6e294491 Fixed #4 by appending a single message to list. 2021-07-01 20:44:29 +02:00
57243129a3 gitignore emacs autosave files 2021-07-01 19:32:42 +02:00
1aa3662f39 Corrected README.md
I used the wrong option with pip install. Now it's correctly pip install --upgrade pip.
2021-07-01 09:51:43 +02:00
d79b70213b Corrected the FRITZ_VOICEBOX_PATH. 2021-07-01 00:37:23 +02:00
631957e55f Additional remark about the FRITZ_VOICEBOX_PATH variable and use of USB storage with the TAM." 2021-07-01 00:18:02 +02:00
0ef1ea3f43 Corrected hashbang to /usr/bin/env python3 because the docker file couldn't interpret only 'python' ... 2021-07-01 00:04:06 +02:00
adc9eb0a3b Changed main() to fritzab2matrix.py to not to mix up with the __main__ function. Also removed the while loop in the latter which didn't work despite of the recursive function. Also removed the recursive ended_call(main, env_ip) because that broke the script on one tested machine. 2021-06-30 23:36:51 +02:00
8c4bb4e452 Add check if message_list is empty before entering for loop. 2021-06-30 23:21:43 +02:00
8c79991ae7 a['Name'] doesn't get an empty string but type None. So a check for its length led to a failure. 2021-06-30 21:54:50 +02:00
2f827d594c I forgot to pull before I updated file.
Merge branch 'master' of ssh://git.ismus.net:2222/homer77/FritzAB2Matrix
2021-06-30 21:06:19 +02:00
821e44e130 Added env variable FRITZ_VOICEBOX_PATH 2021-06-30 21:06:06 +02:00
3b2fc819ce Merge branch 'master' of https://git.ismus.net/homer77/FritzAB2Matrix 2021-06-30 20:13:26 +02:00
4d03ec33d9 Added truncation for credentials keyword 2021-06-30 20:11:45 +02:00
3 changed files with 33 additions and 20 deletions

3
.gitignore vendored
View File

@@ -140,7 +140,8 @@ cython_debug/
# matrix-commander
/store
credentials.json
credentials*
# emacs
*~
\#*\#

View File

@@ -10,6 +10,7 @@ If you like to test this repository you are recommended to use one of the follow
* Create a new user (e.g. "fritzab") in your _Fritz!Box_. **Don't use your default admin account!**
* This user needs only the privileges regarding voice messages and to read from box's storage.
* As you only need to access the _FRITZ/voicebox/rec/_ path you should remove the right to read and write everything and add only this path and only with reading privilege.
* __Beware!__ If you use a USB device as expanded storage for your _Fritz!Box_ and allowed the TAM to use it for storing more messages you will need another path (e.g. _Storage-01/FRITZ/voicebox/rec/_). You also have to add the FRITZ_VOICEBOX_PATH variable in your _.env_ file (see below) according to that difference.
* You have to activate __Call Monitoring__ on your _Fritz!Box_ by using one of the connected phones and call `#96*5*`.
* Call monitoring watches the box and the __FritzAB2Matrix__ is triggered every time a call disconnects.
* If you cannot activate Call Monitoring the only way to use __FritzAB2MAtrix__ will be to have a cron job call it regularly.
@@ -19,12 +20,13 @@ If you like to test this repository you are recommended to use one of the follow
* Make it a virtual environment by `python3 -m venv <new folder>` and `source <new folder>/bin/activate`.
* `cd <new folder>`
* Clone the repo.
* Inside the repo run `pip install --update pip && pip install -r requirements.txt`
* Inside the repo run `pip install --upgrade pip && pip install -r requirements.txt`
* Create an `.env` file with your favourite editor:
```
FRITZ_USERNAME="fritzab"
FRITZ_PASSWORD="SomeRand0mPa55word"
FRITZ_IP="192.168.178.1"
FRITZ_VOICEBOX_PATH="fritz.nas/FRITZ/voicebox"
FRITZ_TMP="/tmp"
```
__.env__

View File

@@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
from fritzconnection import FritzConnection
from dotenv import load_dotenv
@@ -17,11 +17,16 @@ load_dotenv()
env_user = os.environ.get('FRITZ_USERNAME')
env_pass = os.environ.get('FRITZ_PASSWORD')
env_ip = os.environ.get('FRITZ_IP')
env_voicebox = os.environ.get('FRITZ_VOICEBOX_PATH')
env_tmp = os.environ.get('TEMP_DIR')
if env_voicebox is None:
env_voicebox = "/fritz.nas/FRITZ/voicebox/"
if env_tmp is None:
env_tmp = "/tmp"
def main():
def fritzab2matrix():
### CHECK AND GET MESSAGES FROM FRITZBOX ###
############################################
@@ -37,9 +42,11 @@ def main():
message_list_url = message_list['NewURL']
# Build the url to download the message via smb
def build_download_url(mid, tam=0):
url = r"//" + env_ip + r"/fritz.nas/FRITZ/voicebox/rec/rec." + str(tam) + r"." + str(mid).zfill(3)
recording = "rec." + str(tam) + r"." + str(mid).zfill(3)
url = os.path.join("//",env_ip,env_voicebox,"rec",recording)
return url
def download_speex_file(smb_url):
@@ -56,12 +63,21 @@ def main():
messages = xmltodict.parse(doc)
return messages
l = get_message_list(message_list_url)
if l['Root'] == None or l['Root']['Message'] == None:
return False
else:
messages = l['Root']['Message']
if type(messages) is not list:
m = []
m.append(messages)
messages = m
for a in get_message_list(message_list_url)['Root']['Message']:
for a in messages:
# format the information regarding the message
msg_info = a['Date'] + " - " + a['Number']
if len(a['Name']) > 1:
if a['Name']:
msg_info += " (" + a['Name'] + ") "
# format the string for sound file's meta information
@@ -109,22 +125,16 @@ def main():
continue
continue
### Monitor the FritzBox and trigger the main script whenever a call disconnects ###
###################################################################################
endedCall(main, env_ip)
if __name__ == "__main__":
try:
print("I enter the main loop ...")
while main():
pass
else:
print("I left the main loop!")
except:
print("An erroneous error happened!")
fritzab2matrix()
### Monitor the FritzBox and trigger the main script whenever a call disconnects ###
###################################################################################
endedCall(fritzab2matrix, env_ip)