Callattendant Versions Save

A python-based automated call attendant, call blocker, and voice messaging system running on a Raspberry Pi. Screens callers and block robocalls and scams with a low-cost Raspberry Pi and modem.

v1.1.0

3 years ago

Date

17-NOV-2020

Release Summary

This is v1.1 of the Call Attendant (callattendant) . This includes support for countries other than the default USA. International support is through configurable phone number formatting options and the ability to disable the NomoRobo lookup service. This release also includes support for Conextant based modems like the Zoom Model 3095 Data/Fax Modem.

Associated GitHub Issues

Description Type Issue #
Add support for Zoom Model 3095 Data/Fax modem enhancement #94
Add support for other countries enhancement #99
Add permitted name/number regex patterns enhancement #117
Call Log search is broken with non-numeric phone numbers bug #114
No blocked call hang up if BLOCKED_ACTIONS = () bug #126
+VSD Silence Detection command not working on Conextant-based modems bug #116
Handle missing caller id data task #120
Make the online lookup service configurable task #113
Make phone number display mask configurable task #112
Remove phone number input mask task #111
Add .desktop shortcuts to setup.py package install task #109
Refactor Modem class task #10

Known Issues

Description Type Issue #
None

User Facing Changes

  • Configuration options have changed. New configuration settings have been added:
    • PERMIT_NAME_PATTERNS
    • PERMIT_NUMBER_PATTERNS
    • PHONE_DISPLAY_FORMAT
    • PHONE_DISPLAY_SEPARATOR
    • BLOCK_SERVICE
  • Removed USA phone number format restrictions from Add Permitted Number and Add Blocked Number dialogs.
  • Alpha characters now allowed in phone numbers.
  • Countries other than the USA should set BLOCK_SERVICE="" to disable the US-based lookup service.

Install/Update/Removal

Install/Update

pip is used to install and update the callattendant

pip install callattendant

Removal

pip uninstall callattendant

Operation

Command Line Options

A new callattendant script is placed on the system path. Use this command to start the software without specifying "python".

Usage: callattendant --config [FILE] --data-path [FOLDER]
Options:
-c, --config [FILE]       load a python configuration file
-d, --data-path [FOLDER]  path to data and configuration files
-f, --create-folder       create the data-path folder if it does not exist
-h, --help                displays this help text

Data Files

The location of the database and message files is ~/.callattendant. You can override this location via the --data-path command line option.

Running the callattendant with the --create-folder command line option will create the data folder and the initial data.

Configuration file

An example configuration is provided: app.cfg.example. A copy of this file, named app.cfg, is placed in the data folder after the first execution of the software. You can copy/rename this file to match its purpose (e.g., debug.cfg) and edit it to match your preferences.

Documentation

See the project's Wiki pages:

Community

See the project's forum:

v1.0.0

3 years ago

Date

1-SEP-2020

Release Summary

This is v1.0.0 of the Call Attendant (callattendant) . This is the first stable/production release and it includes all of the functionality planned for the system.

  • A call blocker that intercepts robocallers and blocked numbers at or before the first ring
  • Allows permitted numbers pass straight through to the local phone system for normal call ringing and answering
  • Visual indicators (LEDs) show whether the incoming call is from a permitted, blocked or unknown number
  • Call history, permitted and blocked numbers, and voice messages are available in a web-based user interface
  • Calls can be handled by a voice messaging system that optionally requires human interaction, e.g, "Press 1 to leave a message"

Associated GitHub Issues

Description Type Issue #
Package and make installable via PyPi epic #37
Generate end-user documentation in the Wiki enhancement #43
Document LED Wiring task #89
Embellish configuration task #88
Web Interface Improvements task #87
Need to mock the Modem class/object task #81

Known Issues

Description Type Issue #
None.

User Facing Changes

  • Installation has changed. The software is distributed by PyPI is now installed with pip.
  • Data location has changed. The default location for data is now ~/.callattendant, most likely expanded to home/pi/.callattendant
  • Command line has changed. A system-wide command is provided: callattendant [--config <cfg file>]

Operation

Command Line Options

A new callattendant script is placed on the system path. Use this command to start the software without specifying "python".

Usage: callattendant --config [FILE] --data-path [FOLDER]
Options:
-c, --config [FILE]       load a python configuration file
-d, --data-path [FOLDER]  path to data and configuration files
-f, --create-folder       create the data-path folder if it does not exist
-h, --help                displays this help text

Data Files

The location of the database and messages has changed from [application folder]/data/ to ~/.callattendant. This makes the data easier to locate and backup. You can override this location via the --data-path command line option.

If you are upgrading from an earlier release, you should move your database file and messages from the data/ folder after starting and stopping the upgraded callattendant. Running the callattendant with the --create-folder command line option will create the data folder and the initial data. Overwrite the new files with your existing files.

