The issues addressed below represent some common situations our customers have encountered.
For each component you need to set the AboutSerialNumber property to have your TeleTools serial number. This is done by setting the AboutLoadSerialNumber to True at design time. This property will cause the control to read the serial number from the registry and put it in the AboutSerialNumber property. The AboutLoadSerialNumber property will then set it self back to false. Save your application and compile it. This will cause the serial number to be saved in your application. You need to do this only one time for each component that you use in your application.
Do NOT use the AboutLoadSerialNumber property at run time.
Please read the "ActiveX and Serialization" section of the help file topic "Getting Started | Why Serial Numbers Are Important"
Your device is not properly configured. You are missing the TSP or driver for the device. In the case of a Dialogic card, it means you do not have GlobalCall properly installed or have not added the TSP from your Phone and Modem options, Advanced tab in your control panel.
Why isn't my voicemodem working properly?
If you are using a voice modem, every few months you should check your modem manufacturerís web site for updated INF files for your modem. Manufacturer's sometimes change their INF files to enhance modem performance. There are many, many issues to be aware of when trying to use a voicemodem as a telephony device, but sure to read this VERY important link:
TeleTools will work with any device that supports TAPI. We work with everything from voice modems to expensive PBX's. Please see our hardware page for more information about telephony devices.
To install an updated INF file, remove the modem from Windows, and then reinstall the modem with the new INF. Use Control Panel > Modems to "Remove" and "Add" the modem (use "Have disk" to point to the new INF). Alternatively, for Windows 95 and later you can use plug-and-play. If you are an advanced user, you may also look in the modem section of your registry for the Unimodem strings that contain the AT commands sent to your voicemodem and update them there.
This issue is usually associated with the modem INF file (or its installation). When you are seeing the modem output CallerID name and number via HyperTerminal, this is coming directly from the modem hardware, not from TAPI. The issue is that Unimodem is not reporting the information to TAPI (probably due to the INF) and therefore, it never gets to TeleTools either.
Sometimes this is also related to specific CallerID implementations in various countries. For instance, in the US, CallerID is sent between the first and second rings. However, in other areas (such as the UK) it is sent before the first ring. Early versions of Unimodem and some TSPs (Telephony Service Providers) for other devices did not report this type of CallerID properly. Make sure Caller ID is enabled on that line (it is an extra cost service) and then use a regular Caller ID telephone and our TeleScope Utility to test.
Voice modems are not capable of outbound Call Progress Monitoring (CPM). Therefore the etLine.OnConnected event or the etCall.OnDialed event is called immediately after dialing is complete but before the remote party answers the phone. This is a limitation of modems and Microsoftís UnimodemV Telephony Service Provider (TSP) If your application requires outbound CPM, consider a more sophisticated telephony device such as one from Dialogic or Way2Call, or use a PBX. For more information about trying to use a voicemodem as a telephony device, please be sure to read: Working with VoiceModems
UnimodemV is the Telephony Service Provider (TSP) that allows voice modems to work with Microsoft's Telephony Application Programming Interface (TAPI). Unfortunately the UnimodemV TSP is not available for NT 4. It is currently only available for Windows 95/98/2000. You will need to look at a more sophisticated telephony card from one of the following companies MediaPhonics, Dialogic or Brooktrout. For more information please see the "Why TeleTools" section of our web site.
If you try to place a voice call on a modem that supports data only, you will see a dialog box that says "Lift receiver and click to Talk / To disconnect click Hang Up and replace receiver." This dialog box is not part of TeleTools. It is an underlying part of TAPI and the Unimodem or Unimodem/V TSP.
Specifically, the following situations cause the dialog box to appear:
To install an updated INF file, remove the modem from Windows, and then reinstall the modem with the new INF. Use Control Panel > Modems to "Remove" and "Add" the modem (use "Have disk" to point to the new INF). Alternatively, for Windows 95 and Windows 98, you can use plug-and-play.
Using etCallRecord, just set the .etFileName and .etSourceFormat and then set .etActive to true. You must be on a connected call, so make sure to do this in the etCall OnDialed, OnAnswered, or even in the OnConnected event.
Start recording in the etLine.OnConnected event. Set the etRecord.SourceFormatID and the SourceFilename and then set etRecord.DeviceActive to true. Then, in the etLine.OnDisconnected event stop recording with etRecord.DeviceActive = False. See DialAnswer sample application .
Go to \windows\system and look for the file TELEPHON.CP$ Rename it to TELEPHON.CPL. Go to the Control Panel (refresh if necessary) and the telephony applet should now be visible.
TeleTools has the ability to identify the media mode of a call and then deal with it appropriately. For example, the etFax sample program that comes with TeleTools identifies if a call has media mode of G3Fax. It then hands the call off to another application, such as Microsoft Fax, which then takes possession of the call and receives the FAX.
Many ExceleTel customers are using TeleTools to handle the voice portion of their applications, plus a non-ExceleTel tool to handle the fax portion. For example, you could use TeleTools to develop an Interactive Voice Response (IVR) system that allows a user to select documents to be faxed. Then use something like MAPI, FaxMan Jr., or WinFax Pro to fax the documents.
Recently, ExceleTel teamed with Data Techniques to provide a seamless TAPI/FAX solution for sending and receiving faxes. Click for more. Be sure to check out the etFaxManSend and etFaxManReceive sample programs.
Yes, if you have sophisticated telephony hardware such as the Way2Call Hi-Phone (as opposed to a voice modem with the UnimodemV TSP), plus TeleTools v3.7 Professional or Enterprise. Here's the explanation. TAPI supports two logical "devices":
UnimodemV doesn't have much (or any) support for the TAPI phone device, so voice modems don't work with speakers, microphones, and the like.
A significant benefit of TAPI is that it arbitrates device access by multiple TAPI-compliant applications. With a single voice modem and TAPI, for example, you can have Microsoft Fax waiting for a call, answering machine software waiting for voice calls, and use dial-up networking to connect to the Internet. That is absolutely impossible without TAPI. For example, if you use a TAPI-compliant program such as one developed with TeleTools, and a non-TAPI program such as BitWare from Cheyenne, the non-TAPI program will access the modem with AT commands while TAPI is using low-level access. This creates device conflict.
What if somebody hangs up the phone at the "other end" while a telephony application is running? TeleTools could handle it, but some telephony devices, including many modems, do not have the capability of detecting and then reporting the hang-up to TAPI.
Telephone companies signal hangup in many different ways. In the USA, POTS (plain old telephone service) central office systems signal a hangup with a drop in loop-current. Other hangup indicators include a fast-busy signal, silence, a recorded message, a warning tone, or any combination of these. The broad range of hangup signals makes hangup detection difficult for telephony devices. Check with the manufacturer of your telephony device to determine which hang-up detection method(s) you device supports.
You probably want to build an inactivity time-out into your application, which will force the application to hang-up if all other detection methods fail.
When handing off calls, the target application must be running. TAPI cannot start the target application.
To transfer a call, you need to put the extension to be transferred to in the etTAPI.PhoneNumber property then call the etTAPI.TransferCall method. This will only work with telephony devices that support the TAPI function lineBlindTransfer. This does not include modems. Normally this is only possible with telephony devices that the work with a PBX and have their own Telephony Service Provider (TSP). Check with your device manufacturer.
Unlike more sophisticated telephony devices such as the MediaPhonics PhoneRider and Dialogic cards, modems really only have one audio channel and therefore can not record and play at the same time. If a wave file is currently playing it must first be stopped before recording can begin.
In the case of the VMail sample application we are playing a wave file to tell the caller to "Press any key to record....." When the caller presses a digit on the keypad, the event handler routine "TForm1.etTAPI1DigitReceived" is called. If the wave file is playing it must first be stopped before recording can begin. Additionally in this program we play a Ding wave file. For voice modems this should be commented out.
If you comment out the code to play the Ding file and wait for the "Press any key to record....." wave file to play completely before pressing a number, you will see that the first 1-2 seconds of speech recording is no longer dropped.
Testing on many different types of hardware produced an interesting observation. On most devices there was no problem receiving DTMF digits after sending DTMF digits from the device. However, with a USR Sportster 56k, receiving after sending works on the first call, but fails on subsequent calls. During the second call, the USR can no longer receive digits after sending digits.
ExceleTel discovered a workaround. After each phone call, call etTAPI.Close then etTAPI.Open This allows an application to receive digits after sending digits, even on the second a subsequent call. This does cause the modem to reset, and is not required for most devices. Perhaps there is something wrong with the modem's INF files, the modem's firmware, or even the USR modem.
See the "Activate the Dialogic WAVE Driver" instructions in the file d41mt.hlp (found on your disk after installation of Dialogicís TAPI drivers). When working with Windows NT, this file is found in the directory C:\Winnt\System32.
Dialogic does not have a configuration setting for the volume level. You need to set the etPlay.Volume properties. You can find information on this topic in the help file. Try the following:
etPlay1.Volume.Enabled := True;
etPlay1.Volume.Default := False;
etPlay1.Volume.Position := 75;
Most telephony devices support playing and recording wave files with the format of "PCM, 8000 Hz, 16 Bit, Mono". This is the default format for the etRecord control.
When playing and record wave files through your telephony device be sure to utilize a wave file format that is directly supported by your device. It is not wise to depend on a Windows's Codec to convert the audio data in real time.
You should check with your telephony device manufacturer for the wave files they support. ExceleTel provides a detailed white paper to provide you with more information about working with WAV files at http://www.exceletel.com/whtpapers/WorkingWithWAVFiles.htm
In particular, most of the dialogic cards only support 11kHz, 16-bit mono as their native windows wav format. You can download the ExceleTel WAV files included with our Sample Applications in different formats at http://www.exceletel.com/support/SampleApplications.htm
Yes, TeleTools can take advantage of Microsoft's SAPI TTS and SR speech engine, as well as other voices from people like AT&T, Lernaut and & Hauspie, Elan and more. See our tutorial on TTS and Speech Rec here: TeleTools and Speech
This is an oxymoron as there is no such thing as a good voice modem. :) Seriously though, due to the nature of voice modems being a cheap, commodity device designed primarly for data use, it is hard for us to make any recommendations. Voicemodems are constantly changing as manufacturers add and delete models and search for cheaper component parts. A voicemodem in one box may work fine, and in another identical box there is an undocumented chip change that causes problems. However, most voicemodem problems are caused by an improper INF file. In this case, reading the MSDN about INF file structure and how Unimodem works and some trial and error can usually get satisfactory resuls, especially for incoming calls. Unless you hire our consulting services or can get a more up-to-date INF file from your modem manufacturer, it is up to you to re-write the INF file so that it sends the correct AT commands to your voicemodem.
NOTE: We are amazed that with the demand for this solution (we get 100's of requests a month from voicemodem users), that a hardware manufacturer has not addressed this need. We have spoken with multiple modem manufacturers about this, but they just don't seem to understand the market. A manufacturer could try to improve an existing model, or at least write a TSP for the voicemodem instead of relying on Unimodem. This would solve the two biggest problems, which are lack of outbound call progress detection and only a half-duplex audio driver.
In the meantime, best low-cost single-line true voice telephony device that we have found is the Hi-Phone Lite. This device is not a modem, provides good call progress detection, full-duplex audio, headset functionality and more. And it does provide its own TSP.