TAPI error


moose2004

Recommended Posts

I have been rewritting our system for a few months now. I noticed when i add the TAPI.Int() call function, my clt file would crash after a few hours. Also, after the clt file is loaded, the user then closes DF. This will display a "Do you want to send to Microsoft error" message. So i created a new clt file a added the TAPI code from the help file:

//CODE

private string strTTS = 'This is a test. This is a test. This is a test. This is a test. This is a test. This is a test. This is a test. This is a test.'

TAPI.Init("MultiTech Systems MT5634ZPX-PCI") // MultiTech Modem

TAPI.Dial("4050000000") // Put your number

TAPI.Speak('<VOICE REQUIRED="NAME=VW Paul"><VOLUME LEVEL="100"><RATE SPEED="0"><PITCH MIDDLE="0">' + strTTS + '</PITCH></RATE></VOLUME></VOICE>')

delay(15)

TAPI.Drop()

// END

Ran the sequence worked fine (like it should). If you leave the clt file open, it will error out with the "Do you want to send to Microsoft error" message.

Does anyone have a clt file with TAPI code that works without erroring over a period of time that i could look at??

I have attached the sample clt file with the code above. Any help would be great! Thanks

TAPI.ctl

Link to comment
Share on other sites

Well, first of all, TAPI is totally async, so you don't really want to create a single sequence to do what you did. It'll probably work, but doesn't give you any control. You need to use events. So, you trigger the dial, then use the connect event to trigger the speak, then use the speak complete event to trigger the drop().

That, however, is probably not the crash problem. That is likely caused by wrong versions of TAPI and SAPI. XP will likely not want to run the absolute latest versions available for Windows 7 / vista.

Link to comment
Share on other sites

In my monitoring system i use the TAPI.Connect, TAPI.Disconnect, TAPI.SpeakComplete...functions. I am setting global variables based on different TAPI states. That all works. I have narrowed it down to the TAPI.Init(). If TAPI.Init is commented out the clt file it runs forever. If i uncomment theTAPI.Init and save it, then shut the clt file down and reopen it without preforming a callout the clt file will crash within 30 minutes.

I am setting the TAPI.Init() in a startup sequence when the clt is lunched.

Do i need to install some old TAPI drivers??

Link to comment
Share on other sites

Also, I have attached another clt file. This has all the different TAPI states i am using.

Side Note: If you try and run these clt files they will not error out unless you have the same modem model for TAPI to initialize. So if it does not exist or you misspelled the modem name the clt file will not error.

TTS.ctl

Link to comment
Share on other sites

There are always other TAPI devices on a system. You can get the list using the TAPI.GetDeviceList(). Have you tried just initing one of the others just to see if it still causes the crash you are seeing? Just init() it. Don't do anything (since this doesn't matter). If it doesn't crash, then there might be an issue with the modem driver itself.

Link to comment
Share on other sites

It only errors on the MultiTech System Modems. I have tried two different MultiTech System modem on two different Window's XP machines. I am getting the same result! Both modem have updated drivers.

I am getting a Windows 7 machine in today and will retest.

Link to comment
Share on other sites

Well got a Windows 7 32 bit machine, loaded the drivers for MT9234ZPX-UPCI MultiTech System modem. Windows sees the modem device. DF will not display any modems via '? TAPI.GetDeviceList()' command in Windows 7. Why??

I can run the sequence that contains the TAPI.Dial(), no dial out, no errors. Noting happens.

In Windows XP something intrusting i found. If you rerun the TAPI.Dial() function say every 10 minutes the clt file functions properly, runs without erroring out. Going on two days now. All it needs to do is attempt to dial. Here is the code.

//CODE

private string strTTS = "Testing. Testing. Testing. Testing. Testing. Testing. Testing."

TAPI.Init("MultiTech Systems MT9234ZPX-UPCI") //TAPI.Init() for Callouts

while(1)

delay(600)

TAPI.Dial("")

TAPI.Speak('<VOICE REQUIRED="NAME=VW Paul"><VOLUME LEVEL="100"><RATE SPEED="0"><PITCH MIDDLE="0">' + strTTS + '</PITCH></RATE></VOLUME></VOICE>')

TAPI.Drop()

endwhile

//END

Link to comment
Share on other sites

Almost all DAQFactory crashes are related to external forces. We try and catch them, but sometimes it just can't be prevented. In this case, the external force is the MultiTech driver, as you have shown by the fact that it only crashes when using those modems. I know that these modems have worked before, so perhaps its a new bug they've introduced. It is funny though that pinging the hardware with an empty dial() causes things to be ok.

As for Windows 7, I know TAPI works under Windows 7 as I've talked to others who have done it. My guess is that you need to update TAPI and SAPI. If you can't find the device in GetDeviceList(), then you can't Init() it, so you can't Dial() it. Also, not all modems are TAPI compliant, so just because it shows in the Windows modem list, doesn't mean it will show in GetDeviceList(). I'm not saying that your modem isn't TAPI compliant, but rather that version mismatches between drivers, TAPI etc are causing it not to show up.

Link to comment
Share on other sites

  • 2 years later...

hi guru

your last post in this article about finding modems is interesting. a few months ago i wrote in the command line, tapi.getdevicelist() and recieved my modem list. tried it again yesterday and the command line repeated my typing in blue typing. is there something i am doing wrong or something in windows i can do to see the modems again?

Link to comment
Share on other sites

That's just the system echoing the command you typed. The result is empty so below it is just an empty line. Did you remember the print statement. It should be:

? tapi.getDeviceList()

if you want it to appear in the command / alert window. I know I forget the ? sometimes, especially since the Chrome debugger equivalent of the command/alert window doesn't require it.

Link to comment
Share on other sites

humm..... feel like a right idiot now. thats what i was looking for, thanks again guru. now i can start on the next part of my project.

mike

? tapi.getDeviceList()

{"Standard 56000 bps Modem", "HUAWEI Mobile Connect - 3G Modem", "ZTE Proprietary USB Modem", "RAS PPPoE Line0000", "RAS VPN Line 0", "WAN Miniport (L2TP)", "IPCONF LINE", "H323 Line"}

Link to comment
Share on other sites

looks like i need to abandon the modem project, it wont initiate. oh well, thanks for all your help guru

mike

?tapi.GetDeviceList()

{"Standard 56000 bps Modem", "ZTE Proprietary USB Modem", "RAS PPPoE Line0000", "RAS VPN Line 0", "WAN Miniport (L2TP)", "IPCONF LINE", "H323 Line", "HUAWEI Mobile Connect - 3G Modem"}

TAPI.Init("HUAWEI Mobile Connect - 3G Modem")

12/14/12 09:30:07.955

TAPI Error: Line:'HUAWEI Mobile Connect - 3G Modem' Unable to open the device in InteractiveVoice mode, error=ERR_INVALMEDIAMODE.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.