CTI PORT THIRD-PARTY MONITORING:
Opening a CTI port device in first-party mode means that either the application is terminating the media itself at the CTI port or that the application is using the Cisco Wave Drivers to terminate the media at the CTI port. This also comprises registering the CTI port device.
Opening a CTI port in third-party mode means that the application is interested in just opening the CTI port device, but it does not want to handle the media termination at the CTI port device. An example of this would be a case where an application would want to open a CTI port in third-party mode because it is interested in monitoring a CTI port device that has already been opened/registered by another application in first party mode. Opening a CTI Port in third-party mode does not prohibit the application from performing call control operations on the line or on the calls of that line.
Cisco Unified TSP allows TAPI applications to open a CTI port device in third-party mode via the
lineDevSpecific API, if the application has negotiated at least extension version 6.0(1) and set the high order bit, so the extension version is set to at least 0x80050000.
The TAPI architecture lets two different TAPI applications that are running on the same PC use the same Cisco Unified TSP. In this situation, if both applications want to open the CTI port, problems could occur. Therefore, the first application to open the CTI port will control the mode in which the second application is allowed to open the CTI port. In other words, all applications that are running on the same PC, using the same Cisco Unified TSP, must open CTI ports in the same mode. If a second application tries to open the CTI port in a different mode, the lineDevSpecific() request fails.
The CCiscoLineDevSpecificCTIPortThirdPartyMonitor class is used for opening CTI ports in third-party mode. To use this class, ensure the lineNegotiateExtVersion API is called before opening the line. When calling lineNegotiateExtVersion, ensure the highest bit is set on both the dwExtLowVersion and dwExtHighVersion parameters. This causes the call to lineOpen to behave differently. The line does not actually open, but waits for a lineDevSpecific call to complete the open with more information. Provide the extra information that is required in the CCiscoLineDevSpecificCTIPortThirdPartyMonitor class.
The TAPI Developer guide provides the following 3 steps:
- Call lineNegotiateExtVersion for the deviceID of the line that is to be opened. (OR 0x80000000 with the dwExtLowVersion and dwExtHighVersion parameters)
- Call lineOpen for the deviceID of the line that is to be opened.
- Call lineDevSpecific with a CCiscoLineDevSpecificCTIPortThirdPartyMonitor message in the lpParams parameter.
In third-party call control, the control of an audio stream terminating device is not “local” to the Cisco Unified Communications Manager. In such cases, the controller might be the physical IP phone on your desk or a group of IP phones for which your application is responsible.
Use LINEMEDIAMODE_INTERACTIVEVOICE parameter for third-party call control of physical phones and CTI port and CTI route point devices that other applications opened.