IE7 DownloadToto® Tools LogoAndreas Marschall’s TAPI and TSPI FAQ

 

 

 


MVP LogoAndreas Marschall is a TAPI / TSP Developer and Tester since 1997.
His contribution to the TAPI newsgroups has been recognized by Microsoft® with MVP Awards for TAPI / Windows® SDK in 2003, 2004, 2005, and 2006.

He received the Microsoft® 2004 Windows MVP ‘Winny’ Award in the category ‘Developer’ at the 2004 MVP Global Summit in Redmond / Seattle, WA, USA.

See his MVP Profile (incl. Biography Abstract, Publications, Conferences, etc.).

He attended the last TAPI Bake-Off in Nice, France, in July 2000.

Created:        2003-08-12

Last Update: 2007-05-08   01:07:19    (see History of Change and Web-Statistics)

XML / RSS 2.0 Feed for the History of Change from Andreas Marschall's TAPI and TSPI FAQ Feed for Update Notifications available.

Copyright © 2003-2007 by I-B-A-M®. All rights reserved.

 

Comments on this TAPI and TSPI FAQ are welcome: please send them to TAPI.FAQ@I-B-A-M.de

Please don’t send your TAPI questions by email!!!  Please post all TAPI related questions / discussions in the TAPI newsgroup so all may benefit from the discussion.

 

disclaimer All opinions expressed on this page are my own. This page is provided "AS IS" with no warranties, and confers no rights.

Microsoft, MSDN, Visual Basic, Visual Studio, Windows NT and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

Other product or company names mentioned on this page may be the trademarks of their respective owners.

See also the Additional legal disclaimer in German language.

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection


Check out our Frappr!Frappr! Group TAPI around the World



 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection


Table of Contents

Andreas Marschall’s TAPI and TSPI FAQ

Frappr! Group TAPI around the World

Table of Contents

Frequently Asked Questions (FAQ)

General

TAPI2

TAPI3

MSPI

TSPI

TAPI Newsgroups

TAPI Browser

TAPI 1.x: TB13.exe, TB14.exe

TAPI 2.x: TB20.exe

TAPI 3.x: TB3x.exe

Test Tools for TAPI

Microsoft®

I-B-A-M®

JulMar Technology

ExceleTel

Grant Schenck Software

Chris Sells

Sample Code

Microsoft® Platform SDK

MSDN® Library

Microsoft® Knowledge Base Articles

JulMar Technology

I-B-A-M®

Alex. C. Punnen

TAPI2 / TAPI3 / TSPI Documentation / Specification

MSDN® Library online

MSDN® Library CD

Microsoft® Platform SDK

Microsoft® Knowledge Base

Downloads

Microsoft® FTP Site for TAPI Developers

Microsoft® Platform SDK

I-B-A-M®

JulMar Technology

ExceleTel

Siemens

GotDotNet User Sample

Itel Office

Grant Schenck Software

Alex. C. Punnen

Robert Bamberg

Chris Sells

Books

Windows Telephony Programming : A Developer’s Guide to TAPI

MAPI, SAPI, & TAPI : Developer’s Guide

Computer Telephony Demystified

Other TAPI Experts with TAPI Sites and FAQs

Michael Dunn

Matthias Moetje

Bruce Pennypacker

Grant Schenck

ExceleTel

JulMar Technology

TAPI Problems, Fixes, and KB Articles

Known Problems and Fixes

Reporting Problems

Knowledge Base Articles

Miscellaneous Q&A

General

TAPI2

TAPI3

MSPI

TSPI

Abbreviations / Glossary

History of Change

Web-Statistics

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection


Frequently Asked Questions (FAQ)

General

·       Q: What is TAPI ?

·       Q: What newsgroups are covering TAPI ?

·       Q: Are there any guidelines for newsgroup postings ?

·       Q: Where do I find documentation / specifications on TAPI / TSPI ?

·       Q: Are there any good books on TAPI or CTI (computer telephony integration) available ?

·       Q: Where can I download TAPI Browser ?

·       Q: Where can I download TAPI related stuff ?

·       Q: Are there any Tools for TAPI available ?

·       Q: Is there any sample code available ?

·       Q: What can I do if I get compiler / linker errors (like undeclared identifier (C2065) or unresolved external symbol (LNK2001)) ?

·       Q: Where are TAPI errors codes defined ?

·       Q: Is there a TAPI trace available ?

·       Q: Are there any known TAPI problems and fixes available ?

·       Q: How and where do I report TAPI problems ?

·       Q: Are there any KB articles on TAPI available ?

·       Q: Is IP Telephony supported by TAPI ?

·       Q: Is Fax supported by TAPI ?

·       Q: What is the difference between the 1st party and the 3rd party model ?

·       Q: What is the Microsoft® TAPI client / server architecture ?

·       Q: How can I track a call when it is moving from device to device ?

·       Q: What is the difference between Canonical Addresses and Dialable Addresses ?

·       Q: What does this abbreviation stand for / Is there a glossary available ?

·       Q: Are there other TAPI sites and FAQs available ?

TAPI2

·       Q: What is TAPI 2.x ?

·       Q: What operating systems do support TAPI 2.x ?

·       Q: Is there a user guide available for TAPI Browser TB20 ?

·       Q: How is do-not-disturb (DND) represented in a LINEFORWARD structure (used with lineForward and LINEADDRESSSTATUS) ?

·       Q: How do I use lineForward (how to set LINEFORWARDLIST, LINEFORWARD structures) ?

·       Q: How do I transfer a call with TAPI2 ?

·       Q: How do I make a conference with TAPI2 ?

·       Q: How do I partially dial with TAPI2 ?

·       Q: Is there something special with asynchronous functions in TAPI2 ?

·       Q: How do I use LINECALLPRIVILEGE_ Constants in TAPI2 ?

·       Q: Are there any .NET wrappers for TAPI2 available ?

TAPI3

·       Q: What is TAPI 3.x ?

·       Q: Is there a user guide available for TAPI Browser TB3x ?

·       Q: How do I enable events (put_EventFilter, RegisterCallNotifications) in TAPI Browser TB3x ?

·       Q: How can I log to file a TAPI Browser TB3x session ?

·       Q: Where is the log file of TAPI Browser TB3x located ?

·       Q: What is the difference between TAPI 3.0 and 3.1 ?

·       Q: Is there a TAPI 2.x to TAPI 3.x Cross-Reference ?

·       Q: Has TAPI3 any advantages over TAPI2 ?

·       Q: Has TAPI3 any disadvantages over TAPI2 ?

·       Q: How do I initialize TAPI with TAPI3 ?

·       Q: How do I select an address with TAPI3 ?

·       Q: How do I register events with TAPI3 ?

·       Q: How do I select a terminal with TAPI3 ?

·       Q: How do I make a call with TAPI3 ?

·       Q: How do I receive a call with TAPI3 ?

·       Q: How do I create a simple conference with TAPI3 ?

·       Q: How do I transfer a call with TAPI3 ?

·       Q: How do I redirect a call with TAPI3 ?

·       Q: What Libraries (.LIB files) do I need to build TAPI3 applications ?

·       Q: How do I use fMonitor / fOwner in ITTAPI::RegisterCallNotifications in TAPI3 ?

MSPI

·       Q: What is a MSP ?

·       Q: What MSPs are available ?

·       Q: Is there a MSP with sample code available ?

·       Q: Is there a MSP for full-duplex support with UniModem TSP available ?

TSPI

·       Q: What are TAPI Service Providers ?

·       Q: What is a TSP ?

·       Q: What TSPs are installed on my system ?

·       Q: What TSPs are available ?

·       Q: What about H323.TSP and IPconf.TSP in Windows® VistaTM ?

·       Q: What is RemoteSP.TSP ?

·       Q: What is the ModemLog ?

·       Q: Are there specific TSPs for TAPI2 and TAPI3 ?

·       Q: Is there a TSP with sample code available ?

·       Q: How can I debug a TSP ?

·       Q: Is there a user guide available for Economical Service Provider (ESP32)?

·       Q: How can I stop Telephony Service ?

·       Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ?

·       Q: Which process is hosting TAPISRV ?

·       Q: How can I run TAPISRV exclusively in a svchost process ?

·       Q: How do I get the dwPermanentProviderID of the TSP for a given line device ?

·       Q: Which TSP is hosting a given line device ?

·       Q: How can I popup a MessageBox from a TSP ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



TAPI Newsgroups

Q: What newsgroups are covering TAPI ?

A: TAPI related newsgroups on Microsoft® news server msnews.microsoft.com: (no registration required)

This is the main newsgroup that should be used for all TAPI related discussions:

 

·       news://msnews.microsoft.com/microsoft.public.win32.programmer.tapi

 

The following additional newsgroups are not frequently used any longer.

To keep all TAPI related discussions in one place these groups should not be used anymore.

·       news://msnews.microsoft.com/microsoft.public.win32.programmer.tapi.beta

·       news://msnews.microsoft.com/microsoft.public.platformsdk.telephony.tapi_2  

·       news://msnews.microsoft.com/microsoft.public.platformsdk.telephony.tapi_3

·       news://msnews.microsoft.com/microsoft.public.platformsdk.telephony.tsp

·       news://msnews.microsoft.com/microsoft.public.platformsdk.telephony.wte

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: TAPI related newsgroups via MSDN® Web-Based Newsgroup Client: (no registration required)

Newsgroup microsoft.public.win32.programmer.tapi is also available via MSDN® Newsgroups:

·       http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.win32.programmer.tapi

and via MSDN® Managed Newsgroups:

·       http://msdn.microsoft.com/newsgroups/managed/default.aspx?dg=microsoft.public.win32.programmer.tapi

MSDN® includes free and unlimited newsgroup support for select technologies for all MSDN® Universal, Enterprise, Professional and Operating System Subscribers.

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: TAPI related newsgroups via Microsoft® Research Netscan: (no registration required)

All microsoft.public.* newsgroups are available at Microsoft® Research Netscan/Tech with daily updates / reports.

The NG Report (incl. Time Series Chart, Report Card, Thread Tracker, and Author Tracker) for microsoft.public.win32.programmer.tapi is available here:

·       http://netscan.research.microsoft.com/Tech/reportcard.aspx?tp=14&ng=microsoft.public.win32.programmer.tapi&sd=

All postings from Andreas Marschall in the (public) Microsoft® newsgroups can be found via these profiles:

·       http://netscan.research.microsoft.com/Tech/author/profile.aspx?auth=Andreas.Marschall%40I-B-A-M.de

·       http://netscan.research.microsoft.com/Tech/author/profile.aspx?auth=andreas.marschall%40arcormail.de

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: TAPI related newsgroups via GoogleTM groups: (no registration required)

All postings from Andreas Marschall in the (public) Microsoft® newsgroups can be found by a search at GoogleTM groups:

·       search groups.google.com for: group:microsoft* author:Andreas author:Marschall

·       search groups.google.com for: group:microsoft* author:MarschallA

The Microsoft® newsgroups mentioned above are mirrored and archived at GoogleTM groups:

·       GoogleTM groups: microsoft.public.win32.programmer.tapi

·       GoogleTM groups: microsoft.public.win32.programmer.tapi.beta

·       GoogleTM groups: microsoft.public.platformsdk.telephony.tapi_2

·       GoogleTM groups: microsoft.public.platformsdk.telephony.tapi_3

·       GoogleTM groups: microsoft.public.platformsdk.telephony.tsp

·       GoogleTM groups: microsoft.public.platformsdk.telephony.wte

The Microsoft® newsgroups mentioned above have an “About” page (incl. statistics on top posters etc.) at GoogleTM groups:

·       GoogleTM groups: About microsoft.public.win32.programmer.tapi

The Microsoft® newsgroups mentioned above have Atom feeds (100 New topics, 100 New messages) at GoogleTM groups:

·       GoogleTM groups: Atom feed 100 New topics microsoft.public.win32.programmer.tapi GoogleTM groups: Atom feed 100 New topics microsoft.public.win32.programmer.tapi

·       GoogleTM groups: Atom feed 100 New messages microsoft.public.win32.programmer.tapi GoogleTM groups: Atom feed 100 New messages microsoft.public.win32.programmer.tapi

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: TAPI related newsgroups via tech-archive.net: (no registration required)

Newsgroup microsoft.public.win32.programmer.tapi is mirrored and archived (history of about 1½ years) at tech-archive.net:

·       http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.tapi/

There exists an XML / RSS Feed for automatic notifications about new postings Feed from tech-archive.net to be automatically notified about new postings.

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: TAPI related Yahoo! groups: (free registration required)

The following Yahoo! groups requires group membership:

·       Yahoo! groups: TAPI- Telephone Application Programming Interface

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: partially TAPI related ExceleTel newsgroups: (no registration required)

This newsgroup isn’t directly related to TAPI but to ExceleTel TeleTools that encapsulates TAPI:

·       news://news.exceletel.com/exceletel.public.teletools

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: partially TAPI related TERASENS newsgroups: (no registration required)

These newsgroups aren’t directly related to TAPI but to TERASENS TERAVoice Server that encapsulates TAPI.

They are available both in English and German.

They are available both via HTTP:

·       http://www.terasens.com/support/newsgroups/ShowGroup.aspx?Group=terasens.public.en.teravoice.general

·       http://www.terasens.com/support/newsgroups/ShowGroup.aspx?Group=terasens.public.en.teravoice.development

·       http://www.terasens.com/support/newsgroups/ShowGroup.aspx?Group=terasens.public.de.teravoice.allgemein

·       http://www.terasens.com/support/newsgroups/ShowGroup.aspx?Group=terasens.public.de.teravoice.entwicklung

and NNTP:

·       news://news.terasens.de/terasens.public.en.teravoice.general

·       news://news.terasens.de/terasens.public.en.teravoice.development

·       news://news.terasens.de/terasens.public.de.teravoice.allgemein

·       news://news.terasens.de/terasens.public.de.teravoice.entwicklung

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


A: partially TAPI related Mediatel Data USA forums: (free registration required)

These forums aren’t directly related to TAPI but to CTI development with Intel® / Dialogic® boards:

·       CTI Development with Dialogic using R4 and other tools

·       CTI Development with Dialogic using the PBVoice Toolkit

·       Mastering Computer Telephony Integration Using Intel Communication System Products 

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Are there any guidelines for newsgroup postings ?

A: Yes, see the following tips:

·       No multi-posting!!! If you post the same message to several newsgoups don't multi-post (send it several times) but cross-post (send it one time with all the newsgroups separated by comma) it.

