etVoiceModemJoinCall Sample Program


This program allows you to join a call that is already in progress then play or record a wave file.

This feature is very useful for call center applications that need to play a wave file, record a wave file, gather digits, etc. when a call already exists.

Click here for more information about Voice Modems.

Using This Sample Program
Download this Sample Program 
How this Sample Program Works
Source Code
Release Notes

Development Environment Technical Information
Telephony Hardware Technical Information



  • A voice modem

  • A handset connected to the phone port of the voce modem

  • A call created manually

  • "Wait for dialtone" disabled in the windows modem settings dialog

Using This Sample Program

  1. Start the program

  2. Select a voice modem from the list of available telephony devices

  3. Make or answer a call with the handset attached to the voice modem

  4. Click the Record check box

  5. Wait until program indicates that it is recording

  6. Speak into either connected handset and/or the remote phone

  7. Click the Record check box to stop recording

  8. Click the Play check box to play the recorded wave file

  9. Wait until program indicates that it is playing

  10. Hear the wave file through the attached handset and/or remote phone

  11. Click the Play check box to stop playing or wait for the wave file to finish playing.

There are two ways to join a call; dialing an "@" called Quiet Answer or a flash "!".  Each modem is different and one method may work better than the other. For example when using the Zoom voice modem ExceleTel used to create this sample program we found that the Flash worked better, there was only a 4 second delay.  Using the Quiet Answer option there was a 10 second delay as it worked through all of the AT commands necessary to join the call.

Double click on any of the three TeleTools controls to display their TeleScope's!

If you can't join the call and see a "no dialtone" error in the etLine log, you will need to make sure that the "wait for dialtone" box is unchecked in the modem properties.  You can change the modem properties by going into the phone and modem options in the control panel, selecting your modem, and clicking on the properties button.

NOTE:  This may not work on all modems or will require making changes to an incomplete INF file used to install the modem. 

Download this Sample Program

For Use TeleTools v3.7



EXE Ready to run!
Borland Delphi 5,6,7 Source code and wave files
Visual Basic 5,6 Source code and wave files
Tell us what you need? Click here and tell us what you need!


How this Sample Program Works

This sample program uses the etLine.CallDial method to send a phonenumber to a modem which is already on a call placed external to this program.  When you set the modem to not wait for a dialtone before dialing and set the Phonenumber to "@" or "!", depending on the modem, checking the record or play checkboxes will dial the number if you aren't already connected and perform the play or record function using etPlay and etRecord.  With modems, the etLine.CallDial method tells the TSP, in this case UnimodemV, to dial the phone.  Unimodem then looks in the registry to see what is in the VoiceDial and VoiceAnswer sections that were placed there at install time by the manufacturer's INF file.  It then sends the AT commands placed there to the modem.

The important AT command is the one that issues the dial string for the modem.  When we send the @ or the ! symbol, we are telling the modem to go off-hook instead of dialing a number.  We then use the etPlay and etRecord components to record the conversation and play it back.  In your own program, you can select any wave file you like to be played.  In this way, you can use a program like this to record conversations such as logging client permission to join your service, or play demo wave files over a phone line during a conversation such as music files, samples, or pre-recorded information.




control to hold the list of TAPI telephony devices

CheckRecord checkbox to join a call and/or begin recording and stop recording
CheckPlay checkbox to join a call and/or begin and end playing a wave file
etLine1 the TeleTools etLine call component
etRecord1 the TeleTools etRecord wave record component
etPlay1 the TeleTools etPlay wave play component
OptionQuietAnswer Radio Button to select the QuietAnswer method for joining a call
OptionFlash Radio Button to select the Flash method of joining a call
TextStatus TextBox to display the status of the call


Event Handler Routine



Connects the call with etLine.CallDial and plays a wave file using etPlay

CheckRecord_Click Connects the call with etLine.CallDial and records a wave file using etRecord
ComboDevice_Click Selects the TAPI modem, checks to see if it is a voice or data modem and activates the device
etLine1_OnConnected TeleTools etLine event letting you know the call is connected.  It checks whether you selected play or record and activates the proper function
etPlay1_OnDone TeleTools etPlay event notifying you that the wave file has finished playing
Form_Load Initialize the form and enable all of the TeleTools components
Form_Unload Close the form and disable the TeleTools components





logic that checks properties to see if the device is a datamodem

IsVoiceModem logic that checks properties to see if the device is a voicemodem
Dial Uses etLine.CallDial and etLine.CallPhonenumber to send the "QuietAnswer" string to the modem and join a call already in progress


Release Notes

May 5, 2003