Configuration file

An example configuration is provided: app.cfg.example. A copy of this file, named app.cfg, is placed in the data folder after the first execution of the software. You can copy/rename this file to match its purpose (e.g., debug.cfg) and edit it to match your preferences.

Documentation

See the project's Wiki pages:

Install/Update/Removal

Install/Update

pip is used to install and update the callattendant

pip install callattendant

Removal

pip uninstall callattendant

v0.5

3 years ago

Date

23-AUG-2020

Release Summary

The v0.5 is the Call Attendant (callattendant) release candidate -- ahead of the 1.0 release. This release includes all of the functionality planned for the system.

  • A call blocker that intercepts robocallers and blocked numbers at or before the first ring
  • Allows permitted numbers pass straight through to the local phone system for normal call ringing and answering
  • Visual indicators (LEDs) show whether the incoming call is from a permitted, blocked or unknown number
  • Call history, permitted and blocked numbers, and voice messages are available in a web-based user interface
  • Calls can be handled by a voice messaging system that optionally requires human interaction, e.g, "Press 1 to leave a message"

Associated GitHub Issues

Description Type Issue #
Enable Voice Mail for screened and permitted callers enhancement #62
Add a Settings page enhancement #70
Add name search capability enhancement #78
Change the default location of data to ~/.callattendant task #85
Add confirmation for delete message task #72
Move Unit Tests to a tests folder task #67
"New message" status not reset after playing message bug #71

Known Issues

Description Type Issue #
None.

User Facing Changes

  • Installation has changed. The software is distributed by PyPI is now installed with pip.
  • Data location has changed. The default location for data is now ~/.callattendant, most likely expanded to home/pi/.callattendant
  • Command line has changed. A system-wide command is provided: callattendant [--config <cfg file>]

Operation

Command Line Options

A new callattendant script is placed on the system path. Use this command to start the software without specifying "python".

Usage: callattendant --config [FILE] --data-path [FOLDER]
Options:
-c, --config [FILE]       load a python configuration file
-d, --data-path [FOLDER]  path to data and configuration files
-f, --create-folder       create the data-path folder if it does not exist
-h, --help                displays this help text

Data Files

The location of the database and messages has changed from [application folder]/data/ to ~/.callattendant. This makes the data easier to locate and backup. You can override this location via the --data-path command line option.

If you are upgrading from an earlier release, you should move your database file and messages from the data/ folder after starting and stopping the upgraded callattendant. Running the callattendant with the --create-folder command line option will create the data folder and the initial data. Overwrite the new files with your existing files.

Configuration file

An example configuration is provided: app.cfg.example. A copy of this file, named app.cfg, is placed in the data folder after the first execution of the software. You can copy/rename this file to match its purpose (e.g., debug.cfg) and edit it to match your preferences.

Documentation

See the project's Wiki pages:

Install/Update/Removal

Install/Update

pip is used to install and update the callattendant

pip install callattendant

Removal

pip uninstall callattendant

v0.4

3 years ago

Date

15-AUG-2020

Release Summary

The v0.4 is a beta release of the Call Attendant (callattendant). This release includes the following new features:

  • Responsive User Interface
  • New Dashboard display for the home screen
  • Consistent user experience across web interface
  • Consistent REST API style web addresses for pages
  • Hardware LED support for new message waiting indicator

Associated GitHub Issues

Description Type Issue #
Improve web user interface epic #40
Add Dashboard page enhancement #41
Add CRUD support to Blocked Numbers page enhancement #39
Add CRUD support to the Permitted Numbers page enhancement #38
Add a "New Messages Waiting" LED indicator enhancement #55
Add Call History page enhancement #24
Add ACTION column to call log table task #23
Rerecord Voice Mail .wav files task #65
Refine Call Log task #61
Add a Messages table for tracking voice messages task #59
Default configuration is invalid bug #64
Play Message modal dialog should set message played status bug #63
System sometimes fails to answer call bug #54
Permitted/Blocked name should override CID name in Call Log bug #44
flask_paginate module not found when run as a service bug #42
The Cache table is not used bug #35

Known Issues

Description Type Issue #
Need a Settings page enhancement #70
Need to move Unit Tests to a tests folder task #67
Need to enable Voice Mail for screened and permitted callers enhancement #62

User Facing Changes

User interface changes

  • User interface screens have changed
  • New dashboard page has been added as the home screen
  • Navigation has changed
  • New voice message recordings

Operation

  • This release uses Python 3. On the Raspberry Pi you must use the python3 command to invoke Python 3 (unless you are running in a virtual environment, in which case you can use the python command)
  • The location of the callattendant.db file has changed from src/callattendant.db to data/callattendant.db. If you are upgrading from a v0.2 release, you should move your database file to the data folder before starting the callattendant.