·       No excessive cross-posting!!! Post your message only to one or maximum to very few newsgroups. Make sure your posting is on-topic to all of the selected newsgroups.

·       It is recommended to post TAPI questions only to the managed TAPI newsgroup: microsoft.public.win32.programmer.tapi

·       Choose a descriptive subject / topic for your posting! (E.g. „How to lineGetID() in TAPI 3.x ?“). Don’t use irrelevant additions like „Please help“ or „Urgent“ (it may have the opposite effect).

·       see Guidelines for Microsoft® community Web sites about e.g. Relevance to Topics

·       see Q: Is there a user guide available for TAPI Browser TB20 ? about how to attach a TB20.log to a posting

·       see Q: Is there a user guide available for TAPI Browser TB3x ? about how to attach a TB3x log to a posting

·       include information about the TAPI version (TAPI2 / TAPI3) you are using, or whether your questions is about TSPI / MSPI

·       include information about the device(s) / TSP(s) you are using

·       include information about the operating system (and service pack) you are using

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



TAPI Browser

Q: Where can I download TAPI Browser TBxx.exe ?

A: Several versions TAPI Browsers can be downloaded as ZIP files from:

·       ftp://ftp.microsoft.com/developr/TAPI/

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


TAPI 1.x: TB13.exe, TB14.exe

These TAPI Browsers for TAPI 1.3 / 1.4 are obsolete. TAPI 1.x can be done with TAPI Browser TB20 .

Link to ZIP files:

·       ftp://ftp.microsoft.com/developr/TAPI/tb13.zip

·       ftp://ftp.microsoft.com/developr/TAPI/tb14.zip

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


TAPI 2.x: TB20.exe

Link to ZIP file:

·       ftp://ftp.microsoft.com/developr/TAPI/tb20.zip  

Q: Is there a user guide available for TAPI Browser TB20 ?

A: These steps may help you getting started:

·       Take a look at the TB20 Online Help first (Menu Help -> Using TB…)

·       Note that the “LAp+” button is associated with lineInitialize and not lineInitializeEx, and therefore allows you to negotiate up to TAPI 1.4 only (you need to call lineInitializeEx from the left pane to be able to negotiate TAPI 2.x)

·       A double left click on a handle in the middle pane invokes automatically the corresponding functions to get capabilities and status: e.g. hLine -> lineGetDevCaps / lineGetLineDevStatus, hCall -> lineGetCallInfo / lineGetCallStatus

·       Activate Menu Options -> Log parameters to add the function arguments to the TB.log (this option has to be enabled each time you start TAPI Browser)

·       Activate Menu Options -> Show time stamps to add the time to the TB.log when functions are invoked / return and messages are received (this option is saved as setting (s.b.) so it hasn’t to be enabled each time you start TAPI Browser)

·       Activate Menu Options -> Auto-deallocate idle monitored calls, so you don’t have to lineDeallocateCall on each idle call handle manually (this option is saved as setting (s.b.) so it hasn’t to be enabled each time you start TAPI Browser)

·       Activate Menu Options -> Auto-deallocate idle owned calls, so you don’t have to lineDeallocateCall on each idle call handle manually (this option is saved as setting (s.b.) so it hasn’t to be enabled each time you start TAPI Browser)

·       The default values and other settings (s.a.) are stored in %SystemRoot%\WIN.INI in section [Tapi Browser]

·       When you attach a TB.log to a posting to the TAPI newsgroups make sure the TB.log includes to whole session beginning with lineIntialize(Ex) and activate Log parameters / Show time stamps (s.a.)

·       To be continued …

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


TAPI 3.x: TB3x.exe

Link to ZIP file:

·       ftp://ftp.microsoft.com/developr/TAPI/Tb3x.zip  

Q: Is there a user guide available for TAPI Browser TB3x ?

A: These steps may help you getting started:

·       As starting point for all TAPI activities within TB3x you have to call IITAPI::Initialize as follows:

1)     start TB3x.exe

2)     expand tree "coclass TAPI" -> you see "ITTAPI", "ITTAPICallCenter"

3)     double left click on "ITTAPI" > you see "ITTAPI_1" in the middle pane

4)     single left click on "ITTAPI_1" -> you see expanded tree "Microsoft TAPI 3.0 Type Library->Interfaces->IITAPI”::methods in the left pane

5)     double left click on "m Initialize"

·       To get a cookie (AdviseEventNotification) from an ITTAPI object (e.g. ITTAPI_1) single right click on "ITTAPI_1” and select “Advise” from the context menu

·       To QueryInterface a TAPI object (ITTAPI_1, ITAddress_1, etc.) single right click on the object in the middle pane and select “QueryInterface” from the context menu

·       see Q: How do I enable events (put_EventFilter, RegisterCallNotifications) in TAPI Browser TB3x ?

·       see Q: How can I log to file a TAPI Browser TB3x session ?

·       see Q: Where is the log file of TAPI Browser TB3x located ?

·       TAPI 3.1 support: on Windows® XP and Windows® Server 2003 and later TB3x offers full TAPI 3.1 support (all ITxxx2 interfaces availbale) but reports only "Microsoft TAPI 3.0 Type Library” in the left pane. Don’t be confused by this.

·       To be continued …

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I enable events (put_EventFilter, RegisterCallNotifications) in TAPI Browser TB3x ?

A: See the necessary steps from a TB3x.log:

·        Before ITTAPI::RegisterCallNotifications you need to ITTAPI::put_EventFilter

·        In addition you should use a cookie from ITTAPI::AdviseEventNotification (IConnectionPoint::Advise) as lCallbackInstance when calling ITTAPI::RegisterCallNotifications

·        This sample enables all events (FilterMask) and registers call notification with privileges Monitor and Owner for media type Audio for the first ITAddress


ITTAPI.CreateInstance  ITTAPI_1
returned hr = 0x00000000

ITTAPI_1.Initialize  returned hr = 0x00000000

ITTAPI_1.EnumerateAddresses  returned hr = 0x00000000
IEnumAddress_1

IEnumAddress_1.Next  ITAddress_1
returned hr = 0x00000000

ITTAPI_1.AdviseEventNotification  returned hr = 0x00000000
cookie 13236868

ITTAPI_1.put_EventFilter
long plFilterMask : 131071 (0x0001ffff)
returned hr = 0x00000000

ITTAPI_1.RegisterCallNotifications
ITAddress* pAddress : ITAddress_1
VARIANT_BOOL fMonitor : 1
VARIANT_BOOL fOwner : 1
long lMediaTypes : 8 (0x00000008)
long lCallbackInstance : 13236868 (0x00c9fa84)
returned hr = 0x00000000
long* plRegister = 13829509 (0x00d30585)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How can I log to file a TAPI Browser TB3x session ?

A: Select “Save Log” from the “Optionsmenu of TAPI Browser TB3x.

Note:

·        It is sufficient to enable logging just before you close TAPI Browser TB3x.exe

·        All output in the lower right pane will be logged to file

·       On start of  TAPI Browser TB3x.exe file logging is disabled (this default can’t be changed)

·       Older log file will be overwritten

·        See also Q: Where is the log file of TAPI Browser TB3x located ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Where is the log file of TAPI Browser TB3x located ?

A: It is named TB3xLogFile.rtf and located in the same directory as TAPI Browser TB3x.

Note:

·        The file will not be written until closing TAPI Browser TB3x.exe

·        See also Q: How can I log to file a TAPI Browser TB3x session ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



Test Tools for TAPI

Q: Are there any Tools for TAPI available ?

A: Yes, see the links in the following list:

Microsoft®

·        Microsoft® TAPI Browsers for TAPI 1.x, 2.x, and 3.x is an application that allows a user to interactively call into the Windows Telephony interface and inspect all returned information.

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Toto® Tools LogoI-B-A-M®

·        Toto® Tool TAPI_Error_Codes is a tool to dump all TAPI 1.x, 2.x, and 3.x error codes: LINEERR_, PHONEERR_, and TAPI_E_ Constants (error descriptions are available in local OS language) (see Q: Where are TAPI errors codes defined ?)

·        Toto® Tool TAPI_ListCaps is a tool to dump all TAPI line and phone devices with device ID and some device info

·        Toto® Tool TAPI_GetCaps is a tool to dump the capabilities of all TAPI line and phone devices (incl. complete hex dump / ASCII representation)

·        Toto® Tool TAPIex is a tool to display and change the svchost settings for tapisrv (see Q: How can I run TAPISRV exclusively in a svchost process ?)

·        Toto® Tool consoleTapiRequestMakeCall is a tool to tapiRequestMakeCall from console

·        Toto® Tool WaveDevice is a tool to dump the capabilities of all available wave/in and wave/out devices

·        Toto® Tool AtNow is a tool to run a job via Task Scheduler service interactively within the next minute (default job is taskmgr; usefull to stop a non responding Telephony Service, see Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ?)

·        XML / RSS 2.0 Feed for the History of Change from Andreas Marschall's Toto® Tools Feed for Update Notifications on Toto® Tools available

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


JulMar Technology

·       JulMar PHONE is a sample TAPI application which tests various aspects of TAPI.  It can open multiple lines and provides support for agent features if connected to a TAPI 2.1 or 3.x service provider.

·       JulMar ENUMTAPI enumerates through all the TAPI lines in the system and dumps various information structures from them.

·       JulMar TCMON opens all lines and monitors all call traffic across all lines, showing calls in a report-view control.  It allows for system-wide monitoring and is especially useful in the 3rd party environment running on the server.

·       JulMar ANSWER answers inbound calls and demonstrates how to manipulate an inbound call using the ATAPI library. It allows the inbound call to be accepted, answered and dropped.

·       JulMar AGENTMON allows you to monitor agent positions and (if the provider supports it) to change the agent state and groups.  It is primarily for 3rd party TAPI.

·       JulMar ROUTETEST tests the lineRedirect features of a service provider and allows for automated routing for incoming calls.  It is primarily for 3rd party TAPI (2.0+).

·       JulMar MAKEDROP demontrates how to place outgoing calls using the ATAPI library.

·       JulMar DROPALL immediately drops inbound calls when they hit a configured call state. It can optionally accept and/or answer the call.

·       JulMar MONITOR shows the current line/address state for any available line in a dialog panel.

·       JulMar DBGLEVEL is a tool for changing the debug level of TSPs built with JulMar's TSP++ toolkit but can adjust the debug level of the TAPI system components as well.

·       JulMar Start Tapi forces TAPI to load and stay running until you tell it to shutdown. This is useful to force TAPI to start and stop through a batch file when running under Windows 95/98/ME.

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


ExceleTel

·       ExceleTel TeleScope allows you to monitor and control a TAPI-compliant telephony device through a graphical user interface. Every event and change of state is logged using the event, method and property names of the TeleTools development environment.  You have complete control over your line device, phone device and audio files.

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Grant Schenck Software

·       Grant Schenck’s DBWin32, the debug and trace message output capture and display utility for Windows NT, Win2K, XP, ME, '95 and '98!

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 


Chris Sells

·       Chris Sells’ TAPI Explorer (tExplorer) allows to understand the various capabilities of the telephony devices installed on a system

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



Sample Code

Q: Is there any sample code available ?

A: Yes, see the links in the following sections:

Microsoft® Platform SDK

The Core SDK from Windows® SDK (s. Platform SDK) contains several samples for TAPI 2.x and TAPI 3.x and TSPI.

The TSP and  TAPI2 samples are all written in C. TAPI3 samples are available in C++, VB, VBScript and Java.

Currently the following samples (full programs) are available: (directory names)

·        \NetDS\Tapi\Tapi2\Dialer

·        \NetDS\Tapi\Tapi2\TapiComm

·        \NetDS\Tapi\Tapi2\Atsp32

·        \NetDS\Tapi\Tapi3\Cpp\Msp\SampleMSP

·        \NetDS\Tapi\Tapi3\Cpp\Msp\MSPBase

·        \NetDS\Tapi\Tapi3\Cpp\Acd\AcdProxy

·        \NetDS\Tapi\Tapi3\Cpp\Acd\acdclient

·        \NetDS\Tapi\Tapi3\Cpp\Outgoing

·        \NetDS\Tapi\Tapi3\Cpp\Incoming

·        \NetDS\Tapi\Tapi3\Cpp\AnsMach

·        \NetDS\Tapi\Tapi3\Cpp\pluggable

·        \NetDS\Tapi\Tapi3\Cpp\tapisend

·        \NetDS\Tapi\Tapi3\Cpp\tapirecv

·        \NetDS\Tapi\Tapi3\Cpp\FileTerm

·        \NetDS\Tapi\Tapi3\Cpp\Rend

·        \NetDS\Tapi\Tapi3\VB\Outgoing

·        \NetDS\Tapi\Tapi3\VB\Incoming

·        \NetDS\Tapi\Tapi3\VB\dtmf

·        \NetDS\Tapi\Tapi3\VB\USBPhone

·        \NetDS\Tapi\Tapi3\VB\CallHub

·        \NetDS\Tapi\Tapi3\VBScript

·        \NetDS\Tapi\Tapi3\Java\jt3rec

·        \NetDS\Tapi\Tapi3\Java\jt3Conf

·       \NetDS\Tapi\Tapi3\Java\jt3Call

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


MSDN® Library

The following code snippets briefly illustrate some basic operations. The snippets are written in C++ and VB.

·       See MSDN® Library online: tapi3/initialize_tapi

·       See MSDN® Library online: tapi3/select_an_address

·       See MSDN® Library online: tapi3/register_events

·       See MSDN® Library online: tapi3/select_a_terminal

·       See MSDN® Library online: tapi3/make_a_call

·       See MSDN® Library online: tapi3/receive_a_call

·       See MSDN® Library online: tapi3/create_a_simple_conference

·       See MSDN® Library online: tapi/tapi3/transfer_a_call

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Microsoft® Knowledge Base Articles

The following KB articles contain TAPI related sample code or code snippets.

·       238479 - SAMPLE: RasBaud.exe Obtains the Baud Rate of an Existing RAS Connection Programmatically

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


JulMar Technology

JulMar Technology offers

·       SDK for TSP development: there is a commercial version and an open source version of their TSP++

·       Sample TAPI Testing Applications with open source

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


I-B-A-M®

See code snippets / pseudo code:

·       Q: How do I use lineForward (how to set LINEFORWARDLIST, LINEFORWARD structures) ?

·       Q: How do I transfer a call with TAPI2 ?

