Call analysis consists of both pre-connect and post-connect information about the progress of the call. Pre-connect call progress determines the status of the call connection, that is, busy, no dial tone, no ringback, etc. Post-connect call analysis, which is also known as media type detection, determines the destination party's media type, that is, answering machine, fax, voice, etc.
Global Call call analysis uses global tone detection (GTD) to detect voice, fax, busy, fast busy, ringback, and Special Information Tones (SIT).
The gc_MakeCall( ) function defines the maximum time (in seconds) within which a call must be answered. Within that interval, busy and ringback tones can be detected. Global Call will disconnect an outbound call and report a GCEV_CALLSTATUS or GCEV_DISCONNECTED event to the application if the call is not answered within the default time-outs defined by the protocol or the gc_MakeCall( ) function. Global Call can also count the number or rings and report the GCEV_CALLSTATUS or GCEV_DISCONNECTED event if the maximum number or rings is reached. The maximum number or rings can be changed by using the gc_LoadDxParm( ) function (Springware only) to change the Global Call ca_nbrdna voice call analysis parameter; otherwise the default value of four rings is used. (The default value cannot be changed on DM3 boards.)
The ringback tone heard on any specific call depends on the specific CO that is serving the called party, not the local CO. The ringback tone must be known in order to complete a call. The ringback tone generates a GCEV_ALERTING event, which is reported to the application.
When the gc_GetCallInfo( ) function is used to retrieve information about the detected media type, the info_id parameter to the gc_GetCallInfo( ) function must be CONNECT_TYPE. See Section 3.5. gc_GetCallInfo( ) for a list of the values that may be returned when the info_id parameter is CONNECT_TYPE.
The following sections discuss:
2.5.1. Call Analysis with DM3 BoardsThere are two methods available for call analysis when using DM3 boards: the Global Call method and the dx_dial( ) method.
The Global Call media detection method is especially useful for performing post-connect call analysis. When activated by setting the GCPR_MEDIADETECT parameter to GCPV_ENABLE for a particular channel, post-connect call analysis is performed as part of the gc_MakeCall( ) function's operation. The gc_MakeCall( ) function is used to place a call; the signal detector analyzes the incoming signals to perform call progress analysis.
After the normal gc_MakeCall( ) processing finishes and GCEV_CONNECTED event is sent, call analysis runs and generates a GCEV_MEDIADETECTED event that tells the application the result of the analysis (for example, FAX, PVD, or PAMD is detected).
The outcome of the analysis determines the events generated and the action that can be taken as follows:
GCPR_MEDIADETECT and GCPR_CALLPROGRESS parameter settings for gc_SetParm( ) actually allow the application to specify whether pre- or post-connect call analysis or both should be activated. This method for achieving this is shown in Table 2.
Table 2. Global Call Call Progress Settings
|
GCPR_CALLPROGRESS=GCPV_DISABLE |
GCPR_CALLPROGRESS=GCPV_ENABLE (default) | |
GCPR_MEDIADETECT=GCPV_DISABLE (default) |
No call progress |
Pre-connect call progress only |
GCPR_MEDIADETECT=GCPV_ENABLE |
No call progress |
Full call progress |
As can be seen in this table, the default behavior (GCPR_MEDIADETECT = GCPV_DISABLE) disables media detection but actually activates pre-connect call progress for DM3 analog. To enable full call progress analysis, set the GCPR_MEDIADETECT parameter to GCPV_ENABLE for the respective channel.
The GCPR_CALLPROGRESS parameter can be used to enable or disable pre-connect call progress. When combined with GCPR_MEDIADETECT, this allows the application to specify whether to use pre-connect call progress only or full call progress. If GCPR_CALLPROGRESS = GCPV_DISABLE, there will be no call progress at all, regardless of the setting of GCPR_MEDIADETECT.
Table 3 explains call analysis support on DM3 analog via the Global Call interface.
Table 3. Call Analysis Support on DM3 Analog
Note that the call analysis time-out parameters values apply, and they are configurable by the user. (They cannot be changed at runtime.) The parameters are CaSignalTimeout, CaAnswerTimeout, and CaPvdTimeout; their values are found in the CHP section of the configuration (.config) file. However, they apply only to post-connect call analysis and are not used until the call moves from an initiated to a Proceeding, Alerting, or Connected state.
Another option for call analysis is provided by the Voice API, which provides post-connect call analysis on DM3 boards through the dx_dial( ) function. Note that the Global Call method and the dx_dial( ) method are mutually exclusive, so you must choose one or the other.
2.5.2. Call Analysis for PDKRT ProtocolsThe Protocol Development Kit Run-Time (PDKRT) library uses default tones defined in the Intel® Dialogic® Voice library for recognition of call progress tones. Any call progress tone defined by the Voice library will be detected. See the Voice API Programming Guide for more information about the default tones and the methods used to change the tones.
PDKRT protocols support call analysis via both the gc_MakeCall( ) function and two PSL parameters, PSL_MakeCall_CallProgress and PSL_MakeCall_MediaDetect defined in the .cdp file.
For call progress, when the PSL_MakeCall_CallProgress parameter is set to 0, call progress is disabled. When the PSL_MakeCall_CallProgress parameter is set to 1, call progress is enabled. When the PSL_MakeCall_CallProgress parameter is set to 2, call progress is enabled unless NO_CALL_PROGRESS is specified in the PDK_MAKECALL_BLK structure used by the gc_MakeCall( ) function.
For media type detection, when the PSL_MakeCall_MediaDetect parameter is set to 1, media type detection is enabled. When the PSL_MakeCall_MediaDetect parameter is set to 2, media type detection is disabled unless MEDIA_TYPE_DETECT is specified in the PDK_MAKECALL_BLK structure used by the gc_MakeCall( ) function. In either case, the application must receive a GCEV_CONNECTED event before the gc_GetCallInfo( ) function can be used to get information about the type of connection. Even after the GCEV_CONNECTED event is received, the call information may not be available. Consequently, the application may need to poll for the information.
2.5.3. Call Analysis for ANAPI ProtocolsSome of the country dependent parameters (.cdp) define tone templates for recognition of call progress tones. The tone IDs defined match the protocol parameter numbers (for example, parameter $103 creates tone ID # 103).
Two separate busy tones can be defined to accommodate two different call progress failure tones (that is, busy and out-of-order). Busy tones are defined in parameters $103 (busy) and $104 (fast busy or out-of-order), using the following format:
$103: <frequency 1> <deviation> <frequency 2> <deviation>
%01: <on time> <on deviation> <off time> <off deviation>
%02: <number of cycles before detect>
Frequency is expressed in Hz and time duration is expressed in 10 ms units; unspecified values are set to 0. To comment out a tone template in the .cdp file, insert a ";" (semicolon) as the first character in all three lines of the definition. If either of the busy tones is detected, the GCEV_DISCONNECTED event is reported to the application.
When the call is in the Connected state, the following disconnection tones are available:
Only the call progress tone definitions in the .cdp file are used by the Global Call API. See the Global Call Country Dependent Parameters (CDP) Reference or your Global Call Analog Protocol Release Notes for details.
The ANAPI protocol supports call analysis via the gc_MakeCall( ) function, which uses the flags parameter in the ANAPI_MAKECALLBLK structure to determine if call progress and/or media type detection are enabled on a per call basis. The two flags are NO_CALL_PROGRESS and MEDIA_TYPEDETECT. The default values are such that call progress is enabled and media type detection is disabled. The bits in the flags parameter can be changed to enable/disable call progress and media type detection as required. If this method is used for media detection, the application must receive a GCEV_CONNECTED event before the gc_GetCallInfo( ) function can be used to get information about the type of connection. Even after the GCEV_CONNECTED event is received, the call information may not be available. Consequently, the application may need to poll for the information.
Sometimes an analog application needs to redefine user tones while a call is in the Connected state. The voice library functions dx_deltones( ) and dx_addtone( ) provide this functionality, but should not be used in this context. Using a combination of these functions will cause the gc_DropCall( ) function to hang (that is, the function never returns in synchronous mode or never receives a termination event in asynchronous mode). Instead, use dx_addtone( ) only to add additional user-defined tones while a call is in the Connected state. If an application must redefine previously added user-defined tones, close and reopen the channel, and use dx_addtone( ) to add the updated tones again.
Click here to contact Telecom Support Resources
Copyright 2003, Intel Corporation