Andreas 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)
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.
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
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
Andreas Marschall’s TAPI and TSPI FAQ
Frappr! Group TAPI around the World
Frequently Asked Questions (FAQ)
Microsoft® Knowledge Base Articles
TAPI2 / TAPI3 / TSPI Documentation / Specification
Microsoft® FTP Site for TAPI Developers
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
TAPI Problems, Fixes, and KB Articles
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
· 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: 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 ?
· Q: What operating systems
do support TAPI 2.x
?
· Q: Is there a user guide available for TAPI
Browser TB20 ?
· 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 ?
· 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 ?
· 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 ?
· Q: What are TAPI Service
Providers ?
· 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:
Are there specific TSPs
for TAPI2 and TAPI3 ?
· Q: Is there a TSP with sample code available ?
· Q: Is there a user guide available for Economical
Service Provider (ESP32)?
· Q: How can I stop Telephony Service ?
· 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
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
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
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:
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
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 messages
microsoft.public.win32.programmer.tapi
Go to top of page Go to Table of Contents Go to FAQ
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 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
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
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
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
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
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
· 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
·
ftp://ftp.microsoft.com/developr/TAPI/
Go to top of page Go to Table of Contents Go to FAQ
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
Link to ZIP
file:
·
ftp://ftp.microsoft.com/developr/TAPI/tb20.zip
·
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
Link to ZIP
file:
·
ftp://ftp.microsoft.com/developr/TAPI/Tb3x.zip
·
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
·
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
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
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
·
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® 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) ?)
·
Feed
for Update Notifications on Toto® Tools available
Go to top of page Go to Table of Contents Go to FAQ
·
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
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’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’ 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
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\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
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
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 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
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 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
MSDN® Library online Home page
The MSDN® Library CDs can be subscribed:
The Core SDK from Windows® SDK (s. Platform SDK) contains a Compiled HTML Help file
named TAPI.CHM.
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
ftp://ftp.microsoft.com/developr/TAPI/
Go to top of page Go to Table of Contents Go to FAQ
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:
Go to top of page Go to Table of Contents Go to FAQ
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)
· Feed for Update Notifications on Toto®
Tools available
Go to top of page Go to Table of Contents Go to FAQ
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)
Go to top of page Go to Table of Contents Go to FAQ
ExceleTel offers a SDK for TAPI development,
a TAPI diagnostic, testing and operation utility, TAPI sample programs, a
newsgroup and a FAQ:
· 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 HiPath offers a Downloads website with:
· Software
Go to top of page Go to Table of Contents Go to FAQ
Helen Warn offers her C# Wrapper for TAPI2:
Go to top of page Go to Table of Contents Go to FAQ
Angus Comber from Itel Office offers a COM control for TAPI:
Go to top of page Go to Table of Contents Go to FAQ
Grant Schenck Software offers a Powerpoint presentation and a OutputDebugString capture
utility for Windows:
Go to top of page Go to Table of Contents Go to FAQ
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 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
Go to top of page Go to Table of Contents Go to FAQ
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
First printing, July 1998
Chris Sells
Addison-Wesley, ISBN 0-201-63450-3
(see Robert Bamberg for corresponding source code)
First
edition, 1996
Michael Amundsen
Sams Publishing, ISBN 0-672-30928-9
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
http://www.rainyjay.com/tapi/tapi.htm
http://www.terasens.com/products/teravoice/hardware.aspx
http://tapifaq.pennypacker.org/
http://grantschenck.tripod.com/
Go to top of page Go to Table of Contents Go to FAQ
FAQ about Telephony,
TAPI and ExceleTel products
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
·
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
·
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
·
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
·
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
·
829697
- A memory leak occurs in the Svchost.exe process that hosts a TAPI in Windows
2000
·
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
·
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
·
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
·
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
·
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
·
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
·
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
Go to top of page Go to Table of Contents Go to FAQ
·
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
·
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® 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
·
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
·
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
·
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
·
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
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
·
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
· 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
· 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
·
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
·
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
·
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
·
See KB
article 841712
- Telephony Application Programming Interface (TAPI) functionality is not
supported from managed code
·
GotDotNet User
Sample from Helen Warn
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
·
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
·
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
·
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
·
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
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
·
see MSDN® Library online: tapi3/hints_and_tips
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
Go to top of page Go to Table of Contents Go to FAQ
·
Equivalent
to lineRedirect from TAPI2
on calls with LINECALLSTATE_OFFERING
Go to top of page Go to Table of Contents Go to FAQ
·
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
·
See MSDN® Library online:
tapi3/ittapi_registercallnotifications
Go to top of page Go to Table of Contents Go to FAQ
·
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
·
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
·
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
·
http://www.tapi.info/default.aspx/TAPI/UnimodemFullDuplexSupport.html
Go to top of page Go to Table of Contents Go to FAQ
·
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
·
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
·
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
·
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
·
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
·
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
·
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
·
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
·
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
·
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
·
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
·
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: 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
·
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
·
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”.
Go to top of page Go to Table of Contents Go to FAQ
·
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 be 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
·
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
·
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] remove “Tapisrv” from existing REG_MULTI_SZ netsvcs
§ In [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Svchost] add “Tapisrv” 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] add “Tapisrv” to existing REG_MULTI_SZ netsvcs
§ In [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Svchost] remove “Tapisrv” 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® Tool TAPIex can
be used to easily switch between these two modes without the need to
change the Registry manually
Go to top of page Go to Table of Contents Go to FAQ
·
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
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
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
Q: Are there any known TAPI problems and fixes
available ? added
Q: How and
where do I report TAPI problems ? added
Q: Are there any
KB articles on TAPI available ? added
Q:
What operating systems do support TAPI 2.x ? added
Q: Has TAPI3 any disadvantages
over TAPI2 ?
extended
Q: Are there any .NET wrappers for TAPI2 available ?
extended
Q:
What is RemoteSP.TSP
? extended
Q: What is the Microsoft® TAPI client / server
architecture ? extended
Q: Where are TAPI errors
codes defined ? extended
Q: Is there any sample code
available ? extended
Q: What
does this abbreviation stand for / Is there a glossary available
? extended
2004-09-18 Q: Are there any known TAPI problems and fixes
available ? extended
Q: How and
where do I report TAPI problems ? extended
Q: Are there any
KB articles on TAPI available ? extended
Q: What is the Microsoft® TAPI client / server
architecture ? extended
Q: Where do I
find documentation / specifications on TAPI / TSPI ? extended
Q: What
does this abbreviation stand for / Is there a glossary available
?