Making Calls

Before an outbound call can be made, tapi32.dll must open the line device. The standard way to make the call is then for tapi32.dll to invoke TSPI_lineMakeCall, specifying the line handle and a dialable destination address. The request first obtains a call appearance on an address on the line, waits for a dial tone, and dials the specified address. If successful, the TAPI handle to the new call is stored by the service provider for subsequent event reports and the service provider's handle to the new call is returned. The tapi32.dll saves the service provider's handle for subsequent requests on the new call.

When making a new call, tapi32.dll has the option of specifying the address on the line where it wants the call to originate. This can be done by specifying the address identifier or by using the corresponding directory number. The latter can be useful in configurations where it is more practical to identify the originating address by its directory number than by its address identifier. If special call setup parameters are to be taken into consideration, tapi32.dll must supply additional information to TSPI_lineMakeCall. Call setup parameters are required when requesting such things as a special bearer mode, a call's bandwidth, a call's expected media mode, user-user information (for ISDN), securing of the call, blocking the sending of a caller identifier to the called party, or automatically taking the phone offhook at the originator and/or the called party.

The tapi32.dll can also use TSPI_lineMakeCall only to allocate a call appearance (or partially dial) and then explicitly perform (or complete) dialing by using TSPI_lineDial. When the number provided is incomplete, dialing the digits can be delayed by placing a ';' (semicolon) at the end of the number. The TSPI_lineMakeCall function makes an outbound call and returns a call handle for the new call. TSPI_lineDial dials (parts of one or more) dialable addresses. Use this operation in all situations where you need to send address information to the switch on an existing call, such as dialing the address of a party to which to transfer a call.

After dialing is complete, call progress information is provided to tapi32.dll in the LINE_CALLSTATE callback message. This enables tapi32.dll to track whether or not the call is reaching the called party.

The dialable number format allows multiple destination addresses to be supplied at once. This can be useful if the service provider offers some form of inverse multiplexing by setting up calls to each of the specified destinations and then managing the information stream as a single high-bandwidth media stream. The tapi32.dll would perceive this as a single call, as it receives only a single call handle representing the aggregate of all the individual phone calls. It is also possible to support inverse multiplexing at the application level. Then the application would establish a series of individual calls and synchronize their media streams.