Flushes the internal digit collection queue.
AG
CG
DWORD adiFlushDigitQueue ( CTAHD ctahd)
|
Argument |
Description |
|
ctahd |
Context handle returned by ctaCreateContext or ctaAttachContext. |
|
Return value |
Description |
|
SUCCESS |
|
|
CTAERR_FUNCTION_ACTIVE |
Digit collection function is active. |
|
CTAERR_INVALID_CTAHD |
Context handle is invalid. |
|
CTAERR_INVALID_STATE |
Function not valid in the current port state. |
|
CTAERR_SVR_COMM |
Server communication error. |
Use adiFlushDigitQueue to discard all digits in the ADI service internal digit collection queue. This function cannot be invoked while the application is actively collecting digits using adiCollectDigits.
If any digits are queued in the ADI service when a play or record voice operation is started, and the voice operation is to terminate on those specific touchtones, the voice operation terminates immediately. To prevent this from happening, use adiFlushDigitQueue or adiGetDigit to remove the escape key from the queue.
The digit queue is automatically flushed when a call is released.
For more information, refer to Collecting digits.
adiPeekDigit, adiStopCollection
/* Play a message, ignoring dtmfs. */
int myPlayToCompletion( CTAHD ctahd, unsigned encoding, void *buffer, unsigned bufsize )
{
ADI_PLAY_PARMS playparms;
CTA_EVENT event;
ctaGetParms( ADI_COLLECT_PARMID, &playparms, sizeof playparms );
playparms.DTMFabort = 0x0;
adiPlayFromMemory( ctahd, encoding, buffer, bufsize, &playparms );
do
{
myGetEvent( &event ); /* see ctaWaitEvent example */
} while( event.id != ADIEVN_PLAY_DONE );
if( event.value != CTA_REASON_FINISHED )
return MYFAILURE;
/* We've finished playing an uninteruptable message (no DTMF abort).
* but some DTMFs may have been pressed and are sitting in the digit
* collection queue. If we don't remove them, the queued digits
* will cause the next interruptible play to be aborted immediately.
*/
adiFlushDigitQueue( ctahd );
return SUCCESS;
}