DTMF Automation

DTMF Automation

A large part of phone automation uses DTMF signaling. DTMF stands for Dual Tone Multi Frequency and has been in place since the 1960s. Dialing a phone number before the advent of DTMF involved using a rotor. The spinning dial would generate a number of pulses that the phone company would interpret as a number. The phone company then placed each number in order and after a set number was reached, the phone company would place the call. We still refer to dialing, even though no rotor spins because it has taken on a meaning of its own. Placing a call is a more accurate description today, since few rotary phones are still in use. Now tones are generated on the phone and the phone company processes those the same as they had with rotary pulses. It is referred to as touch tone dialing. This form of call connection automation has been in place long before DTMF was developed.

In this post we’ll be covering how to use DTMF tones to combat robo calls from telemarketers.

Robo calls are phone calls that are dialed by an automated system that references a database of phone numbers it should dial. These systems typically log each calls progress, whether it was answered, busy, disconnected, picked up by voice mail, or if the number is no longer in service. It does this by detecting DTMF tones. There are unique DTMF tones for busy, disconnected, and no longer in service. Phone systems can recognize these and that is what we’ll focusing on here.

If we were to add the “no longer in service” DTMF tones at the beginning of a voice mail greeting, this should register the number as such with the caller’s automated system. Here is a python script that I have created to create the NLIS tones.

# NLIS.py
# Version 1.0 (01262019)
# Purpose - Python script that uses SOX to generate No Longer In Service DTMF tones
# Author - Patrick Gilfeather - CloudACM

import os

os.system("play -n synth .270 sin 915 remix - # 915 HZ Signal for 270 ms")
os.system("play -n synth .270 sin 1360 remix - # 1360 HZ Signal for 270 ms")
os.system("play -n synth .380 sin 1778 remix - # 1778 HZ Signal for 380 ms")

Running the command “python NLIS.py” at the terminal will play the tones. You can create a wav file using this script, use this command to run it “python NLIS_File.py”

# NLIS_File.py
# Version 1.0 (01262019)
# Purpose - Python script that uses SOX to generate No Longer In Service DTMF tones to a wav file
# Author - Patrick Gilfeather - CloudACM

import os

os.system("sox -n signal1.wav synth .270 sin 915 # 915 HZ Signal for 270 ms")
os.system("sox -n signal2.wav synth .270 sin 1360 # 1360 HZ Signal for 270 ms")
os.system("sox -n signal3.wav synth .380 sin 1778 # 1778 HZ Signal for 380 ms")
os.system("sox signal1.wav signal2.wav signal3.wav NLIS.wav")

Next we will follow the tones with an actual greeting, that way human callers don’t get confused. Create a new greeting on your voice mailbox using the steps you typically do. Before you begins speaking, play the NLIS tones on your speakers first, then speak. Once you’re satified with the greeting save it.

Next time a robo caller gets your voice mail, it should register the no longer in service tones and log your number accordingly. Enjoy the waning robo calls while you can. The systems that make robo calls are becoming more sophisticated and at some point even DTMF will join the fate of rotary dialing.

To give you perspective, this article was written 6 years ago from the time of this post.  Here are some samples of the level of AI at the time.

Comments are closed.