Diva SDK call progress

Overview

There are a number of ways to gather call progress information in the Dialogic® Diva® Software Development Kit (Diva SDK). Doing so sometimes can be desirable, for example in Fax Server software, in order to make the software more intelligent and not waste time on unreachable numbers. It means that failed calls can be logged with more meaningful diagnostics indicating why the call did not succeed. 

Mechanism 1: (ISDN diagnostic information) 

If a call is disconnected, or fails during connection, it is possible to pick up ISDN diagnostic codes that give reasons for the disconnection. A call to DivaGetCallInfo() returns a structure that contains an ISDN cause (using the same coding as defined in the CAPI specification), and also a Disconnect Reason. The latter gives easy-to-use return values, for example: DivaDRBusy, DivaDRNoAnswer, DivaDRNumberUnknown. 

Mechanism 2: (ISDN call progress) 

When the call state changes, the Diva SDK sends a message DivaEventCallProgress, which you can intercept in your callback routine or event handler. The first parameter is your application handle,and the second is the call state as defined by DivaCallState. This has states like DivaCallStateDialing, DivaCallStateRinging, DivaCallStateAnswered, DivaCallStateDisconnecting, which your application can use to track the call state in real time. 

Mechanism 3: (Tone Detection) 

If you enable detection of continuous tones (using DivaReportTones()) then the Diva SDK sends a message DivaEventToneDetected that you can pick up in your event handler or callback routine. There are a number of useful tones that can be picked up that may help you with call progress, including: 

DivaBusyTone, for network reporting "busy" 
DivaCongestionTone , for network reporting congestion 
DivaSpecialInformationTone, corresponding to a range of SIT tones 
DivaFaxCallingTone, corresponding to a fax machine CNG tone. 
DivaAnswerTone and DivaFaxFlags corresponding to CED tone/fax protocol. 
DivaModemCallingTone, corresponding to an analogue modem. 

Mechanism 4: (Fax status) 

In the case of fax, it is also possible to get real-time status updates once a fax call is up. The Diva SDK sends messages giving fax progress updates: DivaFaxPageReceived, DivaFaxReceived, DivaFaxPageSent, DivaFaxSent, which you can intercept in your event handler or callback routine. 

In addition, DivaGetCallInfo() during a call will return a structure that gives details on the fax status, including remote fax ID, connection speed, number of pages, resolution, and whether the fax connection is using EC, MR, MMR. 

One can even opt to combine all of these mechanisms in one application.

 

Return to Documentation Home I Return to Sangoma Support