Compare commits
11 Commits
3b2fc819ce
...
v0.1.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 9e6e294491 | |||
| 57243129a3 | |||
| 1aa3662f39 | |||
| d79b70213b | |||
| 631957e55f | |||
| 0ef1ea3f43 | |||
| adc9eb0a3b | |||
| 8c4bb4e452 | |||
| 8c79991ae7 | |||
| 2f827d594c | |||
| 821e44e130 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -144,3 +144,4 @@ credentials*
|
|||||||
|
|
||||||
# emacs
|
# emacs
|
||||||
*~
|
*~
|
||||||
|
\#*\#
|
||||||
|
|||||||
@@ -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!**
|
* 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.
|
* 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.
|
* 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*`.
|
* 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.
|
* 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.
|
* 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`.
|
* Make it a virtual environment by `python3 -m venv <new folder>` and `source <new folder>/bin/activate`.
|
||||||
* `cd <new folder>`
|
* `cd <new folder>`
|
||||||
* Clone the repo.
|
* 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:
|
* Create an `.env` file with your favourite editor:
|
||||||
```
|
```
|
||||||
FRITZ_USERNAME="fritzab"
|
FRITZ_USERNAME="fritzab"
|
||||||
FRITZ_PASSWORD="SomeRand0mPa55word"
|
FRITZ_PASSWORD="SomeRand0mPa55word"
|
||||||
FRITZ_IP="192.168.178.1"
|
FRITZ_IP="192.168.178.1"
|
||||||
|
FRITZ_VOICEBOX_PATH="fritz.nas/FRITZ/voicebox"
|
||||||
FRITZ_TMP="/tmp"
|
FRITZ_TMP="/tmp"
|
||||||
```
|
```
|
||||||
__.env__
|
__.env__
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
from fritzconnection import FritzConnection
|
from fritzconnection import FritzConnection
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
@@ -17,11 +17,16 @@ load_dotenv()
|
|||||||
env_user = os.environ.get('FRITZ_USERNAME')
|
env_user = os.environ.get('FRITZ_USERNAME')
|
||||||
env_pass = os.environ.get('FRITZ_PASSWORD')
|
env_pass = os.environ.get('FRITZ_PASSWORD')
|
||||||
env_ip = os.environ.get('FRITZ_IP')
|
env_ip = os.environ.get('FRITZ_IP')
|
||||||
|
env_voicebox = os.environ.get('FRITZ_VOICEBOX_PATH')
|
||||||
env_tmp = os.environ.get('TEMP_DIR')
|
env_tmp = os.environ.get('TEMP_DIR')
|
||||||
|
|
||||||
|
if env_voicebox is None:
|
||||||
|
env_voicebox = "/fritz.nas/FRITZ/voicebox/"
|
||||||
|
|
||||||
if env_tmp is None:
|
if env_tmp is None:
|
||||||
env_tmp = "/tmp"
|
env_tmp = "/tmp"
|
||||||
|
|
||||||
def main():
|
def fritzab2matrix():
|
||||||
|
|
||||||
### CHECK AND GET MESSAGES FROM FRITZBOX ###
|
### CHECK AND GET MESSAGES FROM FRITZBOX ###
|
||||||
############################################
|
############################################
|
||||||
@@ -37,9 +42,11 @@ def main():
|
|||||||
message_list_url = message_list['NewURL']
|
message_list_url = message_list['NewURL']
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Build the url to download the message via smb
|
# Build the url to download the message via smb
|
||||||
def build_download_url(mid, tam=0):
|
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
|
return url
|
||||||
|
|
||||||
def download_speex_file(smb_url):
|
def download_speex_file(smb_url):
|
||||||
@@ -56,12 +63,21 @@ def main():
|
|||||||
messages = xmltodict.parse(doc)
|
messages = xmltodict.parse(doc)
|
||||||
return messages
|
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
|
# format the information regarding the message
|
||||||
msg_info = a['Date'] + " - " + a['Number']
|
msg_info = a['Date'] + " - " + a['Number']
|
||||||
if len(a['Name']) > 1:
|
if a['Name']:
|
||||||
msg_info += " (" + a['Name'] + ") "
|
msg_info += " (" + a['Name'] + ") "
|
||||||
|
|
||||||
# format the string for sound file's meta information
|
# format the string for sound file's meta information
|
||||||
@@ -109,22 +125,16 @@ def main():
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
continue
|
continue
|
||||||
### Monitor the FritzBox and trigger the main script whenever a call disconnects ###
|
|
||||||
###################################################################################
|
|
||||||
endedCall(main, env_ip)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
|
||||||
print("I enter the main loop ...")
|
|
||||||
while main():
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
print("I left the main loop!")
|
|
||||||
|
|
||||||
except:
|
fritzab2matrix()
|
||||||
print("An erroneous error happened!")
|
### Monitor the FritzBox and trigger the main script whenever a call disconnects ###
|
||||||
|
###################################################################################
|
||||||
|
endedCall(fritzab2matrix, env_ip)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user