Configuration file

  • An example configuration is provided: src/app.cfg.example. This file should be copied/renamed (e.g., to app.cfg) and edited to match your preferences.

Command Line

  • The command line options have changed to allow the passing in of a configuration file, example:
cd callattendant
python3 src/callattendant.py --config app.cfg

Documentation

See the project's Wiki pages:

Install/Update/Removal

Install

  1. Download Release v0.4.
  2. Unzip the downloaded release. For example, to create the callattendant app under your home folder:
cd
unzip ~/Downloads/callattendant-0.4.zip 
cd callattendant-04

You can rename the callattendant-04 folder if you wish.

Removal

  • Delete the callattendant-04 folder and its contents.

Update

If you are updating from a previous release, you should copy/move the src/callattendant.db file from the previous release to data/callattendant.db in this release.

v0.3

3 years ago

Date

07-AUG-2020

Release Summary

The v0.3 is a alpha release of the Call Attendant (callattendant). This release includes the following new features and bug fixes:

  • Voice Messaging
  • Improved User Interface
  • Configuration Options

Associated GitHub Issues

Description Type Issue #
Add Voice Messaging features epic #28
Play a voice message via web interface enhancement #7
Play pre-recorded message to blocked callers enhancement #15
Add voice messaging menu enhancement #9
Record voice message enhancement #29
Create flexible and robust application configuration enhancement #27
Modem play audio (wav file) fails bug #49
Deprecate whitelist/blacklist terms in favor of permitted/blocked task #26
Add pagination to the call log task #20
Add pagination to the Blocked list task #32
Add pagination to the Permitted list task #33
Add a favicon to the web app pages task #31
Change the mouse cursor to a hand when hovering over a Call Details row task #34
Add metrics to Call Details task #30
Use a configuration file to specify regex call patterns task #21
Port to Python3.x task #36
Validate configuration items task #52

Known Issues

Description Type Issue #
System sometimes fails to answer call bug #54
Must add create/edit/delete support to Blocked Numbers page enhancement #39
Must add create/edit/delete support to the Permitted Numbers page enhancement #38

User interface

  • Menu item names have changed

Operation

  • This release uses Python 3. On the Raspberry Pi you must use the python3 command to invoke Python 3 (unless you are running in a virtual environment, in which case you can use the python command)
  • The location of the callattendant.db file has changed from src/callattendant.db to data/callattendant.db. If you are upgrading from a v0.2 release, you should move your database file to the data folder before starting the callattendant.

Configuration file

  • An example configuration is provided: src/app.cfg.example. This file should be copied/renamed (e.g., to app.cfg) and edited to match your preferences.

Command Line

  • The command line options have changed to allow the passing in of a configuration file, example:
cd callattendant
python3 src/callattendant.py --config app.cfg

Documentation

See the project's Wiki pages:

Install/Update/Removal

Install

  1. Download Release v0.3.
  2. Unzip the downloaded release. For example, to create the callattendant app under your home folder:
cd
unzip ~/Downloads/callattendant-0.3.zip 
cd callattendant-03

You can rename the callattendant-03 folder if you wish.

Removal

  • Delete the callattendant-03 folder and its contents.

Update

If you are updating from a previous release, you should copy/move the src/callattendant.db file from the previous release to data/callattendant.db in this release.

v0.2

3 years ago

Release v0.2 is a functional prototype that establishes the baselined architecture derived from addressing the architecturally significant scenarios. This release demonstrates that the baselined architecture will support the requirements of the system at a reasonable cost and with a reasonable effort.

This release uses the following hardware:

  • The system runs on a Raspberry PI 3 B+
  • The telco interface is a US Robotics 5637 USB modem

This release has implemented several primary use cases:

  • Logs all incoming calls
  • Performs call screening based on a permitted number list, a blocked number list and a Nomorobo robocall and scam lookup service
  • Implements web interfaces for viewing the call log and managing the membership in the permitted number and blocked number lists
    • Call Details: http://localhost:5000
    • Permitted Numbers: http://localhost:5000/whitelist
    • Blocked Numbers: http://localhost:5000/blacklist
    • Manage Caller: http://localhost:5000/manage_caller/[call-number]

Features not implemented yet include:

  • Call attendant phone menu system
  • Recording voice messages
  • Playback of voice messages

v0.1

5 years ago

Release v0.1 is a prototype of the candidate architecture that demonstrates several primary use cases:

  • Prototype runs on a Raspberry PI 3 B+
  • A multi-threaded modem interface to a US Robotics 5637 USB modem
  • Call logging to a SQLite database
  • Call screening based on whitelists, blacklists and Nomorobo service
  • Call screening indicators using Raspberry Pi GPIO pins and LEDs
  • Call blocking
  • View call log in a Flask-based web app