·       Q: How do I make a conference with TAPI2 ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection


Alex. C. Punnen

Alex. C. Punnen offers

·       source of the application he wrote for an Interactive Voice Response System

 

Go to top of page                  Go to Table of Contents                         Go to FAQ



TAPI2 / TAPI3 / TSPI Documentation / Specification

Q: Where do I find documentation / specifications on TAPI / TSPI ?

A: See the following links:

MSDN® Library online

MSDN® Library online Home page

MSDN® Library online TAPI

MSDN® Library CD

The MSDN® Library CDs can be subscribed:

MSDN® Subscription Levels

Microsoft® Platform SDK

The Core SDK from Windows® SDK (s. Platform SDK) contains a Compiled HTML Help file named TAPI.CHM.

Microsoft® Knowledge Base

See Q: Are there any KB articles on TAPI available ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



Downloads

Q: Where can I download TAPI related stuff ?

A: See the links in the following sections: (this list is not complete)

Microsoft® FTP Site for TAPI Developers

ftp://ftp.microsoft.com/developr/TAPI/

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Microsoft® Platform SDK

Update and component installation: <= 200 MB !!!

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/

What you need for TAPI developing is the Core SDK from Windows® SDK.

 

Full Download with Local Install: >300 MB !!!

http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

 

Order CD:

from USA / Canada

from other Countries

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Toto® Tools LogoI-B-A-M®

I-B-A-M® offers Andreas Marschall’s Toto® Tools, a collection of free, mostly TAPI related tools:

·       Toto® Tools for General Purpose (AtNow, CycleRun, IncrementalOpenWebPage)

·       Toto® Tools for TAPI (TAPI_Error_Codes, TAPI_ListCaps, TAPI_GetCaps, TAPIex, consoleTapiRequestMakeCall)

·       Toto® Tools for Networking (GetIfEntry, GetAdaptersInfo, MAC_NetBIOS, SYNCsend)

·       Toto® Tools for Media (WaveDevice)

·       XML / RSS 2.0 Feed for the History of Change from Andreas Marschall's Toto® Tools Feed for Update Notifications on Toto® Tools available

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


JulMar Technology

JulMar Technology offers a SDK for TSP development and sample, trial or free software tools and a FAQ:

·       TSP++TM SDK (commercial version)

·       Samples (open source version of TSP++TM, Sample TAPI Testing Applications, and TAPI Application class library)

·       FAQ about TSP++TM

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


ExceleTel

ExceleTel offers a SDK for TAPI development, a TAPI diagnostic, testing and operation utility, TAPI sample programs, a newsgroup and a FAQ:

·       TeleTools

·       TeleScope

·       Sample Programs

·       news://news.exceletel.com/exceletel.public.teletools

·       FAQ about Telephony, TAPI and ExceleTel products

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Siemens

Siemens HiPath offers a Downloads website with:

·       Software

·       Data Sheets

·       Administration Guides

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


GotDotNet User Sample

Helen Warn offers her C# Wrapper for TAPI2:

·       www.gotdotnet.com

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Itel Office

Angus Comber from Itel Office offers a COM control for TAPI:

·       Cuba control

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Grant Schenck Software

Grant Schenck Software offers a Powerpoint presentation and a OutputDebugString capture utility for Windows:

·       TAPI Course notes

·       DBWin32 Version 2.2

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Alex. C. Punnen

Alex. C. Punnen offers

·       source of the application he wrote for an Interactive Voice Response System

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Robert Bamberg

Robert Bamberg offers

·       Source Code of Chris Sells’ book "Windows Telephony Programming : A Developer’s Guide to TAPI" incl. the Telephony Framework “TFX” (see Q: Are there any good books on TAPI or CTI (computer telephony integration) available ?)

·       Free CallerId Application version 1.0

·       EZTapiAPI SDK version 1.0

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 


Chris Sells

Chris Sells offers

·       TAPI Explorer (tExplorer) including VS.NET and VC6 source code

·       a book about TAPI (see Q: Are there any good books on TAPI or CTI (computer telephony integration) available ?)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



Books

Q: Are there any good books on TAPI or CTI (computer telephony integration) available ?

A: Yes, see the following links:

Windows Telephony Programming : A Developer’s Guide to TAPI

First printing, July 1998
Chris Sells
Addison-Wesley, ISBN 0-201-63450-3

(see Robert Bamberg for corresponding source code)

MAPI, SAPI, & TAPI : Developer’s Guide

First edition, 1996
Michael Amundsen
Sams Publishing, ISBN 0-672-30928-9

Computer Telephony Demystified

Putting CTI, Media Services, and IP Telephony to Work
First printing, 2001
Michael Bayer
McGraw-Hill, ISBN 0-07-135987-7

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



Other TAPI Experts with TAPI Sites and FAQs

Q: Are there other TAPI sites and FAQs available ?

A: Yes, see the following links: (last names in alphabetical order)

Michael Dunn

http://www.rainyjay.com/tapi/tapi.htm

Matthias Moetje

http://www.tapi.info/

http://www.terasens.com/products/teravoice/hardware.aspx

Bruce Pennypacker

http://tapifaq.pennypacker.org/

Grant Schenck

http://grantschenck.tripod.com/

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


ExceleTel

FAQ about Telephony, TAPI and ExceleTel products

JulMar Technology

FAQ about TSP++TM

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



TAPI Problems, Fixes, and KB Articles

Known Problems and Fixes

Q: Are there any known TAPI problems and fixes available ?

A: Yes, see the following list:

·       Search the Knowledge Base (Support and Troubleshooting) for "TAPI" OR "Telephony"

·       For other info (no confirmed problems, but INFO, PRB, HOW TO, SAMPLE, White Paper etc.) see Q: Are there any KB articles on TAPI available ?

The following KB articles are related to Windows® 2000, Windows® XP, Windows® Server 2003, and/or Windows® VistaTM (older OS are not covered in this list). All following KB articles have this status: “Microsoft has confirmed that this is a problem”. Use QuickInfo on the links (move your mouse pointer on the link and wait about a second) to see the beginning of the symptoms section of the article:

·       246152 - BUG: SDP Cannot Support Languages Other Than the System Default

·       262290 - Deadlock in TAPI Service If the Provider Is Not Re-entrant

·       269822 - Caller ID and Called ID Do Not Display Correctly with TAPI 3.0

·       271178 - "ITCallInfo::put_CallInfoLong" Property on a TAPI 3 Call Causes "Not Supported" Error

·       278035 - VBScript CreateObject Method Creates TAPI Objects in HTML Without Any Security Warning Message

·       278718 - Error Message If You Do Not Disconnect from a Phone Call Before You Restart Your Computer

·       280319 - Error message when upgrading computer that runs Internet Locator service

·       295385 - TAPI Enters an Infinite Loop State and Does Not Signal an Event That Is Expected by a Program

·       302909 - TAPI Error 0x80000022 Occurs When the System Locale is English (Canada) or French (Canada)

·       308405 - TAPI Is Not Terminal Services Aware

·       310626 - TAPI Server Leaks Memory When Multiple Programs Own Calls

·       311885 - TAPI Error 0x8000022 Occurs with an English (Canada) or French (Canada) System Locale

·       317877 - A TAPI-enabled program may not initiate a conference call correctly in Windows XP or in Windows 2000

·       330753 - Sound May Be Lost on the Server Side of a TAPI Application Session

·       821439 - TAPI only resolves an H.323 gateway DNS name on initialization in Windows 2000

·       822112 - FIX: A program cannot re-establish communication with a modem device after the USB cable is quickly reconnected

·       824692 - Client Computer Cannot See or Access the Telephony Resources on a Server That Is Running Windows Server 2003

·       829697 - A memory leak occurs in the Svchost.exe process that hosts a TAPI in Windows 2000

·       834148 - You receive an error message if a program uses the ITCallInfo::SetCallInfoBuffer method from TAPI 3.0

·       840174 - A connection in the LINECALLSTATE_DIALTONE call state does not work as expected in Windows XP

·       895982 - You receive an "An unknown error occurred 62791" error message or an "An unknown error occurred 62795" error message when you try to enable the telephony server on a Microsoft Windows Server 2003-based computer

·       899418 - Programs may not be able to make a telephone connection after you disconnect and then reconnect a serial cable in Windows XP with Service Pack 2

·       924050 - Telephony API-based applications stop responding and you cannot disconnect telephone calls on a Windows Server 2003-based telephony server

·       925783 - Telephony API-based applications stop responding and you cannot disconnect telephone calls on a Windows 2000 Server-based telephony server

·       928046 - A custom wave driver is unloaded when a remote client computer connects to a Windows Server 2003-based computer that is running a TAPI program

·       929273 - Error message when you try to start the TAPI service on a Windows Server 2003-based computer that is joined to a domain: "No Call Appearance Available"

·       To be continued ...

See Q: How and where do I report TAPI problems ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Reporting Problems

Q: How and where do I report TAPI problems ?

A: See the following hints and tips:

·       Search this site’s sections Known Problems and Fixes, Knowledge Base Articles, and the following links for known problems (and fixes) to avoid duplicate reports

·       (New) Problems should always be reported to the TAPI newsgroup for discussion, reference, and possibly help

·       MSDN® Universal, Enterprise, Professional and Operating System Subscribers receive Professional Support for Developers (with a limited number of free phone incidents for technical support). If you already have a Microsoft® support contract, you can submit an incident online.

·       MSDN® Library online includes a link at the bottom of every TAPI documentation page to give feedback to the Platform SDK Team via eMail

·       MSDN® has a Contact Us page with additional links

·       KB articles (see Q: Are there any KB articles on TAPI available ?) include a link (in the upper right corner) to provide feedback on this article to Microsoft® Product Support Services (PSS)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Knowledge Base Articles

Q: Are there any KB articles on TAPI available ?

A: Yes, see the following list:

·       Search the Knowledge Base (Support and Troubleshooting) for "TAPI" OR "Telephony"

·       For confirmed problems (status: “Microsoft has confirmed that this is a problem”) see Q: Are there any known TAPI problems and fixes available ?

The following KB articles (INFO, PRB, HOW TO, SAMPLE, White Paper etc.) are related to Windows® 2000, Windows® XP, Windows® Server 2003, and/or Windows® VistaTM (older OS are not covered in this list). Use QuickInfo on the links (move your mouse pointer on the link and wait about a second) to see the beginning of the summary / symptoms section of the article:

·       108305 - INFO: Handling an Existing Call on a Line

·       108923 - PRB: ATSP Returns Error for Validated Parameter

·       132190 - How To Install TAPI Service Providers with TELEPHON.CPL

·       142730 - How to Create and Use the Modemlog.txt File

·       228448 - PRB: TAPI Callback Function Not Called When Using a Hidden Window for Notification

·       238479 - SAMPLE: RasBaud.exe Obtains the Baud Rate of an Existing RAS Connection Programmatically

·       254102 - Telephony Application Programming Interface Does Not Support Media Format Changes

·       259375 - HOW TO: Install and Configure Telephony Server for Client Access

·       281726 - PRB: TAPI Country IDs Can Change With Operating System Upgrade or Service Pack

·       303447 - INFO: How a TSP Lists TAPI Line Devices and Phone Devices on Windows CE 3.0

·       323151 - INFO: New Unimodem comm/datamodem Device Classes

·       750109 - New telephone numbering scheme in Greece (Phase 2 – Final)

·       810729 - White Paper: TAPI 3.0 Connection and Media Services

·       816110 - HOW TO: Configure Routing and Remote Access Tracing in Windows Server 2003

·       820937 - Changes To Dialing Codes

·       832017 - Service overview and network port requirements for the Windows Server system

·       838834 - How to disable H.323 functionality in Routing and Remote Access if it is configured to use NAT in Windows 2000 and in Windows Server 2003

·       841712 - Telephony Application Programming Interface (TAPI) functionality is not supported from managed code

·       841924 - You cannot have the Remote TSP and a telephony server enabled on the same computer

·       891861 - Update Rollup 1 for Windows 2000 SP4 and known issues

·       893756 - MS05-040: Vulnerability in Telephony service could allow remote code execution

·       To be continued ...

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



Miscellaneous Q&A

General

Q: What is TAPI ?

A: See MSDN® Library online: tapi3/telephony_application_programming_interfaces

·       See MSDN® Library online: tapi3/microsoft_telephony_overview

·       See MSDN® Library online: tapi3/tapi_quick_start

·       See MSDN® Library online: tapi3/microsoft_telephony_programming_model

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is IP Telephony supported by TAPI ?

A: Yes, in TAPI3 via H.323 and IP Multicast Conferencing:

·       See article “IP Telephony with TAPI 3.0” (see MSDN® Library online: dntapi/html/msdn_tapi_30)

·       TAPI3 offers a H323 TSP / MSP (see Q: What TSPs are available ?, Q: What MSPs are available ?)

·       TAPI3 offers an IP Multicast Conferencing TSP / MSP (see Q: What TSPs are available ?, Q: What MSPs are available ?)

·       TAPI3 offers Rendezvous IP Telephony Conferencing (see MSDN® Library online: tapi3/rendezvous_ip_telephony_conferencing)

·       See TAPI3 Code Samples (Outgoing, Incoming, tapisend, tapirecv, USBPhone, Rend) written in C++ / VB within Platform SDK

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is Fax supported by TAPI ?

A: Yes, but only by call control:

·       TAPI only provides the LINEMEDIAMODE_ Constants LINEMEDIAMODE_G3FAX and LINEMEDIAMODE_G4FAX (see MSDN® Library online: tapi/tapi2/linemediamode__constants)

·       Fax itself is supported via the Fax Service (see MSDN® Library online: fax/faxportal)

·       To incorporate basic fax functionality for users in client applications see the Fax Service Client API (see MSDN® Library online: fax/faxlegacy)

·       Fax Service is using TAPI internally for call control

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What is the difference between Canonical Addresses and Dialable Addresses ?

A: See MSDN® Library online: tapi3/address_ovr

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What can I do if I get compiler / linker errors (like undeclared identifier (C2065) or unresolved external symbol (LNK2001)) ?

A: See the following hints and tips:

·       Make sure you have installed latest Platform SDK

·       Make sure you that paths to Platform SDK is on top in the order of search paths for Include-Files / Library-Files (see: Visual Studio® -> Menu -> Tools -> Options -> Directories -> Include-Files / Library-Files)

·       For TAPI2: #include <TAPI.H> and add TAPI32.LIB (see: Visual Studio® -> Menu -> Project -> Settings -> Linker -> Object-/Library-Modules)

