http://www.perlmonks.org?node_id=335640


in reply to Help With Custom War Dialer

The modem that answers the phone decides what it will answer with, and once the two modems connect, you will get back a "CONNECT somethingsomethingsomething" string.

The exact value of the "something..." depends on the brand (BIOS) of your modem, as well as on what it has connected with.

NNNN
Where NNNN is a number is a baud speed means the other side has a modem and a data connection has been established.
FAXCLASS=...
The handshake has been established with a device ready to receive faxes.
VOICE
Something resembling a human voice has answered the phone. Some modems do not offer this, but return "No Carrier" instead. Other modems may even have the option of digitizing and "recording" the voice.
Note that a good enough modem can establish any of those connections. There are programs out there which can use voice-enabled fax modems for the ultimate in flexible voice-mail.

The handshake goes something like this:

  1. Play "leave a message after the beep" recording
  2. Play "fax tones" as the beep (that's the clever part)
  3. If the other side responds with fax tones, establish a fax connection
  4. If the other side responds with voice, record the voice message
  5. If the other side is silent for more than X seconds, play "modem tones" and if possible, establish data connection.
Determining exactly what is on the other side is therefore not going to be very reliable.