|
Use of Dialogic Components in Automatic Number Identification (ANI) Systems * Introduction * What Is ANI? * The Elements of an ANI Transaction o Originating Station ID o Transmission of ANI through the Network o Extraction of ANI o Analysis of ANI Information o Action to Be Taken Based on the ANI Information * ANI Benefits o Call Prescreening and Prioritizing o Billing Verification Automation o Call Processing Enhancements o Database Acquisition o Security and Fraud Control * Basic ANI System Configurations o Stand-alone ANI System Design o Switch Adjunct ANI System Design * ANI Application Examples o Fax Gateway (fax-on-demand) Systems * ANI Logger o ANI Converter to Retrofit Non-ANI Compatible Switches o Dialogic Components for ANI Systems * Implementing an ANI Application o Sample T-1 ANI Application * Summary Introduction A growing number of enhanced service providers expect Automatic Number Identification (ANI) capabilities for their systems. A variety of service-related industries are taking advantage of ANI service offerings from long distance companies such as MCI's 800 Enhanced Service Package (ESP), Sprint's Real Time ANI and AT&T's INFO 2. These long distance company services forward the telephone number of the calling party to the enhanced service provider. Many opportunities exist for system developers to supply products that provide enhanced ANI services. This application note provides a definition of ANI, identifies the elements of an ANI transaction, discusses ANI benefits and basic ANI system configurations. Key ANI system applications show how Dialogic components can be used in systems designed to take advantage of the ANI feature. A programming example is included showing the implementation of code for specific sections of a T-1 ANI application. What Is ANI? Historically, Automatic Number Identification (ANI) was used only by phone companies to allow the local switching system to send a calling party's telephone number to other phone company offices or to network switching systems. The classic use of ANI has been to automate the process of billing or routing a telephone call. Local Exchange Carriers use ANI for Centralized Automatic Message Accounting (CAMA), which is used to issue individual phone bills to their subscribers. ANI is also used by phone companies to identify calls that need to be directed for special call treatment. The identification of the caller occurs when the telephone number of the calling party is matched with a customer name and location database to speed the routing of the call. For example, the phone company's Toll Service Position System (TSPS) trunks provide caller information for operator-assisted calls placed from hotels by hotel guests. The TSPS service is able to provide time and charge data to the hotel management for guest billing purposes. Today, the phone companies have made the ANI feature available for everyone. The calling party station ID (phone number) can be delivered either in-band (T-1) in the form of dual tone multifrequency (DTMF) or multifrequency (MF) signals, or out-of-band (with ISDN PRI based services such as AT&T's INFO 2 offering or Sprint's Real Time ANI) as part of the call set-up data. Although the actual ANI transmission format differs slightly from carrier to carrier, the basic format is as follows: T-1 (in-band): KP + I + 7 or 10 digits + ST where KP = key pulse I = information digit 7 or 10 digits = calling party station directory number ST = start signal For T-1 in-band signaling, the actual call set-up protocol is typically E&M, where the network (originating end) seizes the circuit (key pulse) into the ANI system and expects an acknowledgment wink. The "ackwink" (start signal) informs the network that the ANI system is ready to receive ANI digits. On receipt of the ANI digits, the ANI system winks to the network again and provides answer supervision if the call can be completed. Call completion can be defined as either the playing of a special message or the routing of a call to an operator. The protocol just described is referred to as "double wink" protocol. Some carriers may use a "single wink" protocol. Check with your service provider to determine which protocol they use. ISDN PRI (out-of-band): For ISDN PRI out-of-band signaling, the call set-up information is provided in a data packet that contains the ANI. The Elements of an ANI Transaction Before an effective ANI system can be designed for a customer, the elements of an ANI transaction must be identified. The following is an overview of the five basic elements of an ANI transaction. 1. Originating Station ID The first element of an ANI transaction is the type of station and telephone number that originates the call. The type of station is not limited to a regular telephone since the ANI system can process calls originated by fax machines, videotext terminals, computers equipped with modems and other "originating stations." 2. Transmission of ANI through the Network The second element required for an ANI transaction is the transmission of ANI information through the telephone network. A digital network span can be used as the transport mechanism for the call. For T-1 (in-band signaling), the ANI information is transmitted on the same channel as the other information about the call. For ISDN PRI (out-of-band signaling), set-up data information containing ANI and other information about the call is transmitted over a separate channel prior to the call. These are the preferred ways of ANI data transmission because they can be used efficiently and economically for implementation of services such as CO (Central Office)-based voice mail, enhanced intercept treatment, and E-911 (Emergency 911) services. 3. Extraction of ANI The third element present in an ANI transaction is the extraction of the ANI information from the transmission. This is the point of detection and reception of the ANI information by the ANI system. 4. Analysis of ANI Information The fourth element in an ANI transaction is the analysis based on the ANI data received. Analysis of the data may be as simple as checking a local database for a match before a call is processed, or as complex as verifying a caller's account status from a remote database. The location where the actual analysis occurs depends on the overall system design. 5. Action to Be Taken Based on the ANI Information The fifth element in an ANI transaction is the action taken based on the analysis of the received ANI information. The relationship between the ANI information and the action to be taken will be application specific. Some examples include: * Routing the call * Logging of ANI to a billing database * Call classmarking analysis (indicates privileges/restrictions based on caller's ANI) * Order entry transaction automating * Geographic coordinate matching ANI Benefits ANI can provide the following five primary value-added functions: 1. Call Prescreening and Prioritizing ANI systems can be used to prescreen and prioritize calls in an emergency 911 system. The calling party's phone number (originating station ID) is extracted and matched to a phone number in a database that provides the originating station location and subscriber name. This information is then used to dispatch police, fire or medical personnel closest to the caller's location, reducing the response time for emergencies. 2. Billing Verification Automation ANI systems are used to perform billing verification and automation functions by allowing 1+ direct dialing to a chosen long distance carrier. These functions can be enhanced with operator assistance for callers who need assistance or whose originating station ID is incomplete. The operator services industry provides many opportunities for ANI systems that speed the process of operator assistance in conjunction with automatic billing. 3. Call Processing Enhancements ANI can be used to streamline call processing by rerouting the call after an ANI database check. For example, by comparing ANI information with a geographic/locator database, a locator service could automatically reroute 800 number callers to the vendor who sells a specific product within the caller's geographic area. 4. Database Acquisition ANI can be used for database acquisition by routing ANI information to a printer or other logging device. The information can be used to form a database of callers that is useful for telemarketing centers and answering service bureaus. 5. Security and Fraud Control ANI can be used to build a security system to curb the fraudulent use of telephone services. For example, by looking up previously logged and classmarked ANI caller information in a database of callers, connection approval for an incoming call can be verified before the call is connected. If a call is not approved, the call can be routed to an automated message system or a security desk for special handling. Basic ANI System Configurations There are two basic designs for ANI systems: * Stand-alone * Switch adjunct The system design depends on whether the existing equipment is on a customer premise and whether a call needs to be switched after the ANI is collected. Stand-alone ANI System Design When configured as a stand-alone system, the ANI system is the end-point of the real-time transaction with the calling party. Applications for the stand-alone system design include personnel time-stamping from job sites, a fax request gateway (fax-on-demand) and wide-area opinion polling. Switch Adjunct ANI System Design When configured as a switch adjunct system , the ANI system operates in tandem with an associated switching system. Depending on the design of the switch adjunct ANI system, the system can be placed either before or after the switch. The switch may be a Class 4 Tandem switch on a private or interexchange network, or CPE (Customer Premise Equipment) located in an inbound telemarketing center. ANI Application Examples The following examples describe applications that use ANI data. While these examples illustrate unique and exciting uses of ANI technology, ANI can also be used in many other areas. Fax Gateway (fax-on-demand) Systems The Fax Gateway ANI system is a stand-alone system that acts as a collector of fax machine numbers for callback and for fax transmission of requested documentation. The system collects ANI and Dialed Number Identification Service (DNIS) information to automatically process fax requests to a fax server (DNIS information contains the last four digits of the number called). NOTE: A Dialogic ANI system can be enhanced with the addition of Dialogic fax resources (hardware and software) to combine the ANI system and fax server onto one platform (see Figure 2). The widespread use of fax for image transmission has lead to a class of services based on centralized databases. These databases can be accessed through telephone and fax machines and can contain a wide range of images that can be faxed on demand. Following is one example of the operation of a fax gateway: 1. An advertisement in a trade journal outlines ten product groups offered by a manufacturer. To allow prospective customers to quickly obtain detailed information on a product group, a fax number is listed for each product group. 2. In response to the advertisement, the prospective customer dials the fax number to request information on the specific product group. The customer call is placed from a fax terminal. The fax number the customer dialed is to a "fax service agency." 3. The originating station's phone number is collected by the fax service agency's ANI system. The DNIS number, also collected by the ANI system, is used to determine which fax document to transmit. 4. The agency's fax server places a fax call to the originating station's phone number. 5. The requested document is then faxed to the caller's fax machine. In the example above, the calling party could be a fax machine automatically programmed to call the fax service agency number at a certain time of day or it could be a person calling from a remote fax terminal. Figure 1 shows a stand-alone ANI system configuration connected to an external fax server. Figure 2 shows a stand-alone ANI system configuration enhanced with Dialogic FAX resources on the same platform. Both figures show ANI systems connected to digital telephone network lines (T-1 or ISDN PRI). [Image] FIGURE 1. Stand-alone FAX Gateway Configuration [Image] FIGURE 2. Stand-alone FAX Gateway Configuration with Dialogic FAX Resources ANI Logger For many services, no call processing actions occur as a result of ANI. The raw ANI data is logged and used to analyze calling patterns. The ANI Logger allows any digital PBX to interface to ANI services. The switch adjunct ANI system sits in front of the switch and collects the ANI information and sends it to a printer or other logging database device. A detailed record consisting of the calling party's phone number, the incoming line on which the number was recorded, and the recording time can be kept for each inbound call. Figure 3 shows a Dialogic-based ANI Logger system located between the telephone network and a digital PBX. The system, which is in-line on a digital circuit (T-1 or ISDN PRI), monitors ANI and directs this data to a printer. [Image] FIGURE 3. Switch Adjunct ANI Logger Configuration The implementation shown in Figure 3 does not require interfacing with other computer systems and does not necessarily require voice-store-and-forward functions. Some applications for this system include the following: * Security/fraud control * Billing verification backup * Real-time channel activity analysis * Database creation ANI Converter to Retrofit Non-ANI Compatible Switches Since ANI has become an established network offering, switch manufacturers are offering ANI interfaces. For existing switches that do not have ANI interfaces, an add-on device is required to provide ANI capabilities. This requirement is a significant opportunity for integrators who wish to retrofit embedded switches. A Dialogic-based ANI Converter allows any digital CPE (Customer Premise Equipment) to interface to ANI-based lines by using a switch adjunct configuration similar to the one described in the ANI Logger application (Figure 3). The ANI Converter can extract the call's ANI information sent from the CO and insert the call into the CPE in the format the CPE recognizes. This action occurs, for example, when a call containing both ANI and DNIS information is received from the network. The ANI Converter captures the ANI information for use by the application and reformats the DNIS information into extension numbers for routing into the PBX. The ANI Converter can be designed to take full advantage of both ANI and DNIS. The host computer can assign an agent terminal (CRT) to process a transaction for a certain caller. At the same time, the host computer can tell the ANI Converter to send digits into the PBX/ACD to direct the call to a phone extension at the same agent's station. In this application, the computer system, not the switch, routes the call. This enables digital switches that are not ANI compatible to use the ANI information. The ANI Converter can be built to look like a peripheral device to a computer system while providing interconnection to the telephone network. The host can make call processing decisions and redirect calls based on data provided by the ANI Converter. Locator services depend on this real-time decision making to redirect calls to different geographic areas based on the caller's ANI. [Image] FIGURE 4. ANI Converter Retrofit Configuration Figure 4 illustrates the placement of the Dialogic-based ANI system between the telephone network and a digital PBX. The Dialogic-based system, which is in-line on a digital circuit (T-1 or ISDN PRI), monitors ANI data and directs this data to a host computer system located behind the PBX. The computer system has access to database information critical to both agent terminal functions and call routing functions. Applications for this type of system include the following: * Inbound telemarketing centers * Operator services * Travel reservation systems Dialogic Components for ANI Systems For most high-volume calling environments, digital transmission (T-1 or ISDN PRI) is the preferred transmission method. Dialogic's Network Interface boards (DTI/, for T-1 or PRI/, for ISDN PRI) provide T-1/DS-1 or ISDN PRI/DS-1 service termination. For T-1 or ISDN PRI environments, the Dialogic Network Interface board (DTI/ or PRI/) is required to connect to the CO via the CSU (Channel Service Unit) which interconnects to the carrier's digital circuitry. The Dialogic Network Interface boards (DTI/ or PRI/) can be used in ANI terminating device or drop and insert device hardware configurations. When configured as an ANI terminating device, a Dialogic Network Interface board is connected to Dialogic voice resource boards (see Figure 1 and Figure 2). When configured as a drop and insert device, a second Dialogic Network Interface board (DTI/) is included in the hardware configuration which connects the ANI system to the CPE (see Figure 3 and Figure 4). Stand-alone ANI systems can use a terminating device configuration (for examples, refer to Figure 1 and Figure 2). Switch adjunct ANI systems require a drop and insert device configuration (for examples, refer to Figure 3 and Figure 4). The number of Dialogic voice resource ports needed depends on whether or not a one-to-one ratio of voice response and ANI data collection ports to incoming lines is required for the application. Any system requiring DTMF or MF signals to the CPE may also require additional voice boards for dialing into the PBX. In applications where only a portion of the call is automated, the number of voice board ports may not need to match the number of incoming lines. This is accomplished by using the multiplexing capability of the Dialogic voice resource hardware and software. In a DTI/ or PRI/ system configuration using Dialogic 12-channel voice boards, one 12-channel voice board may be adequate for handling calls in this type of situation by using the multiplexing capability of the Dialogic voice resource hardware and software. Implementing an ANI Application The exact implementation of ANI will depend on the protocol used between the CO and the CPE. A Dialogic-based ANI system is typically located between the CO and the CPE. Following is sample programming code for a T-1 ANI application. NOTE: Sample code showing an ISDN PRI ANI application is not included in this release of the ANI application note. Sample T-1 ANI Application For T-1 spans, the ANI application can perform DTMF-to-MF conversion if the CPE recognizes MF tones. No conversion is required if the CPE recognizes DTMF tones. Below is a simplified scenario of an ANI transaction using a Dialogic-based ANI Converter system. The following parameters have been established: * T-1 carrier service * E&M protocol (double wink is used on both T-1 spans) * ANI system in a switch adjunct configuration (drop and insert): Two Network boards (two Dialogic DTI/124, two DTI/101 or two DTI/211 boards): One named NTWK (connected to receive incoming telephone network data) and the other named PBX (connecting the ANI system to the PBX). Each Network board has a single voice resource board (with MF capability) attached (Dialogic D/121A boards for DTI/101 or DTI/211; Dialogic D/4x boards for DTI/124). * The ANI system performs MF-to-DTMF tone conversion * The code example is written for the MS-DOS environment NOTE: For simplicity of presentation, the example shown is for a single-channel application. A multichannel application would use a state machine methodology. 1. Start and initialize the ANI converter system. #include "d40.h" #include "vfcns.h" #include "d40lib.h" #include "dti.h" #define NTWK 1 #define PBX 2 #define NUM_ANI 4 main() { struct evtblk evtblock; RWB d4xrwb; DCB d4xdcb; static char anidigits[NUM_ANI+2]; int rc, n, m, n_d4xchan; int in_chan, out_chan; /* Stop all drivers before starting. */ mf_stopsys(); stopdti(); stopsys(); /* Set Board level ring parameters. */ clrdcb(&d4xdcb); d4xdcb.r_on = 1; d4xdcb.r_off = 1; d4xdcb.r_ird = 1; d4xdcb.dcbrfu3 =1; /* dcb.redge */ if ((rc = setxparm(&d4xdcb)) != 0) { printf("unable to Set Board Parameters\n"); exit(1); } /* Start D40DRV. */ if ((rc = startsys(3,SM_EVENT,0,0,&n_d4xchan)) !=0) { printf("unable to start d4x\n"); exit(1); } /* Start DTIDRV. */ if ((rc = startdti(&n,&m)) != 0) { printf("unable to start dti\n"); exit(1); } /* Start MF40DRV. */ if ((rc = mf_startsys(&n,&m)) != 0) { printf("unable to start mf40\n"); exit(1); } 2. Enable wink reception and initialize DTI/ boards. The network (NTWK) DTI/ board is initialized to intercept calls from the CO. /* * Enable wink received, onhook, offhook, rings and * cst events for all D/4x channels. */ for (n=1;n<=n_d4xchan;n++) { if ((rc = setcst(n,C_WKRECV+C_ONH+C_OFFH+C_RING,1)) != 0) { printf("unable to setcst on channel %d\n",n); exit(1); } } /* * For all outbound PBX channels, transmit silence and * disable pass through of signaling. */ for (n=1;n<=(n_d4xchan/2);n++) { if ((rc = clrsignal(PBX,n,A_BIT+B_BIT)) != 0) { printf("unable to clrsignal on channel %d\n",n); exit(1); } if ((rc = xmittype(PBX,n,SIGINS)) != 0) { printf("unable to set xmittype on channel %d\n",n); exit(1); } if ((rc = chgidle(PBX,n,ENABLE)) != 0) { printf("unable to chgidle on channel %d\n",n); exit(1); } } /* * For all inbound CO channels, drop time slots to voice channel, * use the default transparent signaling, disable DTMF detection * and enable MF detection. */ for (n=1;n<=(n_d4xchan/2);n++) { /* * sb_route() is used to route D/121 voice channels to a * time slot (DTI/101, DTI/211). * enablech() would be used to route D/41 voice channels to a * time slot (DTI/124). */ if ((rc = sb_route(n,n)) != 0) { printf("unable to sb_route on channel %d\n",n); exit(1); } if ((rc = setdmask(n,0,0)) != 0) { printf("unable to setdmask on channel %d\n",n); exit(1); } if ((rc = mf_deton(n)) != 0) { printf("unable to mf_deton on channel %d\n",n); exit(1); } } 3. Wait for an incoming call from the CO. When the network seizes the T-1 trunk, process the call and prepare to receive the ANI digits from the CO. /* Wait for incoming rings on CO side. */ do { gtevtblk(&evtblock); } while (evtblock.evtcode!=T_RING); /* Save incoming channel number. */ in_chan = evtblock.devchan; /* * Calculate outbound channel (the out channel * is on the PBX DTI/). */ out_chan = in_chan + 12; /* Clear out any collected digits. */ if ((rc = clrdtmf(in_chan)) != 0) { printf("unable to clrdtmf on channel %d\n",in_chan); exit(1); } clrrwb(&d4xrwb); d4xrwb.maxdtmf = NUM_ANI; d4xrwb.xferoff = d4getoff(anidigits); d4xrwb.xferseg = d4getseg(anidigits); 4. After T-1 trunk seizure by the CO, the ANI converter system winks to the CO, telling it to send the ANI digits. /* Provide 1st wink to CO, asking for ANI digits. */ if ((rc = wink(in_chan)) != 0) { printf("wink failed on channel %d\n",in_chan); exit(1); } /* Wait for wink complete. */ do { gtevtblk(&evtblock); } while (evtblock.evtcode!=T_WINK); 5. After receiving a wink from the ANI converter system , the CO sends the ANI digits. The ANI converter system collects the ANI digits. /* Get the MF ANI digits from CO network. */ if ((rc = getdtmfs(in_chan,&d4xrwb)) != 0) { printf("getdtmfs failed on channel %d\n",in_chan); exit(1); } /* Wait for getdtmfs( ) function to complete. */ do { gtevtblk(&evtblock); } while (!(evtblock.evtcode==T_MAXDT)); 6. The ANI digits could be transmitted through a serial port to a host computer. The digits could be treated in a variety of ways, depending on the application. Sending the digits to a host computer for processing is only one example. printf("ANI digits received are %s\n",anidigits); The host computer could perform a name and number check to verify the caller and to speed the routing of the call. The host computer could also send the number of the nearest dealer or service provider to the converter system, which would pass those digits to the PBX. 7. The ANI converter system now seizes the line to the PBX and waits for a wink. When the PBX winks, the Dialogic Voice Driver returns a CST (Call Status Transition) event indicating that the wink has been received (T_WKRECV). /* * For the outbound PBX time slot, enter transparent * signaling, pass voice channel through and drop * time slot to voice channel. * sb_route() is used to route D/121 voice channels to a * time slot (DTI/101, DTI/211). * enablech() would be used to route D/41 voice channels to a * time slot (DTI/124). */ if ((rc = sb_route(out_chan,out_chan)) != 0) { printf("unable to sb_route on channel %d\n",out_chan); exit(1); } if ((rc = xmittype(PBX,in_chan,TRANSP)) != 0) { printf("unable to xmittype on channel %d\n",out_chan); exit(1); } if ((rc = chgidle(PBX,in_chan,DISABLE)) != 0) { printf("unable to chgidle on channel %d\n",out_chan); exit(1); } /* Originate call on outbound PBX side. */ if ((rc = sethook(out_chan,H_OFFH)) != 0) { printf("unable to sethook on channel %d\n",out_chan); exit(1); } /* Wait for off-hook complete. */ do { gtevtblk(&evtblock); } while (evtblock.evtcode!=T_OFFH); /* Wait for PBX to send 1st wink. */ do { gtevtblk(&evtblock); } while (evtblock.evtcode!=T_WKRECV); 8. The ANI converter system sends ANI digits to the PBX. The digits are sent as DTMF digits, since the default mode of the dialstring parameter (anidigits) is DTMF. Depending on the packeting of the ANI digits, you may have to strip off control digits before dialing the ANI digits to the PBX. /* OK wink received. Send ANI digits in DTMF to PBX. */ if ((rc = dial(out_chan,"5678")) != 0) { printf("unable to dial on channel %d\n",out_chan); exit(1); } /* Wait for dial complete. */ do { gtevtblk(&evtblock); } while (evtblock.evtcode != T_DIAL); 9. The ANI converter system waits for a second wink from the PBX, then winks a second time to the CO to acknowledge receipt of the digits. /* Wait for PBX to send 2nd wink to acknowledge receipt of ANI. */ do { gtevtblk(&evtblock); } while (evtblock.evtcode!=T_WKRECV); /* Send 2nd wink to CO ... pass the call through. */ if ((rc = wink(in_chan)) != 0) { printf("unable to wink on channel %d\n",in_chan); exit(1); } /* Wait for wink complete. */ do { gtevtblk(&evtblock); } while (evtblock.evtcode!=T_WINK); 10. The ANI converter system releases control of the call, allowing it to pass through, and the PBX routes the call. /* *Pass call through. * sb_route() is used to break route from D/121 voice channels to * a time slot (DTI/101, DTI/211). * disablech() would be used to break route from D/4x voice * channels to a time slot (DTI/124). */ if ((rc = sb_route(in_chan,-1)) != 0) { printf("unable to sb_route on channel %d\n",in_chan); exit(1); } if ((rc = sb_route(out_chan,-1)) != 0) { printf("unable to sb_route on channel %d\n",out_chan); exit(1); } } Summary Automatic Number Identification (ANI) is a telephone network feature that gives service providers the telephone number of the calling party. ANI service, once limited to local carrier telephone networks, is now readily available to enhanced service providers and telephone network customers. Dialogic offers system developers the tools necessary to develop custom ANI systems. System developers can use Dialogic's Network Interface boards along with voice and fax processing boards to build an ANI system for high-volume call processing installations. If you are designing a new ANI system or wish to include ANI features in an existing configuration, please contact a Dialogic Sales Engineer to discuss what specific Dialogic components you will need to implement ANI in your application. Check with your carrier service for information regarding their ANI feature offerings.