·       For TAPI3: #include <TAPI3.H> and see Q: What Libraries (.LIB files) do I need to build TAPI3 applications ?

·       For TSP: #include <TSPI.H>

·       #define TAPI_CURRENT_VERSION to the TAPI version you want to support (e.g. 0x00020002) before you include any of the files mentioned above

·       See Q: Where are TAPI errors codes defined ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Where are TAPI errors codes defined ?

A: See the following files and links:

·       For TAPI2 see <TAPI.H> on #define TAPIERR_ / LINEERR_ / PHONEERR_ Constants (see MSDN® Library online: tapi2/tapierr__constants / see MSDN® Library online: tapi2/lineerr__constants / see MSDN® Library online: tapi2/phoneerr__constants)

·       For TAPI3 see <TAPI3ERR.H> on #define TAPI_E_ Constants (see MSDN® Library online: tapi3/tapi_e__constants)

·       For TSP see <TAPI.H> on #define TAPIERR_ / LINEERR_ / PHONEERR_ Constants (see MSDN® Library online: tapi2/tapierr__constants / see MSDN® Library online: tapi2/lineerr__constants / see MSDN® Library online: tapi2/phoneerr__constants)

·       Toto® Tools LogoToto® Tool TAPI_Error_Codes is a tool to dump all TAPI 1.x, 2.x, and 3.x error codes: LINEERR_, PHONEERR_, and TAPI_E_ Constants (error descriptions are available in local OS language)

·       For TAPI2 you can use the TAPIERROR_FORMATMESSAGE macro to generate an identifier for standard TAPI error codes that can be used in the FormatMessage() function (See MSDN® Library online: tapi2/tapierror_formatmessage)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is there a TAPI trace available ?

A: Yes, some OS have this build in:

·       This is done by means of  "the common Tracing API that provides a uniform mechanism for generating diagnostic output for the RRAS components as well as any other applications that wish to use tracing." (see http://msdn.microsoft.com/library/en-us/rras/rras/configuration.asp for details):

o       netsh ras set tracing <binary_without_extension>  enable

·       The OS-internal TAPI tracing for TAPI32 (see Q: What is TAPI 2.x ?), TAPI3 (see Q: What is TAPI 3.x ?), TAPISRV (see Q: What is a TSP ?), or REMOTESP (see Q: What is RemoteSP.TSP ?) can be activated from console in XP and WS2k3 (no checked build required):

o       netsh ras set tracing tapi32 enable

o      netsh ras set tracing tapi3 enable

o      netsh ras set tracing tapisrv enable

o      netsh ras set tracing remotesp enable

·       To deactivate just use the same command with disable instead of enable

·       The Log Files can be found in \%windir%\tracing\

·       There are several Trace Levels (TL_) defined by the following Trace Flags (see http://msdn.microsoft.com/library/en-us/rras/rras/configuration.asp for details):

o      #define TL_ERROR ((DWORD)0x00010000 | TRACE_USE_MASK)

o       #define TL_WARN  ((DWORD)0x00020000 | TRACE_USE_MASK)

o       #define TL_INFO  ((DWORD)0x00040000 | TRACE_USE_MASK)

o       #define TL_TRACE ((DWORD)0x00080000 | TRACE_USE_MASK)

o       #define TL_EVENT ((DWORD)0x00100000 | TRACE_USE_MASK)

·       On W2k netsh is not available. Only with a checked build of W2k you can enable these traces directly in the Registry by means of creating these values under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\<binary_without_extension>:

o       "EnableFileTracing"=dword:00000001

o       "EnableConsoleTracing"=dword:00000001

o       "FileTracingMask"=dword:ffff0000

o       "ConsoleTracingMask"=dword:ffff0000

o       "MaxFileSize"=dword:00100000

o       "FileDirectory"=hex(2):25,00,77,00,69,00,6e,00,64,00,69,00,72,00,25,00,5c,00,74,00,72,00,61,00,63,00,69,00,6e,00,67,00,00,00

o      FileDirectory is a REG_EXPAND_SZ set to %windir%\tracing

·       These Registry values are also used on XP and WS2k3 and can be used e.g, to change the Trace Level or the max. File Size

·       See also KB article 816110 - HOW TO: Configure Routing and Remote Access Tracing in Windows Server 2003

                                                                 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What is the difference between the 1st party and the 3rd party model ?

A: There are two different views:

·       1st party view: you see only a single device (your own). A 1st party TSP usually supports one line device and maybe one phone device. A 1st party TSP usually has a direct connection to the device.

·       3rd party view: you see multiple devices (e.g. of a PBX). With a 3rd party TSP you can do call center stuff like call tracking (via CallID, RelatedCallID), associate CallData, distributing calls, ACD, IVR, VM etc. A 3rd party TSP usually has no direct connections to the devices but a central connection to the PBX via a proprietary CTI-Link (e.g. CSTA). See Q: What is the Microsoft® TAPI client / server architecture ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What is the Microsoft® TAPI client / server architecture ?

A: It is used for remote access to TAPI lines:

·       There is a detailed PowerPoint presentation on "Deploying TAPI-Based Solutions" by David Janson (from Microsoft®). The first part is about "Client/Server Telephony". See "tapi deployment commsol.ppt" in ftp://ftp.microsoft.com/developr/TAPI/remotesp.zip on the Microsoft® FTP Site for TAPI Developers.
”This presentation was given at the Communication Solutions Expo, in February 2000.  It has a very good description about how Microsoft Client/Server Telephony using remotesp.tsp works, along with lots of diagnostics advice.”

·       See KB article 259375 - HOW TO: Install and Configure Telephony Server for Client Access

·       Telephony Server needs to run on a server OS (Windows NT® Server, Windows® 2000 Server, or Windows® Server 2003)

·       All clients / server need to support at least TAPI 2.1.

·       TAPI2 and TAPI3 applications can access the remoted lines on the clients.

·       All clients / server need to be members of the same domain for user authentication and user to line assignment.

·       Administrators will be able to see all lines from the Telephony Server at the clients. This can’t be controlled by user to line assignment.

·       RemoteSP.TSP is used on the clients to access the lines on the Telephony Server that are assigned to the user (see Q: What TSPs are available ?).

·       See KB article 841924 - You cannot have the Remote TSP and a telephony server enabled on the same computer

·       Usually 3rd party TSPs are installed on the Telephony Server and remoted to the clients (see Q: What is the difference between the 1st party and the 3rd party model ?).

·       Microsoft® TAPI client / server architecture is only for remoting call control. It is not possible to access the media stream from the clients (even if the TSP supports this on the Telephony Server).

·       See KB article 824692 - Client Computer Cannot See or Access the Telephony Resources on a Server That Is Running Windows Server 2003

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How can I track a call when it is moving from device to device ?

A: With a 3rd party TSP:

·       You need a 3rd party TSP (see Q: What is the difference between the 1st party and the 3rd party model ?)

·       The TSP has to support CallID, RelatedCallID and/or CallData:

o      CallID: In some telephony environments, the switch or service provider can assign a unique identifier to each call. This allows the call to be tracked across transfers, forwards, or other events. The domain of these call IDs and their scope is service provider-defined. The CallID makes this unique identifier available to the applications.
In TAPI2 lineGetCallInfo is used to retrieve the CallID (LINECALLINFO.dwCallID).
In TAPI3 ITCallInfo::get_ CallInfoLong (CIL_CALLID) is used to retrieve the CallID.

o      RelatedCallID: Telephony environments that use the call ID often may find it necessary to relate one call to another. The RelatedCallID may be used by the service provider for this purpose.
In TAPI2 lineGetCallInfo is used to retrieve the RelatedCallID (LINECALLINFO.dwRelatedCallID).
In TAPI3 ITCallInfo::get_ CallInfoLong (CIL_RELATEDCALLID) is used to retrieve the RelatedCallID.

o      CallData: Depending on the service provider implementation, the CallData can be propagated to all applications having handles to the call, including those on other machines (through the server), and can travel with the call when it is transferred.
In TAPI2 lineSetCallData is used to set CallData and lineGetCallInfo is used to retrieve the CallData (LINECALLINFO.dwCallDataOffset/Size).
In TAPI3 ITCallInfo::put_CallInfoBuffer / ::SetCallInfoBuffer (CIB_CALLDATABUFFER) is used to set CallData and ITCallInfo::get_CallInfoBuffer / ::GetCallInfoBuffer (CIB_CALLDATABUFFER) is used to retrieve the CallData.

·       E.g. the Siemens HiPath TAPI 170 TSP for Hicom 150 / HiPath 3000 PBXs does support these features (CallID / RelatedCallID and CallData), see Q: What TSPs are available ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


TAPI2

Q: What is TAPI 2.x ?

A: See MSDN® Library online: tapi2/tapi_2_2_start_page

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What operating systems do support TAPI 2.x ?

A: See MSDN® Library online: tapi2/tapi_versioning_page

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How is do-not-disturb (DND) represented in a LINEFORWARD structure (used with lineForward and LINEADDRESSSTATUS) ?

A: A NULL destination address is specified, see MSDN® Library online: tapi2/lineforward

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I use lineForward (how to set LINEFORWARDLIST, LINEFORWARD structures) ?

A: See example (in C++) with a LINEFORWARDLIST with 2 LINEFORWARD entries:

·       On lineForward you have to pass a pointer to LINEFORWARDLIST as lpForwardList parameter

·       This LINEFORWARDLIST contains zero, one or more entries and is therefore of variable size

·       The number of entries is set in LINEFORWARDLIST.dwNumEntries

·       These entries are each of LINEFORWARD type that may contain data of fixed and variable sizes

·       Variable sized data is placed behind the LINEFORWARD array (i.e. behind the last LINEFORWARD entry)

·       Note that in a LINEFORWARD structure all offsets, in bytes, count from the beginning of the containing data structure (i.e. LINEFORWARDLIST)

·       Additional note that all these structures and the variable size data need to be in a single memory block

 

// Example (in C++) with a LINEFORWARDLIST with 2 LINEFORWARD entries:

DWORD dwNumEntries = 2;

 

// let's say we want to use the 1st entry to forward

// only a specific caller ID (szCallerAddress_1)

// unconditionally to another destination (szDestAddress_1)

char szCallerAddress_1[] = "5551234";

DWORD dwForwardMode_1 = LINEFORWARDMODE_UNCONDSPECIFIC ;

char szDestAddress_1[] = "5554321";

 

// let's say we have want to use the 2nd entry to forward

// all (other) callers

// if they come from external and I'm busy

// to another destination (szDestAddress_2)

DWORD dwForwardMode_2 = LINEFORWARDMODE_BUSYEXTERNAL ;

char szDestAddress_2[] = "5556789";

 

// now we need a single memory block to hold the structures.

DWORD dwTotalSize = sizeof(LINEFORWARDLIST);

dwTotalSize += (dwNumEntries – 1) * sizeof(LINEFORWARD); // one LINEFORWARD entry already included in LINEFORWARDLIST

dwTotalSize += strlen(szCallerAddress_1) +1; // 1 for the string terminator

dwTotalSize += strlen(szDestAddress_1) +1; // 1 for the string terminator

dwTotalSize += strlen(szDestAddress_2) +1; // 1 for the string terminator

lpForwardList = (LINEFORWARDLIST *) malloc(dwTotalSize);

memset(lpForwardList, 0, dwTotalSize); // set initial values

 

 

// now we can build the structures within the memory block

 

// we need an offset from the beginning of the main structure (LINEFORWARDLIST)

// to the end of the fixed part behind the two LINEFORWARD entries

// for filling in the variable sized stuff

DWORD dwOffset = sizeof(LINEFORWARDLIST);

dwOffset += (dwNumEntries – 1) * sizeof(LINEFORWARD); // one LINEFORWARD entry already included in LINEFORWARDLIST

 

lpForwardList->dwTotalSize = dwTotalSize;

lpForwardList->dwNumEntries = dwNumEntries;

 

// LINEFORWARD entry #1 (index 0)

lpForwardList->ForwardList[0].dwForwardMode = dwForwardMode_1;

// CallerAddress

lpForwardList->ForwardList[0].dwCallerAddressSize = sizeof(szCallerAddress_1) +1;

lpForwardList->ForwardList[0].dwCallerAddressOffset = dwOffset;

strcpy((char*)((BYTE*)lpForwardList + dwOffset), szCallerAddress_1);

dwOffset += strlen(szCallerAddress_1) +1;

// DestAddress

lpForwardList->ForwardList[0].dwDestAddressSize = sizeof(szDestAddress_1) +1;

lpForwardList->ForwardList[0].dwDestAddressOffset = dwOffset;

strcpy((char*)((BYTE*)lpForwardList + dwOffset), szDestAddress_1);

dwOffset += strlen(szDestAddress_1) +1;

 

// LINEFORWARD entry #2 (index 1)

lpForwardList->ForwardList[1].dwForwardMode = dwForwardMode_2;

// DestAddress

lpForwardList->ForwardList[1].dwDestAddressSize = sizeof(szDestAddress_2) +1;

lpForwardList->ForwardList[1].dwDestAddressOffset = dwOffset;

strcpy((char*)((BYTE*)lpForwardList + dwOffset), szDestAddress_2);

dwOffset += strlen(szDestAddress_2) +1; // not needed here (last variable size data)

 

// eventually we can call lineForward with lpForwardList

 

/* This code constructs the following memory block containing the ForwardList. The offset is relative to lpForwardList.

offset:      struct member / variable sized data             comment

0x0000000:   LINEFORWARDLIST.dwTotalSize             // 0x0000050

0x0000004:   LINEFORWARDLIST.dwNumEntries             // 0x0000002

0x0000008:   LINEFORWARDLIST.LINEFORWARD[0].dwForwardMode             // LINEFORWARDMODE_UNCONDSPECIFIC

0x000000C:   LINEFORWARDLIST.LINEFORWARD[0].dwCallerAddressSize             // 0x0000008

0x0000010:   LINEFORWARDLIST.LINEFORWARD[0].dwCallerAddressOffset             // 0x0000038

0x0000014:   LINEFORWARDLIST.LINEFORWARD[0].dwDestCountryCode             // (0x0000000)

0x0000018:   LINEFORWARDLIST.LINEFORWARD[0].dwDestAddressSize             // 0x0000008

0x000001C:   LINEFORWARDLIST.LINEFORWARD[0].dwDestAddressOffset             // 0x0000040

0x0000020:   LINEFORWARDLIST.LINEFORWARD[1].dwForwardMode             // LINEFORWARDMODE_BUSYEXTERNAL

0x0000024:   LINEFORWARDLIST.LINEFORWARD[1].dwCallerAddressSize             // (0x0000000)

0x0000028:   LINEFORWARDLIST.LINEFORWARD[1].dwCallerAddressOffset             // (0x0000000)

0x000002C:   LINEFORWARDLIST.LINEFORWARD[1].dwDestCountryCode             // (0x0000000)

0x0000030:   LINEFORWARDLIST.LINEFORWARD[1].dwDestAddressSize             // 0x0000008

0x0000034:   LINEFORWARDLIST.LINEFORWARD[1].dwDestAddressOffset             // 0x0000048

0x0000038:   szCallerAddress_1 (incl. zero termination)             // “5551234” + 0x00

0x0000040:   szDestAddress_1 (incl. zero termination)             // “5554321” + 0x00

0x0000048:   szDestAddress_2 (incl. zero termination)             // “5556789” + 0x00

0x0000050:  

*/

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I transfer a call with TAPI2 ?

A: See sequence of API calls: (several possibilities, it depends upon the TSP which is/are supported if supported at all)

·       Blind Transfer

1)    lineGetAddressCaps(): check if (LINEADDRESSCAPS.dwCallFeatures & LINECALLFEATURE_BLINDTRANSFER) to see whether lineBlindTransfer is supported at all on this address (if not you can not proceed)

2)    a given hCall in LINECALLSTATE_CONNECTED

