Close

AutoBlock Software Behavior

A project log for AutoBlock

AutoBlock is IoT product that pairs with an app to block robocalls on all your calling devices.

david-leviDavid Levi 04/30/2017 at 23:060 Comments

Before writing code, it's always a good idea to plan ahead. Below, I've outlined the basic behavior the AutoBlock will follow to decide which calls to let thought.

The AutoBlock will be able to:

Below is a diagram of what happens when the phone line rings:

A ringing phone creates an interrupt service routine (ISR) and sets the processor to follow the above behavior. Once the phone starts ringing, all other interrupts are disabled. Then, the signal from the phone line is recorded. This data is processed and Caller ID info is taken from the Dial Tone or FSK data. In the United States, the caller ID information is sent after the first ring.

Once the incoming phone number has been detected, the system decides whether to block the call. Whitelisted numbers stay connected to the phone line. If it is not on the whitelist, the user's phone (the "Office") is disconnected. The loop switch is closed so that the Autoblock picks up the call. Then, an Audio Captcha tests if the incoming call is from a robot.

The Audio Captcha decides on a random PIN number. It sends audio instructions on what AutoBlock is and how the Audio Captcha works. Then, it sends the PIN numbers by piecing together audio files of spoken numbers. Random background noise is added to make it harder for a computer to turn the audio back into number. The system waits for the correct dial tones to come back, then determines if the incoming caller is human or not.

If the incoming call passes the test, the number is added to the whitelist. Instructions are sent over audio, and the loop switch is opened, ending the call. The newly whitelisted caller can redial and will be directly connected to the user's phone.

One important side case is how to handle calls that come with no caller ID. Almost all of these calls seem to be spam anyway, so the default setting will be to automatically reject these calls. But, if the end user wishes, calls without ID can be handled separately. When a phone line without caller ID passes the Audio Captcha, AutoBlock will be disabled for perhaps 90 seconds. In this time, the caller can redial to reach the end user.

To keep costs down for the customer, we decided against the extra electronics required to create the high voltage ringing signal. Because of this, the caller needs to redial after passing the audio captcha. Since each caller would only need to redial once, we think this is not an issue. But let us know if you think adding the extra features are worth it.

Also, because we want the user's phone to be able to collect caller ID info, we do not block the call until after caller ID info has been sent. By default, the line is connected, and only disconnects once a call off the whitelist is detected. Because Caller ID is not sent until after the first ring, spam calls will ring once before being blocked. Again, let us know what you think of this decision.

This diagram will keep us organized as we add all the different features and functions needed for the AutoBlock system.

Discussions