cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
2095
Views
0
Helpful
5
Replies

Communicate with IPPhone using TAPI

david.combs
Level 1
Level 1

I have been told there was a way to use TAPI to talk to an IP Phone that has a PC plugged into the phone's ethernet jack. Does anyone have any experience with this at all?

I have been searching the web for hours looking for examples and I can't find anything.

5 Replies 5

aaronw.ca
Level 5
Level 5

CallManager supports a variety of APIs, including TAPI and JTAPI.

TAPI and JTAPI can provide access to many devices attached to CallManager, and is not limited to the PC the phone is connected to. The devices that you are able to access and/or control depend on your login username/password (your global directory account on CallManager), and which devices are associated with that account. Typically, for user-level access, only the phone assigned to you is associated with your account, which is why access is often limited to the phone your pc is connected to. Other Tapi/Jtapi applications can control many devices, depending on their purpose.

An example of a Tapi application is the outlook plugin. The outlook plugin uses the Tapi interface to control your phone and allow you to dial from the outlook address book.

For more information on this, you may want to join the Developer Support Program. More information on that is available here:

http://www.cisco.com/pcgi-bin/dev_support/access_level/product_support

Additional information on a variety of APIs/interfaces is available here:

http://www.cisco.com/en/US/products/sw/voicesw/ps556/products_programming_reference_guides_list.html

Follow the TAPI link from the programming reference guide for the CallManager version you are interested in.

Depending on what you want to do, the phone's XML interface might also be of interest, and information on that is also available through the above links.

There's a start, anyway!

Thanks, and I am already a member of the developer support program. My problem is I can't find any examples of how to connect to the phone, but there are plenty of examples of connecting to the Call Manager and the database.

I am also trying to do this in VB.NET or C#.NET and there are almos no examples on how to do that.

With TAPI, you don't actually connect to the phone, you connect to the CallManager and control the device from there. That's why all of the examples you find talk about connecting to the CallManager, and not the phone. (ie you control the phone through CallManager)

For TAPI, you'll need the Cisco Telephony Service Provider (TSP) installed on the computer that will be using TAPI. Then your programs can connect to CallManager, get a list of devices that you are allowed to access (which may only be your phone), and you can then monitor and/or control those devices.

Tapi comes in two major versions, the 2.x and the 3.x, where the 2.x is a c-style api, the 3.x is built with COM. From what I have seen, many people seem to find it easier to develop against the 2.x api (I've also heard of a few "issues" with the 3.x api). Tapi is not a native .NET library, and I'm not aware of any plans to introduce native .NET tapi support by Microsoft. So developing tapi in .NET requires interop.

Microsoft's tapi newsgroup might be useful (if you search through it, you'll find questions/answers regarding .NET and tapi as well):

http://msdn.microsoft.com/newsgroups/default.aspx?dg=microsoft.public.win32.programmer.tapi〈=en&cr=US

GotDotNet has a few sample wrappers that might be insightful:

http://www.gotdotnet.com/community/usersamples/Default.aspx?query=tapi

I prefer working in jtapi, and you'll find more resources and samples in jtapi than you will tapi. That said, if your development environment has to be windows/.net, then you're likely going the tapi route.

What is it that you want to accomplish? Depending on your needs, the Cisco XML functionality may do what you're after with less hassle.

Thanks for your help.

What I want to do exactly, is when a call comes in to the phone, I want the pc connected to the phone to display a pop-up window on who is calling with name or number, or both.

If you look at the Call Manager 3.0 TAPI Developer's Guide, it has phone specific functionality, so I assumed you could control the phone connected to your pc (using TAPI 2.1).

I also have spoken with some inside people at cisco, not developers, who say you CAN control the phone with TAPI.

I have noticed that TAPI 2.1 seems much easier to use, so I might just go that route in .NET and use Interop. I will let you know how it goes.

Well, you can certainly control the phone, but to get to the phone you go through CallManager. If you find a way to talk directly to the phone, let me know! That said, in talking to some Cisco folks about the video capabilities, they mentioned a special tie between the phone and the pc that's connected into the phone through the phone's built-in switch (the pc port), and that the video capabilities take advantage of this. Of course, they might just be referencing the "associated pc" field in the global directory.

What it sounds like you'll be doing is intalling the TSP CallManager plug-in (from the plug-ins menu on CallManager administration), and configure TSP on your machine by entering the CallManager ip address or hostname and your username and password. The username and password that you enter there are your global directory userid and password, and the devices associated with that userid are the devices that will be available for you to control through your TAPI application.

Once you have the TSP installed and configured, you can put together a TAPI application and get a list of available devices. You can then attach an observer to your phone, which will notify your application when a call comes in, and then you can create the popup window with the calling party, and name if the caller is an internal party.

One option that might be helpful would be to examine the callerinfo sample application that is part of the IP Phone SDK, which is a java/JSP/jtapi application that pushes the name of the calling party to the phone (and a picture, if a picture is available) for incoming calls. There is also a sample jtapi application on the developer support site that uses jtapi to push some xml data to a phone. Sorry to reference all these jtapi examples, but there certainly are more jtapi resources than tapi.

Or you can just move forward with tapi!