3)    lineGetCallStatus (hCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_BLINDTRANSFER) to see whether lineBlindTransfer is supported at this state  on this call (if not you can not proceed)

4)    lineBlindTransfer (hCall, "555-1234", 0)

5)    wait for LINE_REPLY with dwRequestID returned by lineBlindTransfer

6)    wait for LINECALLSTATE_DISCONNECTED / _IDLE on hCall

7)    lineDeallocateCall (hCall)

·       Supervised Transfer

1)    lineGetAddressCaps(): check if (LINEADDRESSCAPS.dwCallFeatures & (LINECALLFEATURE_SETUPTRANSFER | LINECALLFEATURE_DIAL | LINECALLFEATURE_COMPLETETRANSF)) to see whether lineSetupTransfer / lineDial / lineCompleteTransfer are supported at all on this address (if not you can not proceed); additionally check if (LINEADDRESSCAPS.dwCallFeatures2 & LINECALLFEATURE2_TRANSFERNORM) to see whether lineCompleteTransfer with LINETRANSFERMODE_TRANSFER is supported at all on this address (note that some TSPs don’t support this flag but do support this feature)

2)    a given hCall in LINECALLSTATE_CONNECTED

3)    lineGetCallStatus (hCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_SETUPTRANSFER) to see whether lineSetupTransfer is supported at this state  on this call (if not you can not proceed)

4)    lineSetupTransfer (hCall, &hConsultCall, NULL)

5)    wait for LINE_REPLY with dwRequestID returned by lineSetupTransfer

6)    wait for LINECALLSTATE_ONHOLDPENDTRANSFER on hCall

7)    wait for LINECALLSTATE_DIALTONE on hConsultCall

8)    lineGetCallStatus (hConsultCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_DIAL) to see whether lineDial is supported at this state  on this call (if not you can not proceed)

9)    lineDial (hConsultCall, "555-1234", 0)

10)wait for LINE_REPLY with dwRequestID returned by lineDial

11)wait for LINECALLSTATE_RINGBACK / _CONNECTED on hConsultCall depending on transferring before / after talking to consulted party

12)lineGetCallStatus (hCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_COMPLETETRANSF) to see whether lineCompleteTransfer is supported at this state  on this call (if not you can not proceed); additionally check if (LINECALLSTATUS.dwCallFeatures2 & LINECALLFEATURE2_TRANSFERNORM) to see whether lineCompleteTransfer with LINETRANSFERMODE_TRANSFER is supported at this state  on this call (note that some TSPs don’t support this flag but do support this feature)

13)lineCompleteTransfer (hCall, hConsultCall, NULL, LINETRANSFERMODE_TRANSFER)

14)wait for LINE_REPLY with dwRequestID returned by lineCompleteTransfer

15)wait for LINECALLSTATE_DISCONNECTED / _IDLE on hCall

16)wait for LINECALLSTATE_DISCONNECTED / _IDLE on hConsultCall

17)lineDeallocateCall (hCall)

18)lineDeallocateCall (hConsultCall)

·       One Step Transfer (variant of  Supervised Transfer)

1)    lineGetAddressCaps(): check if (LINEADDRESSCAPS.dwCallFeatures & (LINECALLFEATURE_SETUPTRANSFER | LINECALLFEATURE_COMPLETETRANSF)) to see whether lineSetupTransfer / lineCompleteTransfer are supported at all on this address (if not you can not proceed); additionally check if (LINEADDRESSCAPS.dwCallFeatures2 & (LINECALLFEATURE2_ONESTEPTRANSFER | LINECALLFEATURE2_TRANSFERNORM)) to see whether lineSetupTransfer with LINECALLPARAMFLAGS_ONESTEPTRANSFER and lineCompleteTransfer with LINETRANSFERMODE_TRANSFER are supported at all on this address (if not you can not proceed, but note that some TSPs don’t support the flag LINECALLFEATURE2_TRANSFERNORM but do support this feature)

2)    a given hCall in LINECALLSTATE_CONNECTED

3)    lineGetCallStatus (hCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_SETUPTRANSFER) to see whether lineSetupTransfer is supported at this state  on this call (if not you can not proceed); additionally check if (LINECALLSTATUS.dwCallFeatures2 & LINECALLFEATURE2_ONESTEPTRANSFER) to see whether lineSetupTransfer with LINECALLPARAMFLAGS_ONESTEPTRANSFER is supported at this state  on this call (if not you can not proceed)

4)    lineSetupTransfer (hCall, &hConsultCall, &{LINECALLPARAMS.TargetAddress = "555-1234", LINECALLPARAMS.dwCallParamFlags = LINECALLPARAMFLAGS_ONESTEPTRANSFER})

5)    wait for LINE_REPLY with dwRequestID returned by lineSetupTransfer

6)    wait for LINECALLSTATE_ONHOLDPENDTRANSFER on hCall

7)    wait for LINECALLSTATE_DIALTONE on hConsultCall

8)    lineGetCallStatus (hConsultCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_DIAL) to see whether lineDial is supported at this state  on this call (if not you can not proceed)

9)    lineDial (hConsultCall, "555-1234", 0)

10)wait for LINE_REPLY with dwRequestID returned by lineDial

11)wait for LINECALLSTATE_RINGBACK / _CONNECTED on hConsultCall depending on transferring before / after talking to consulted party

12)lineGetCallStatus (hCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_COMPLETETRANSF) to see whether lineCompleteTransfer is supported at this state  on this call (if not you can not proceed); additionally check if (LINECALLSTATUS.dwCallFeatures2 & LINECALLFEATURE2_TRANSFERNORM) to see whether lineCompleteTransfer with LINETRANSFERMODE_TRANSFER is supported at this state  on this call (note that some TSPs don’t support this flag but do support this feature)

13)lineCompleteTransfer (hCall, hConsultCall, NULL, LINETRANSFERMODE_TRANSFER)

14)wait for LINE_REPLY with dwRequestID returned by lineCompleteTransfer

15)wait for LINECALLSTATE_DISCONNECTED / _IDLE on hCall

16)wait for LINECALLSTATE_DISCONNECTED / _IDLE on hConsultCall

17)lineDeallocateCall (hCall)

18)lineDeallocateCall (hConsultCall)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I make a conference with TAPI2 ?

A: See sequence of API calls: (several possibilities, it depends upon the TSP which is/are supported if supported at all)

·       via lineCompleteTransfer

1)    lineGetAddressCaps(): check if (LINEADDRESSCAPS.dwCallFeatures & (LINECALLFEATURE_SETUPTRANSFER | LINECALLFEATURE_DIAL | LINECALLFEATURE_COMPLETETRANSF)) to see whether lineSetupTransfer / lineDial / lineCompleteTransfer are supported at all on this address (if not you can not proceed); additionally check if (LINEADDRESSCAPS.dwCallFeatures2 & LINECALLFEATURE2_TRANSFERCONF) to see whether lineCompleteTransfer with LINETRANSFERMODE_CONFERENCE is supported at all on this address (note that some TSPs don’t support this flag but do support this feature)

2)    a given hCall in LINECALLSTATE_CONNECTED

3)    lineGetCallStatus (hCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_SETUPTRANSFER) to see whether lineSetupTransfer is supported at this state  on this call (if not you can not proceed)

4)    lineSetupTransfer (hCall, &hConsultCall, NULL)

5)    wait for LINE_REPLY with dwRequestID returned by lineSetupTransfer

6)    wait for LINECALLSTATE_ONHOLDPENDTRANSFER on hCall

7)    wait for LINECALLSTATE_DIALTONE on hConsultCall

8)    lineGetCallStatus (hConsultCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_DIAL) to see whether lineDial is supported at this state  on this call (if not you can not proceed)

9)    lineDial (hConsultCall, "555-1234", 0)

10)wait for LINE_REPLY with dwRequestID returned by lineDial

11)wait for LINECALLSTATE_CONNECTED on hConsultCall

12)lineGetCallStatus (hCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_COMPLETETRANSF) to see whether lineCompleteTransfer is supported at this state  on this call (if not you can not proceed); additionally check if (LINECALLSTATUS.dwCallFeatures2 & LINECALLFEATURE2_TRANSFERCONF) to see whether lineCompleteTransfer with LINETRANSFERMODE_CONFERENCE is supported at this state  on this call (note that some TSPs don’t support this flag but do support this feature)

13)lineCompleteTransfer (hCall, hConsultCall, &hConfCall, LINETRANSFERMODE_CONFERENCE)

14)wait for LINE_REPLY with dwRequestID returned by lineCompleteTransfer

15)wait for LINECALLSTATE_CONFERENCED on hCall

16)wait for LINECALLSTATE_CONFERENCED on hConsultCall

17)wait for LINECALLSTATE_CONNECTED on hConfCall

·       via lineSetupConference with existing call

1)    lineGetAddressCaps(): check if ((LINEADDRESSCAPS. dwAddressFeatures & LINEADDRFEATURE_SETUPCONF) && (LINEADDRESSCAPS.dwCallFeatures & (LINECALLFEATURE_DIAL | LINECALLFEATURE_ADDTOCONF))) to see whether lineSetupConference / lineDial / lineAddToConference are supported at all on this address (if not you can not proceed)

2)    a given hCall in LINECALLSTATE_CONNECTED

3)    lineGetAddressStatus (hLine, 0, & LINEADDRESSSTATUS): check if (LINEADDRESSSTATUS. dwAddressFeatures & LINEADDRFEATURE_SETUPCONF) to see whether lineSetupConference is supported at this state on this address (if not you can not proceed)

4)    lineSetupConference (hCall, NULL, &hConfCall, &hConsultCall, 3, NULL)

5)    wait for LINE_REPLY with dwRequestID returned by lineSetupConference

6)    wait for LINECALLSTATE_CONFERENCED on hCall

7)    wait for LINECALLSTATE_DIALTONE on hConsultCall

8)    wait for LINECALLSTATE_ONHOLDPENDINGCONFERENCE on hConfCall

9)    lineGetCallStatus (hConsultCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_DIAL) to see whether lineDial is supported at this state  on this call (if not you can not proceed)

10)lineDial (hConsultCall, "555-1234", 0)

11)wait for LINE_REPLY with dwRequestID returned by lineDial

12)wait for LINECALLSTATE_CONNECTED on hConsultCall

13)lineGetCallStatus (hConfCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_ADDTOCONF) to see whether lineAddToConference is supported at this state  on this call (if not you can not proceed)

14)lineAddToConference (hConfCall, hConsultCall)

15)wait for LINE_REPLY with dwRequestID returned by lineAddToConference

16)wait for LINECALLSTATE_CONFERENCED on hConsultCall

17)wait for LINECALLSTATE_CONNECTED on hConfCall

·       via lineSetupConference without existing call

1)    lineGetAddressCaps(): check if ((LINEADDRESSCAPS. dwAddressFeatures & LINEADDRFEATURE_SETUPCONF) && (LINEADDRESSCAPS.dwCallFeatures & (LINECALLFEATURE_DIAL | LINECALLFEATURE_ADDTOCONF | LINECALLFEATURE_PREPAREADDCONF))) to see whether lineSetupConference / lineDial / lineAddToConference/ linePrepareAddToConference are supported at all on this address (if not you can not proceed)

2)    no existing hCall, line device is idle

3)    lineGetAddressStatus (hLine, 0, & LINEADDRESSSTATUS): check if (LINEADDRESSSTATUS. dwAddressFeatures & LINEADDRFEATURE_SETUPCONF) to see whether lineSetupConference is supported at this state on this address (if not you can not proceed)

4)    lineSetupConference (NULL, hLine, &hConfCall, &hConsultCall_1, 3, NULL)

5)    wait for LINE_REPLY with dwRequestID returned by lineSetupConference

6)    wait for LINECALLSTATE_DIALTONE on hConsultCall_1

7)    wait for LINECALLSTATE_ONHOLDPENDINGCONFERENCE on hConfCall

8)    lineGetCallStatus (hConsultCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_DIAL) to see whether lineDial is supported at this state  on this call (if not you can not proceed)

9)    lineDial (hConsultCall_1, "555-1234", 0)

10)wait for LINE_REPLY with dwRequestID returned by lineDial

11)wait for LINECALLSTATE_CONNECTED on hConsultCall_1

12)lineGetCallStatus (hConfCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_ADDTOCONF) to see whether lineAddToConference is supported at this state  on this call (if not you can not proceed)

13)lineAddToConference (hConfCall, hConsultCall_1)

14)wait for LINE_REPLY with dwRequestID returned by lineAddToConference

15)wait for LINECALLSTATE_CONFERENCED on hConsultCall_1

16)wait for LINECALLSTATE_CONNECTED on hConfCall

17)lineGetCallStatus (hConfCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_PREPAREADDCONF) to see whether linePrepareAddToConference is supported at this state  on this call (if not you can not proceed)

18)linePrepareAddToConference (hConfCall, &hConsultCall_2, NULL)

