Addresses assigned to a line device in the API are typically selected via their address ID. Each address ID corresponds to a directory number via which the address is known to entities that want to make calls to it. Also, making outbound calls typically requires that a directory number be supplied to identify the called party.
Many users like to dial people, fax machines, bulletin boards, etc. by selecting their names from an address book. The actual directory number that is to be dialed depends on the geographical location of the user and the connectivity of the specific line device. For example, a PC may have access to two lines. One could be connected to a PBX while another could be connected to the central office. When making a call to the same party, different numbers (i.e., a different prefix; dial '9' to get out) will have to be used. The user may have a portable PC or notebook and should not have to change the entries in the address book simply because they operate in a different telephony environment. Rather, the user would like a way of telling the computer about his current location and the line device he wants to make calls on, leaving the address book unchanged, and instead have dialing take care of the differences transparently.
Related to this is the handling of international call progress. The call progress tones involved in making a call may include all tones in the path from the originating switch to the remote party's switch. Call progress tone tables typically vary from country to country. To make call progress work internationally, the service provider needs to know what call progress to use when making an outbound call.
To deal with directory numbers, the API defines two common formats. One is the canonical address format, the other is the dialable number format.
The canonical address format is intended to be a universally constant directory number, it is the directory number one would like to store in the address book, and never change.
The API contains operations to take address in the canonical address format and convert them to the dialable number format. A side effect of this conversion process is to extract a country code identifying the target country for the call. All addresses that appear at the TSPI have been translated to dialable address format. Functions involving dialing include the extracted country code. This country code can be used by the Service Provider to provide call progress determination that is independent of national boundaries.
The dialable address format describes a number that can be dialed on the given line. A dialable address contains part addressing information and is part navigational in nature. A dialable address is an ASCII string with the following structure:
DialableNumber $ BillingInfo | Subaddress ^ Name CRLF ... ;
where
DialableNumber
digits and delimiters 0-9 A-D * # ,! W w P p T t @ ; delimited by $ | ^ CRLF or the end of the dialable address string.