19)wait for LINE_REPLY with dwRequestID returned by linePrepareAddToConference

20)wait for LINECALLSTATE_DIALTONE on hConsultCall_2

21)wait for LINECALLSTATE_ONHOLDPENDINGCONFERENCE on hConfCall

22)lineDial (hConsultCall_2, "555-5678", 0)

23)wait for LINE_REPLY with dwRequestID returned by lineDial

24)wait for LINECALLSTATE_CONNECTED on hConsultCall_2

25)lineGetCallStatus (hConfCall, &LINECALLSTATUS): check if (LINECALLSTATUS.dwCallFeatures & LINECALLFEATURE_ADDTOCONF) to see whether lineAddToConference is supported at this state  on this call (if not you can not proceed)

26)lineAddToConference (hConfCall, hConsultCall_2)

27)wait for LINE_REPLY with dwRequestID returned by lineAddToConference

28)wait for LINECALLSTATE_CONFERENCED on hConsultCall_2

29)wait for LINECALLSTATE_CONNECTED on hConfCall

·       Additional TAPI functions for conferencing:

o      lineGetConfRelatedCalls

o      lineRemoveFromConference

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I partially dial with TAPI2 ?

A: See sequence of API calls: (several possibilities, it depends upon the TSP which is/are supported if supported at all)

·       general approach via lineMakeCall / lineDial and a semi-colon (“;”) at the end of a partially specified dialable address

1)    say you want to dial "555-1234-*567890#", you could do it in some stages:

2)    lineMakeCall ("555;")

3)    lineDial ("1234;")

4)    lineDial ("*567;")

5)    lineDial ("890#")

·       UniModem.TSP approach via lineMakeCall / lineGenerateDigits (UniModem.TSP doesn’t support partially dialling via lineDial)

1)    say you want to dial "555-1234-*567890#", you could do it in some stages:

2)    lineMakeCall ("555")

3)    lineGenerateDigits ("1234")

4)    lineGenerateDigits ("*567")

5)    lineGenerateDigits ("890#")

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is there something special with asynchronous functions in TAPI2 ?

A: Asynchronous functions are only complete after LINE_REPLY / PHONE_REPLY (or on error):

·       Asynchronous functions return (synchronously) either a negative TAPI error code or a positive RequestID

·       With a negative TAPI error code (LINEERR_ / PHONEERR_ Constants) on synchronous return the asynchronous functions is completed: it failed (synchronously)

·       With a positive RequestID on synchronous return the asynchronous functions is not completed but starts working in the background, only the argument check etc. passed with no error

·       Wait for asynchronous LINE_REPLY / PHONE_REPLY with dwParam1 = RequestID: dwParam2 indicates SUCCESS (0) or failure (TAPI error code)

·       Note that all pointers to memory (e.g. LPHCALL) passed to an asynchronous function must be valid until the LINE_REPLY / PHONE_REPLY is received (if the function returns a  positive RequestID)

·       Note furthermore that handles etc. (e.g. a HCALL written to a LPHCALL location) returned by TAPI are only valid after LINE_REPLY / PHONE_REPLY is received

·       See MSDN® Library online: tapi3/synchronous_asynchronous_model

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I use LINECALLPRIVILEGE_ Constants in TAPI2 ?

A: See the following hints and tips:

·       There are 3 Constants defined: LINECALLPRIVILEGE_NONE, LINECALLPRIVILEGE_MONITOR and LINECALLPRIVILEGE_OWNER to be used in lineOpen (dwPrivileges)

·       See MSDN® Library online: tapi2/linecallprivilege__constants

·       Independent of the specified privilege(s) you will become automatically owner of every call your application is generating.

·       Use LINECALLPRIVILEGE_NONE if you are not interested in any other calls than the ones your application is generating (e.g. via lineMakeCall, linePickup). With this privilege you will never be notified about incoming calls.

·       Use LINECALLPRIVILEGE_MONITOR to get notified about every call (outgoing and incoming) on this line.

·       Use LINECALLPRIVILEGE_OWNER to try to get owner of any call on this line e.g. to be able to lineAnswer incoming calls. Note that there is maybe more than one application having opened that line with this privilege but TAPI assigns only one of it this privilege. The others will not be notified about this call unless the have additionally set LINECALLPRIVILEGE_MONITOR.

·       If you want to see every call on this line and want to become owner of every call you should set dwPrivileges = LINECALLPRIVILEGE_MONITOR | LINECALLPRIVILEGE_OWNER

·       For every call that you haven’t got owner privilege at the moment you can get it via lineSetCallPrivilege (hCall, LINECALLPRIVILEGE_OWNER)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Are there any .NET wrappers for TAPI2 available ?

A: Yes:

·       See KB article 841712 - Telephony Application Programming Interface (TAPI) functionality is not supported from managed code

·       GotDotNet User Sample from Helen Warn

·       Cuba from Angus Comber

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


TAPI3

Q: What is TAPI 3.x ?

A: See MSDN® Library online: tapi3/tapi_3_1_start_page

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What is the difference between TAPI 3.0 and 3.1 ?

A: See MSDN® Library online: tapi3/what_s_new and in addition:

·       Note that TAPI 3.1 is only available on Windows® XP and Windows® Server 2003 and Windows® VistaTM

·       File Terminals are only available with TAPI 3.1 (see MSDN® Library online: tapi3/file_terminals)

·       Multitrack Terminals are only available with TAPI 3.1 (see MSDN® Library online: tapi3/file_terminals)

·       Pluggable Terminals are only available with TAPI 3.1 (see MSDN® Library online: tapi3/file_terminals)

·       Phone Control and the Phone Object are only available with TAPI 3.1 (see MSDN® Library online: tapi3/phone_control_and_the_phone_object)

·       Extended Services are not supported in TAPI 3.0 (but partially available in TAPI 3.1)

·       All ITxxx2 interfaces are only available with TAPI 3.1

·       See Q: Is there a TAPI 2.x to TAPI 3.x Cross-Reference ?

·       See Q: Has TAPI3 any disadvantages over TAPI2 ?

·       To be continued ...

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is there a TAPI 2.x to TAPI 3.x Cross-Reference ?

A: Yes, see MSDN® Library online for details and in addition:

·       lineGetID / phoneGetID from TAPI2 correspond with ITLegacyCallMediaControl::GetID / ITLegacyCallMediaControl2::GetIDAsVariant / ITLegacyAddressMediaControl::GetID from TAPI 3.0/3.1 (Note that all ::GetID methods from TAPI3 are only available if a call exists)

·       lineGetDevConfig / lineSetDevConfig from TAPI2 correspond with ITLegacyAddressMediaControl::GetDevConfig / ::SetDevConfig from TAPI3

·       lineConfigDialog / lineConfigDialogEdit from TAPI2 correspond with ITLegacyAddressMediaControl2::ConfigDialog / ::ConfigDialogEdit from TAPI 3.1 but there is no correspondence in TAPI 3.0

·       LINECALLPRIVILEGE_ Constants from TAPI2 correspond with fMonitor / fOwner in ITTAPI::RegisterCallNotifications from TAPI3 (See Q: How do I use LINECALLPRIVILEGE_ Constants in TAPI2 ?)

·       For cross-reference on CallID, RelatedCallID and CallData see Q: How can I track a call when it is moving from device to device ?

·       See Q: Has TAPI3 any advantages over TAPI2 ?

·       See Q: Has TAPI3 any disadvantages over TAPI2 ?

·       To be continued ...

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Has TAPI3 any advantages over TAPI2 ?

A: Yes, see the following list: (this list is not final)

·       TAPI3 is a COM-based telephony API (see MSDN® Library online: tapi3/tapi_3_x_versus_tapi_2_x)

·       TAPI3 supports IP Telephony (see Q: Is IP Telephony supported by TAPI ?)

·       TAPI3 supports advanced media control (see MSDN® Library online: tapi3/tapi_3_1_overview) via Media Stream Providers (MSP, see Q: What is a MSP ?)

·       To be continued ...

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Has TAPI3 any disadvantages over TAPI2 ?

A: Yes, see the following list: (this list is not final)

·       TAPI 2.x is available on Windows® 95 and later

·       TAPI 3.0 is only available on Windows® 2000 and later

·       TAPI 3.1 is only available on Windows® XP and Windows® Server 2003 and Windows® VistaTM

·       No TAPI 3.x upgrades available for other OS

·       TAPI2 to TAPI3 migration: conversion to the COM API may not be cost effective (see MSDN® Library online: tapi3/tapi_3_x_versus_tapi_2_x)

·       Phone Devices are not supported in TAPI 3.0 (but available in TAPI 3.1)

·       Extended Services are not supported in TAPI 3.0 (but partially available in TAPI 3.1)

·       Partially available Extended Services in TAPI 3.1 don’t support lineDevSpecificFeature function, LINE_DEVSPECIFICFEATURE message from TAPI2

·       LINECALLSTATE_ Constants from TAPI2 are not fully ported to TAPI3 CALL_STATE enums (especially LINECALLSTATE_RINGBACK is missing)

·       CallStateDetail (LINEBUSYMODE_, LINECONNECTEDMODE_, LINEDIALTONEMODE_, LINEOFFERINGMODE_, LINESPECIALINFO_, LINEDISCONNECTMODE_ Constants) from TAPI2 LINE_CALLSTATE message only partially available in TAPI3 as CALL_STATE_EVENT_CAUSE enums (only CEC_DISCONNECT_)

·       LINE_LINEDEVSTATE (LINEDEVSTATE_RINGING, ring mode, ring count) message from TAPI2 only partially available in TAPI3 as ADDRESS_EVENT AE_RINGING but ring mode, ring count are not available on any TAPI3 interface

·       LINECALLSTATUS.tStateEntryTime from TAPI2 is not available on any TAPI3 interface

·       LINEDEVCAPS.ProviderInfo / PHONECAPS.ProviderInfo from TAPI2 is not available on any TAPI3 interface

·       lineGetProviderList from TAPI2 is not available on any TAPI3 interface

·       ITLegacyCallMediaControl::GenerateDigits from TAPI 3.0 doesn’t support specifying a duration – only ITLegacyCallMediaControl2::GenerateDigits2 from TAPI 3.1 does (equivalent to lineGenerateDigits from TAPI2)

·       ITLegacyCallMediaControl::GetID / ITLegacyCallMediaControl2::GetIDAsVariant / ITLegacyAddressMediaControl::GetID from TAPI 3.0/3.1 are only available if a call exists as opposed to lineGetID from TAPI2 were it is possible to retrieve an ID with LINECALLSELECT_LINE

·       lineConfigDialog / lineConfigDialogEdit from TAPI2 correspond with ITLegacyAddressMediaControl2::ConfigDialog / ::ConfigDialogEdit from TAPI 3.1 but there is no correspondence in TAPI 3.0

·       APPINFO array (part of LINEDEVSTATUS from TAPI2) has no correspondence in TAPI3

·       See KB article 841712 - Telephony Application Programming Interface (TAPI) functionality is not supported from managed code

·       To be continued ...

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I initialize TAPI with TAPI3 ?

A: See MSDN® Library online: tapi3/initialize_tapi

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I select an address with TAPI3 ?

A: See MSDN® Library online: tapi3/select_an_address

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I register events with TAPI3 ?

A: See MSDN® Library online: tapi3/register_events and in addition:

·       see MSDN® Library online: tapi3/hints_and_tips

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I select a terminal with TAPI3 ?

A: See MSDN® Library online: tapi3/select_a_terminal

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I make a call with TAPI3 ?

A: See MSDN® Library online: tapi3/make_a_call

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I receive a call with TAPI3 ?

A: See MSDN® Library online: tapi3/receive_a_call

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I create a simple conference with TAPI3 ?

A: See MSDN® Library online: tapi3/create_a_simple_conference

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I transfer a call with TAPI3 ?

A: See MSDN® Library online: tapi/tapi3/transfer_a_call

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I redirect a call with TAPI3 ?

A: Use ITBasicCallControl::BlindTransfer on calls with CALL_STATE CS_OFFERING

·       Equivalent to lineRedirect from TAPI2 on calls with LINECALLSTATE_OFFERING

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What Libraries (.LIB files) do I need to build TAPI3 applications ?

A: See MSDN® Library online: tapi3/libraries_required

·       Add .LIB files (see: Visual Studio® -> Menu -> Project -> Settings -> Linker -> Object-/Library-Modules)

·       These Libraries are related to linker error LNK2001: unresolved external symbol, see Q: What can I do if I get compiler / linker errors (like undeclared identifier (C2065) or unresolved external symbol (LNK2001)) ?

·       See Q: Where are TAPI errors codes defined ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I use fMonitor / fOwner in ITTAPI::RegisterCallNotifications in  TAPI3 ?

A: See Q: How do I use LINECALLPRIVILEGE_ Constants in TAPI2 ? for correspondence and in addition:

·       See MSDN® Library online: tapi3/ittapi_registercallnotifications

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


MSPI

Q: What is a MSP ?

A: See MSDN® Library online: tapi3/media_service_providers_start_page and in addition:

·       See Q: What are TAPI Service Providers ?

·       See MSDN® Library online: tapi3/about_the_media_service_provider_msp_

·       See MSDN® Library online: tapi3/msp_architecture

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What MSPs are available ?

A: See the following list of MSPs ordered by manufacturers: (this list is not complete)

·       Microsoft®

o      Wave MSP (see MSDN® Library online: tapi3/wave_msp)

o      Raw Channel Access MSP (see MSDN® Library online: tapi3/raw_channel_access_msp)

o      IP Multicast Conferencing MSP (see MSDN® Library online: tapi3/ipconf_msp)

o      H.323 MSP (see MSDN® Library online: tapi3/h323_msp)

·       To be continued ...

·       See Q: Is there a MSP with sample code available ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is there a MSP with sample code available ?

A: Yes, see the following links:

·       Take a look at the MSP projects in the Core SDK from Windows® SDK (s. Platform SDK):
After installing the Core SDK you will find these sub-directories:
\NetDS\Tapi\Tapi3\Cpp\Msp\SampleMSP
\NetDS\Tapi\Tapi3\Cpp\Msp\MSPBase

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is there a MSP for full-duplex support with UniModem TSP available ?

A: Yes, see the following link:

·       http://www.tapi.info/default.aspx/TAPI/UnimodemFullDuplexSupport.html

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


TSPI

Q: What are TAPI Service Providers ?

A: See MSDN® Library online: tspi/tapi_service_providers and in addition:

·       See MSDN® Library online: tspi/tapi_service_provider_overview

·       See Q: What is a TSP ?

·       See Q: What is a MSP ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What is a TSP ?

A: See MSDN® Library online: tspi/telephony_service_providers_start_page and in addition:

·       See Q: What are TAPI Service Providers ?

·       See MSDN® Library online: tspi/about_the_telephony_service_provider_tsp_

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What TSPs are installed on my system ?

A: See lineGetProviderList and lineGetDevCaps / phoneGetDevCaps e.g. with TAPI Browser TB20 :

·       E.g. on a (English) Windows® XP operating system you get these ProviderFilename (from LINEPROVIDERENTRY) and ProviderInfo (from LINEDEVCAPS / PHONECAPS) after OS installation:

o       unimdm.tsp         (Windows Telephony Service Provider for Universal Modem Driver)

o       kmddsp.tsp         (name(s) depend(s) on devices with legacy WAN miniports)

o       ndptsp.tsp         (NDPROXY)

o       ipconf.tsp         (Microsoft Multicast Conference Telephony Service Provider)

o       h323.tsp           (Microsoft H.323 Telephony Service Provider)

o      hidphone.tsp       (Microsoft HID Phone TSP)

·       E.g. on a (German) Windows® 2000 operating system you get these ProviderFilename (from LINEPROVIDERENTRY) and ProviderInfo (from LINEDEVCAPS / PHONECAPS) after OS installation:

o       unimdm.tsp         (Windows Telephony Service Provider for Universal Modem Driver)

o       kmddsp.tsp         (name(s) depend(s) on devices with legacy WAN miniports)

o       ndptsp.tsp         (NDPROXY)

o       ipconf.tsp         (Microsoft Multicastkonferenz-TAPI-Dienstanbieter)

o      h323.tsp           (Microsoft H.323-TAPI-Dienstanbieter)

·       For additional information on these TSPs see:

o      Q: What TSPs are available ?

·       See also:

o      Q: How do I get the dwPermanentProviderID of the TSP for a given line device ?

o      Q: What TSP is hosting a given line device ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What TSPs are available ?

A: See the following list of TSPs ordered by manufacturers: (this list is not complete)

·       Microsoft® (all 1st party TSPs)

o      Unimodem TSP (see MSDN® Library online: tspi/unimodem_tsp and Q: What is the ModemLog ?)

o      Kernel-Mode Device Driver TSP (see MSDN® Library online: tspi/kernel_mode_device_driver_tsp)

o      NDIS Proxy TSP (see MSDN® Library online: tspi/ndis_proxy_tsp)

o      IP Multicast Conferencing TSP (see MSDN® Library online: tspi/ipconf_tsp)

o      H.323 TSP (see MSDN® Library online: tspi/h323_tsp)

o      Remote TSP (see MSDN® Library online: tspi/remote_tsp and Q: What is RemoteSP.TSP ?)

o      Economical Service Provider (ESP32) (see Q: How can I debug a TSP ? and Q: Is there a user guide available for Economical Service Provider (ESP32)?)

o      Repeater TSP (see Q: How can I debug a TSP ?)

·       Siemens (1st and 3rd  party TSPs, see Siemens HiPath Downloads website: TAPI Drivers and CSTA Interface Description for free download of TSPs, Developer’s Guides and Data sheets)

o      HiPath TAPI 120/170 V2.0 TAPI 2.2 SP (1st/3rd party TSP, see Siemens HiPath Data Sheet (PDF): HiPath TAPI 120/170)

o      CallBridge TU, CorNet-TS TAPI Service Provider (1st party TSP, see Siemens HiPath Data Sheet (PDF): CallBridge TU)

o      Opti32 - Hicom CTI TAPI SP (1st party TSP, see Siemens HiPath Data Sheet (PDF): Hicom CTI TAPI)

o      Hicom CallBridge TA TSP (1st party TSP, see Siemens HiPath Data Sheet (PDF): Hicom CallBridge TA)

o      HiPath CAP V1.0 - CAP TSP (3rd party TSP, see Siemens HiPath Administration Guide (PDF): HiPath CAP V1.0 - CAP TAPI Service Provider)

o      Additional Data sheets about Open Interfaces for HiPath (1st/3rd party TSPs):
see Siemens HiPath Data Sheet (PDF): Open Interfaces for HiPath - TAPI '1st Party' - PC-supported Telephony

see Siemens HiPath Data Sheet (PDF): Open Interfaces for HiPath - TAPI '3rd Party' - Client/Server supported PC Telephony
see Siemens HiPath Data Sheet (PDF): Open Interfaces for HiPath - How Siemens is supporting the use of Hicom 300 / 300 E 

·       To be continued ...

·       See Q: Is there a TSP with sample code available ?

·       See Q: What is the difference between the 1st party and the 3rd party model ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What about H323.TSP and IPconf.TSP in Windows® VistaTM ?

A: Officially they are not supported anymore, but:

·       If you install Windows® VistaTM as an upgrade (In-place installation) from Windows® XP then those TSPs available on the old OS remain available on the new OS…

·       If you install Windows® VistaTM from scratch (clean install) then H323.TSP and IPconf.TSP are not available

·       So (currently) Windows® VistaTM setup never installs those TSPs but doesn’t remove them if they existed before upgrading

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What is RemoteSP.TSP ?

A: It is used on clients to access remote lines on the Telephony Server within a Microsoft® TAPI client / server architecture:

·       See Q: What is the Microsoft® TAPI client / server architecture ?

·       See KB article 841924 - You cannot have the Remote TSP and a telephony server enabled on the same computer

·       See Q: Is there a TAPI trace available ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: What is the ModemLog ?

A: It is used for troubleshooting modem problems:

·       The ModemLog file reflects only modem communications via UniModem.TSP (see Q: What TSPs are available ?)

·        To enable the creation of, change the append mode of, or view the ModemLog.txt file, follow these steps (for Windows® 2000, Windows® XP, and Windows® Server 2003):

1.     In Control Panel, double-click Phone and Modem Options.

2.     On the Modems tab, click the modem you want to create a log file for,
and then click Properties.

3.     On the Diagnostics tab, click the Record A Log File (or Append To Log)
check box to select it and/or click the View log button, and then click OK.

4.     Click OK

·       See KB article 142730 - How to Create and Use the Modemlog.txt File

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Are there specific TSPs for TAPI2 and TAPI3 ?

A: There is no specific TSP for TAPI2 and TAPI3:

·       The "mapping" between a TSP and TAPI2 / TAPI3 is done by the TAPI components of the OS (i.e. TAPISRV)

·       There is no need to implement any COM in a TSP to get it ready for TAPI3

·       You "just" need to implement the TSPI_functions (and TUISPI_functions):
See MSDN® Library online: tspi/tapi_service_providers
See MSDN® Library online: tspi/tapi_service_provider_overview
See MSDN® Library online: tspi/telephony_service_providers_start_page

·       The only TAPI3 specific is media control. This is not done by a TSP but by a MSP (media service provider):
See Q: What is a MSP ?
See Q: What MSPs are available ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is there a TSP with sample code available ?

A: Yes, see the following links:

·       Take a look at the ATSP sample TSP project in the Core SDK from Windows® SDK (s. Platform SDK):
After installing the Core SDK you will find this sub-directory:
\NetDS\Tapi\Tapi2\Atsp32
See KB article 108923 - PRB: ATSP Returns Error for Validated Parameter

·       JulMar Technology offers a SDK for TSP development: there is a commercial version and an open source version of their TSP++

·       See Q: How can I debug a TSP ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How do I get the dwPermanentProviderID of the TSP for a given line device ?

A: lineGetID (hLine, 0, NULL, LINECALLSELECT_LINE, ,"tapi/providerid")

·       This dwPermanentProviderID is the same as in LINEPROVIDERENTRY returned by lineGetProviderList

·       See Q: What TSPs are installed on my system ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Which TSP is hosting a given line device ?

A: Method differs for TAPI2 and TAPI3:

·       For TAPI2 see Q: How do I get the dwPermanentProviderID of the TSP for a given line device ?

·       For TAPI3 call ITAddress::get_ServiceProviderName

·       See Q: What TSPs are installed on my system ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How can I debug a TSP ?

A: See the following possibilities:

·       Before you start any TAPI apps (and indeed before you start TAPISRV) run REGEDT32 and modify the value at: 
HKLM\SYSTEM\CurrentControlSet\Services\TapiSrv\ImagePath
Normally it will be something like (on Windows NT®):
%SystemRoot%\system32\tapisrv.exe
or on Windows® 2000 and later:
%SystemRoot%\System32\svchost.exe -k tapisrv
In my case I change this to (on Windows NT®):
”C:\Programs\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe” %SystemRoot%\system32\tapisrv.exe
or on Windows® 2000 and later:
"C:\Programme\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe" %SystemRoot%\System32\svchost.exe -k tapisrv
Then next time I run a TAPI App or start TAPISRV, the MSVC debugger starts up and I press F5 to get it running.  Then once your TSP is loaded, set break point(s) in your TSP code.
IMPORTANT:  I can only see the debug window if I have the "Telephony Service" start-up settings to "Allow Service to Interact with Desktop."  This of course affects the ability of remote clients to attach. So far I haven't found a way to debug TSPs on the server while accessing via REMOTE.TSP from a client.

·       Alternatively you can insert a DebugBreak statement in your TSP code (e.g. at entry point to TSPI_providerEnumDevices) that gives you the opportunity to debug from this line of code:

o       #if _DEBUG
    DebugBreak();
#endif

o      Causes a breakpoint exception to occur in the current process. This allows the calling thread to signal the debugger to handle the exception. If the process is not being debugged, the function uses the search logic of a standard exception handler.

o      See MSDN® Library online: debug/base/debugbreak

·       Alternatively you can attach a debugger to TAPISRV while it is already running:

o      From within MSDev: (see: Visual Studio® -> Menu -> Build -> Start Debug -> Attach to Process -> Show System-Processes)

o      Via command line option of MSDev: msdev.exe –p xyz where xyz is the PID (Process ID) of TAPISRV obtained e.g. from Task Manager

o      From Task Manager you can right click on the TAPISRV process and select “Debug”

·       The Microsoft® Economical Service Provider (ESP32) is a TAPI debugging Service Provider that supports multiple virtual line and phone devices.  It is configurable, requires no special hardware, and implements the entire TSPI. An excellent tool for testing and debugging TAPI applications without extra hardware needed. It is part of Platform SDK or can be downloaded from Microsoft® FTP Site for TAPI Developers.
See Q: Is there a user guide available for Economical Service Provider (ESP32)?

·       Microsoft® Repeater TSP is part of the Platform SDK:
REPEATER is a TAPI service provider that is installed between TAPI and another service provider.  It records all information passed between TAPI and the service provider.  This information is written to a file.  REPEATER is thread safe.
The purpose of REPEATER is twofold.  Microsoft® is creating an application that can use this recorded information to emulate the service provider.  When this is included in the SDK, any TAPI application developer will be able to test their applications with a variety of service providers, without the specific hardware and software.  Additionally, REPEATER can be used by service provider developers to debug their service provider.

·       Once upon a time there was tool from Genoa Technology called Genoa TapiVision. But after Genoa Technology was integrated in QualityLogic the tool seems to be discontinued. With Genoa TapiVision (last version I worked with was 3.1) it was possible to trace directly at the TSPI level the communication between selected TSPs and TAPISRV (similar to Repeater TSP).

·       See Q: How can I stop Telephony Service ?

·       See Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ?

·       See Q: What can I do if I get compiler / linker errors (like undeclared identifier (C2065) or unresolved external symbol (LNK2001)) ?

·       See Q: Where are TAPI errors codes defined ?

·       See Q: Is there a TAPI trace available ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Is there a user guide available for Economical Service Provider (ESP32)?

A: These steps may help you getting started:

·       It is part of Platform SDK or can be downloaded from Microsoft® FTP Site for TAPI Developers.

·       ESP32 in general runs on every OS that supports TAPI 2.x (including Windows® XP and Windows® Server 2003 and later) but:

o      ESP32 version from Platform SDK February 2003 (file version 5.2.3620.0) only runs on Windows® XP and Windows® Server 2003 and later)

o      ESP32 version from Platform SDK July 2000 (file version 5.0.2143.1) runs on Windows® 2000 too

o      ESP32 version from Microsoft® FTP Site for TAPI Developers (file version 4.0.1373.1) runs on Windows® 2000 too

·       ESP32 consists of 3 files: Esp32.Tsp, EspExe.Exe, Espui.Dll (They have to be copied to \system32\)

·       Only(!) do this to work with ESP32:

o      copy the 3 files to \system32\

o      start EspExe.exe

o      (configure ESP as needed)

o      from its menu call File->Install

o      (work with ESP as needed)

o      from its menu call File->Uninstall (required to be able to exit)

o      exit EspExe.exe

·       Online-Help: start EspExe.Exe and take a look at the menu Help->UsingESP

·       To be continued …

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How can I stop Telephony Service ?

A: Via Service Control Manager:

·       Within SCM look for Service name “Telephony” and select it. With a mouse right click you have access to the start/stop functions. Alternatively you can use the corresponding buttons from the SCM tool bar.

·       From console you can do this with executing “net stop tapisrv”. For starting you have to execute  net start tapisrv”.

·       See Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ?

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ?

A: Via Task Manager (taskmgr.exe):

·       See Q: Which process is hosting TAPISRV ?

·       Within Task Manager go to tab “Processes” and select tapisrv.exe (on Windows NT®) or the svchost.exe that is hosting tapisrv.dll (on Windows® 2000 and later) and click on “Terminate Process”.

·       In some cases Task Manager (running in your user / administrator account) won’t let you terminate this process. In these cases you have start Task Manager in SYSTEM context. This can Toto® Tools Logobe done with the following command line: “AT HH:MM /INTERACTIVE taskmgr”. You have to replace HH:MM with your actual local time + 1 minute. This starts Task Manager in SYSTEM context within the next minute.

·       Toto® Tool AtNow can also be used to start Task Manager in SYSTEM context (s.a.)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: Which process is hosting TAPISRV ?

A: See TList.exe or TaskList.exe:

·       Windows NT®: the unique process name is tapisrv.exe

·       Windows® 2000 and later: the process name is svchost.exe but there may be several processes with that name. To determine which of it is hosting tapisrv.dll do the following:

o      Windows® 2000: use TList from Support Tools (need to be installed separately e.g. from the OS installation CD \SUPPORT\TOOLS\) like this: “tlist.exe –m tapisrv.dll”. Other parameters of interest may be “tlist.exe –s” and “tlist.exe svchost”.

o      Windows® XP and Windows® Server 2003: use TaskList (installed by OS in  \%windir%\system32\) like this: “tasklist.exe -fi "services eq tapisrv" /svc”. Other parameters of interest may be “tasklist.exe -fi "services eq tapisrv" /m” and “tasklist.exe -fi "services eq tapisrv" /v”. In addition you can still use TList from Windows® 2000 (s.a.).

·       Note that in either cases TAPISRV must be running at the time of retrieval

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How can I run TAPISRV exclusively in a svchost process ?

A: Change these Registry Settings:

·       Windows® 2000 and later: on server OS (e.g. Windows® 2000 Server / Advanced Server, Windows® Server 2003) this is the default, on client OS (e.g. Windows® 2000 Professional, Windows® XP) TAPISRV is sharing a svchost process with other services. To switch between exclusive and shared mode change the following settings in the Registry:

o      To Exclusive Mode:

§     In [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost] removeTapisrv” from existing REG_MULTI_SZ netsvcs

§     In [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost] addTapisrv” to newly created REG_MULTI_SZ tapisrv (if it not exists)

§     In [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TapiSrv\ImagePath] change%SystemRoot%\System32\svchost.exe -k netsvcs” to “%SystemRoot%\System32\svchost.exe -k tapisrv” in existing REG_EXPAND_SZ ImagePath

§     Reboot the machine or stop/restart Telephony Service (see Q: How can I stop Telephony Service ?)

o      To Shared Mode:

§     In [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost] addTapisrv” to existing REG_MULTI_SZ netsvcs

§     In [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost] removeTapisrv” from REG_MULTI_SZ tapisrv (if it exists; optional)

§     In [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost] remove REG_MULTI_SZ tapisrv (if it exists; optional)

§     In [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TapiSrv\ImagePath] change%SystemRoot%\System32\svchost.exe -k tapisrv” to “%SystemRoot%\System32\svchost.exe -k netsvcs” in existing REG_EXPAND_SZ ImagePath

§     Reboot the machine or stop/restart Telephony Service (see Q: How can I stop Telephony Service ?)

·       Toto® Tools LogoToto® Tool TAPIex can be used to easily switch between these two modes without the need to change the Registry manually

·       See MSDN® Library online: Description of Svchost.exe in Windows 2000 (Knowledge Base Article - 250320)

·       See MSDN® Library online: A Description of Svchost.exe in Windows XP (Knowledge Base Article - 314056)

 

Go to top of page                  Go to Table of Contents                         Go to FAQ


Q: How can I popup a MessageBox from a TSP ?

A: See the following hints and tips:

·       See MSDN® Library online: tspi/line_createdialoginstance

·       Alternatively you can display a MessageBox e.g. with MessageBox (NULL, "Test Text", "Test Caption", 0);

o      To see the MessageBox you have to enable “Allow interact with desktop” for the Telephony Service in SCM

o      Note that enabling “Allow interact with desktop” for the Telephony Service in SCM on a TAPI Server will disable TAPI 2.x Client / Server functionality

o      You can test the MessageBox with ATSP sample TSP (see Q: Is there a TSP with sample code available ?) e.g. if you insert the MessageBox statement (s.a.) just behind the variables declaration in TSPI_lineMakeCall

 

Go to top of page                  Go to Table of Contents                         Go to FAQ



Abbreviations / Glossary

Q: What does this abbreviation stand for / Is there a glossary available ?

A: See MSDN® Library online: tapi2/glossary_tapgloss and in addition:

ACD                              Automated Call Distribution

App                               Application

API                                Application Programming Interface

ASR                              Automatic Speech Recognition

BIOS                             Basic I/O Service

©                                   Copyright

CAPI                             Common ISDN API

Caps                              Capabilities

CDR                              Call Detail Recording

CET                              Central European Time

CID                               Caller ID

CLI                                Calling Line Information

CLIP                              CLI Presentation

CLIR                             CLIP Restriction

CO                                Central Office

COM                             Component Object Model

CPU                              Central Processing Unit

CRM                             Customer Relations Management

CSS                               Customer Support Services

CSTA                            Computer Supported Telecommunications Applications

CTI                                Computer Telephony Integration

DDK                             Driver Developer Kit

DLL                               Dynamic Link Library

DND                             Do-Not-Disturb

Drv                                Driver

DTMF                           Dual Tone Multi Frequency

ECT                              Explicit Call Transfer

ESP                               Economical Service Provider

FAQ                              Frequently Asked Questions

FTP                               File Transfer Protocol

FWD                             Forward

GMT                             Greenwich Mean Time

GUI                               Graphical User Interface

HID                               Human Interface Device

HT                                 Hyper Threading

HW                               Hardware

I/O                                 Input / Output

I-B-A-M®                     Ingenieur-Büro Andreas Marschall

ID                                  Identifier

IP                                  Internet Protocol

ISDN                             Integrated Services Digital Network

IVR                               Interactive Voice Response

KB                                Knowledge Base

LAN                              Local Area Network

LC                                 Live Communication

LCR                              Least Cost Routing

LCS                               Live Communication Server

LDAP                            Lightweight Directory Access Protocol

MAC                             Media Access Control

MAPI                            Messaging API

MFC                              Microsoft® Foundation Classes

MFV                              Mehr-Frequenz Verfahren (DTMF)

MS                                Microsoft®

MSDN®                        Microsoft® Developer Network

Msg                               Message

MSP                              Media Service Provider / Media Stream Provider

MSPI                             MSP Interface

MST                              Media Streaming Terminal

MVP                              Most Valuable Professional

MW                               Message Waiting

MWI                              Message Waiting Indicator

n.a.                                not applicable

NDA                             Non Disclosure Agreement

NDIS                             Network Driver Interface Specification

n.s.                                not supported

NT                                 New Technology

OEM                             Original Equipment Manufacturer

OS                                 Operating System

PABX                           Private Automatic Branch Exchange

PBX                              Private Branch Exchange

PC                                 Personal Computer

PFC                               Product Feedback Center

PID                                Process ID

PIM                               Personal Information Manager

POTS                            Plain Old Telephone System

PPP                               Point to Point Protocol

PRH                              Proxy Request Handler

Proc                              Procedure

PSS                               Product Support Services

Q&A                             Question(s) and Answer(s)

QoS                               Quality of Service

®                                   Registered Trademark

RAS                              Remote Access Service

Req                               Request

RPC                              Remote Procedure Call

RTC                              Real Time Communication

SAPI                             Speech API

SCM                              Service Control Manager

SDK                              SW Developer Kit

SLIP                              Serial Line Internet Protocol

SP                                 Service Pack

SP                                 Service Provider

SPI                                SP Interface

SR                                 Speech Recognition

Srv                                Server

Svc                                Service

SW                                Software

T2S                               Text To Speech

TAM                             Telephony Answering Machine

TAPI                             Telephony Application Programming Interface

TAPISRV                      TAPI Server / TAPI Service

TB                                 TAPI Browser

TCM                             TAPI Client Management

TCP                               Transmission Control Protocol

TFX                              Telephony Framework (by Chris Sells documented in his book “Windows Telephony Programming : A Developer’s Guide to TAPI”)

TM                                Trademark

TSP                               TAPI Service Provider

TSPI                              TSP Interface

TTS                               Text To Speech

TUISP                           Telephony User Interface Service Provider

TUISPI                          TUISP Interface

UDP                              User Datagram Protocol

UI                                  User Interface

UM                                Unified Messaging

USBS                            User Signalling Bearer Service

UTC                              Universal Coordinated Time

UUI                               User-User-Info

VB                                 Visual Basic®

VoIP                              Voice over IP

VS                                 Visual Studio®

W2k, Win2k                  Windows® 2000

Win                               Windows®

WS2k3                          Windows® Server 2003

WTE                             Web Telephony Engine/ Windows® Telephony Engine

XP                                 eXPerience

 

Go to top of page                  Go to Table of Contents                         Go to FAQ

 

Go to I-B-A-M® HomePage        Go to Toto® Tools Collection



History of Change

Date                              Changes

2003-08-12                   Initial creation

2003-08-15                   First preliminary release online but not available to public

2003-08-16                   First release online and available to public (announcement in TAPI newsgroups and to MVPs for Windows® SDK)

2003-08-18                   References to MSDN® Managed Newsgroup, MSDN® Web-Based Newsgroup Client and GoogleTM groups added to TAPI newsgroups
Q: What Libraries (.LIB files) do I need to build TAPI3 applications ? added
Q: What is the difference between TAPI 3.0 and 3.1 ? extended

Q: How do I get the dwPermanentProviderID of the TSP for a given line device ? added
Q: What TSP is hosting a given line device ? added

2003-08-19                   Q: Is there a user guide available for TAPI Browser TB20 ? extended
Q: How do I register events with TAPI3 ? extended
Q: How do I partially dial with TAPI2 ? added
Q: What is the difference between Canonical Addresses and Dialable Addresses ? added
JulMar Technology and ExceleTel added to Downloads
ExceleTel added to TAPI newsgroups

2003-08-20                   FAQs from ExceleTel and JulMar Technology added to Downloads and to Other TAPI Experts with TAPI Sites and FAQs
Siemens added to Downloads
MSPI related questions moved to new MSPI section
Q: What MSPs are available ? added
Q: Is there a MSP with sample code available ? added
Q: What is a MSP ? extended
Q: What are TAPI Service Providers ? extended
Q: What is a TSP ? extended
Q: What TSPs are available ? extended
Q: Are there specific TSPs for TAPI2 and TAPI3 ? extended
Q: Is there something special with asynchronous functions in TAPI2 ? added
Q: What can I do if I get compiler / linker errors (like undeclared identifier (C2065) or unresolved external symbol (LNK2001)) ? added
Q: Where are TAPI errors codes defined ? added
Q: What Libraries (.LIB files) do I need to build TAPI3 applications ? extended

2003-08-26                   Q: Is there a user guide available for TAPI Browser TB20 ? extended
Q: Is there a TAPI 2.x to TAPI 3.x Cross-Reference ? extended
Q: Has TAPI3 any disadvantages over TAPI2 ? extended
Q: Are there any guidelines for newsgroup postings ? added
Counter by WebHits added to bottom of page

2003-08-27                   Date (DD-MM-YY) and Time (CET = GMT+01:00) added to Counter by WebHits at the Web-Statistics
MVP Logo added to top of page
Q: How do I transfer a call with TAPI2 ? extended
Q: How do I make a conference with TAPI2 ? extended
Q: What is the difference between the 1st party and the 3rd party model ? added
Q: What TSPs are available ? extended
Q: How can I debug a TSP ? added
Q: Is there a TSP with sample code available ? extended
Q: What TSPs are available ? extended

2003-08-29                   Links to Best Of ranking and Counter Statistics added to Counter by WebHits at the Web-Statistics
Q: What is the difference between TAPI 3.0 and 3.1 ? extended
Q: Is there a TAPI 2.x to TAPI 3.x Cross-Reference ? extended
Q: Has TAPI3 any disadvantages over TAPI2 ? extended
Q: How do I use LINECALLPRIVILEGE_ Constants in TAPI2 ? added
Q: How do I use fMonitor / fOwner in ITTAPI::RegisterCallNotifications in TAPI3 ? added

2003-08-30                   WebHits Guest book added to Counter by WebHits at the Web-Statistics
Q: What TSPs are available ? extended
Q: How can I debug a TSP ? extended
Q: How can I stop Telephony Service ? added
Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ? added
Q: How can I popup a MessageBox from a TSP ? added

2003-09-03                   Q: What newsgroups are covering TAPI ? extended
Q: How can I track a call when it is moving from device to device ? added
Q: Is there a TAPI 2.x to TAPI 3.x Cross-Reference ? extended

2003-09-06                   Q: Which process is hosting TAPISRV ? added
Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ? extended

2003-09-08                   Abbreviations / Glossary added
Q: What does this abbreviation stand for / Is there a glossary available ? added

2003-11-24                   Q: How can I run TAPISRV exclusively in a svchost process ? added
Q: Where can I download TAPI related stuff ? broken links to Siemens updated
Q: What TSPs are available ? broken links to Siemens updated

2003-11-30                   Q: Is Fax supported by TAPI ? added
Q: How can I run TAPISRV exclusively in a svchost process ? extended

2004-07-17                   Abstract updated
JavaScript for Referrers in Web-Statistics added
Q: What does this abbreviation stand for / Is there a glossary available ? extended
Q: Where can I download TAPI related stuff ? extended
Q: Is there a TSP with sample code available ? extended
Q: Is there any sample code available ? extended
Q: Are there any .NET wrappers for TAPI2 available ? added

2004-07-18                   MVP Profile link added to Abstract
Q: Are there any guidelines for newsgroup postings ? extended
Q: What newsgroups are covering TAPI ? extended
Q: Is there a user guide available for TAPI Browser TB3x ? extended
Q: How can I debug a TSP ? extended
Q: Is there a user guide available for Economical Service Provider (ESP32)? added

2004-07-19                   Q: Is there a user guide available for Economical Service Provider (ESP32)? extended
Q: Where can I download TAPI related stuff ? extended
Q: Are there any Tools for TAPI available ? added

2004-08-03                   Q: How do I use lineForward (how to set LINEFORWARDLIST, LINEFORWARD structures) ? extended
Q: What does this abbreviation stand for / Is there a glossary available ? extended
JavaScript added to exclude my PCs from being counted in Web-Statistics
Q: Where can I download TAPI related stuff ? extended
Q: Are there any Tools for TAPI available ? extended
Q: How can I stop TAPISRV process (if Telephony Service is not responding in Service Control Manager) ? extended

2004-09-13                   Toto® Tools logo added
Q: Is there a user guide available for Economical Service Provider (ESP32)? extended
Q: Has TAPI3 any disadvantages over TAPI2 ? extended
Q: What is the Microsoft® TAPI client / server architecture ? added
Q: What is RemoteSP.TSP ? added
Q: What TSPs are installed on my system ? extended
Q: What does this abbreviation stand for / Is there a glossary available ? extended

2004-09-17                   More Toto® Tools logos added (to each reference of a Toto® Tool)
Links to
Go to I-B-A-M® HomePage and Go to Toto® Tools Collection added before each level 1 heading
New section TAPI Problems, Fixes, and KB Articles added