The OpenRxIvrChannel API procedure allows application software to access phone line received audio data. The primary purpose is to allow speech recognition or other special signal processing of received audio data. The audio data from this interface can be used for whatever your application demands.

Namespace:  LanScape
Assembly:  LMEVoipManaged (in LMEVoipManaged.dll) Version: 6.0.5226.26700

Syntax

C#
public VoipMediaEngine..::.TELEPHONY_RETURN_VALUE OpenRxIvrChannel(
	VoipMediaEngine MediaEngine,
	int PhoneLine,
	VoipMediaEngine..::.IVRCALLBACKPROC RxIvrCallback,
	Object RxIvrCallbackUserData,
	bool PerformConversion,
	VoipMediaEngine..::.AUDIO_BANDWIDTH ReceiveIvrDataType,
	ref int SamplesPerIvrBuffer,
	ref int BytesPerIvrBuffer,
	ref bool SamplesInByteArray
)
Visual Basic (Declaration)
Public Function OpenRxIvrChannel ( _
	MediaEngine As VoipMediaEngine, _
	PhoneLine As Integer, _
	RxIvrCallback As VoipMediaEngine..::.IVRCALLBACKPROC, _
	RxIvrCallbackUserData As Object, _
	PerformConversion As Boolean, _
	ReceiveIvrDataType As VoipMediaEngine..::.AUDIO_BANDWIDTH, _
	ByRef SamplesPerIvrBuffer As Integer, _
	ByRef BytesPerIvrBuffer As Integer, _
	ByRef SamplesInByteArray As Boolean _
) As VoipMediaEngine..::.TELEPHONY_RETURN_VALUE
Visual C++
public:
VoipMediaEngine..::.TELEPHONY_RETURN_VALUE OpenRxIvrChannel(
	VoipMediaEngine^ MediaEngine, 
	int PhoneLine, 
	VoipMediaEngine..::.IVRCALLBACKPROC^ RxIvrCallback, 
	Object^ RxIvrCallbackUserData, 
	bool PerformConversion, 
	VoipMediaEngine..::.AUDIO_BANDWIDTH ReceiveIvrDataType, 
	int% SamplesPerIvrBuffer, 
	int% BytesPerIvrBuffer, 
	bool% SamplesInByteArray
)
J#
public VoipMediaEngine..::.TELEPHONY_RETURN_VALUE OpenRxIvrChannel(
	VoipMediaEngine MediaEngine,
	int PhoneLine,
	VoipMediaEngine..::.IVRCALLBACKPROC RxIvrCallback,
	Object RxIvrCallbackUserData,
	boolean PerformConversion,
	VoipMediaEngine..::.AUDIO_BANDWIDTH ReceiveIvrDataType,
	/** @ref */int SamplesPerIvrBuffer,
	/** @ref */int BytesPerIvrBuffer,
	/** @ref */boolean SamplesInByteArray
)

Parameters

MediaEngine
Type: LanScape..::.VoipMediaEngine
A reference to the media engine.
PhoneLine
Type: System..::.Int32
The zero based phone line to access. A callback procedure can be registered for any or all of the phone lines supported by the telephony engine.
RxIvrCallback
Type: LanScape..::.VoipMediaEngine..::.IVRCALLBACKPROC
A user supplied delegate (callback procedure) of type VoipMediaEngine..::.IVRCALLBACKPROC. This callback procedure will be executed whenever audio sample data has been received on the phone line. The callback procedure is not required to return a value. The callback will be passed a reference to a variable of type VoipMediaEngine..::.IVR_RECOGNITION_DATA.
RxIvrCallbackUserData
Type: System..::.Object
User specified instance data. This reference value will be passed to the user's callback procedure unmodified.
PerformConversion
Type: System..::.Boolean
If TRUE, the telephony engine will perform format and rate conversion from the telephone line rate/format to the user specified rate and format. If setting this parameter to TRUE, you must also specify appropriate value for parameter ReceiveIvrDataType.

If FALSE, the phone line data is passed to the application using the rate and format the telephony engine negotiated with the far end of the call. The application will receive streaming audio data in the same rate and format as that being transacted between the call points. When setting this parameter to FALSE, the parameter ReceiveIvrDataType is ignored.

ReceiveIvrDataType
Type: LanScape..::.VoipMediaEngine..::.AUDIO_BANDWIDTH
The user specified data type (rate/format) the application expects to receive from the receive IVR interface. You can specify any 20Ms VoipMediaEngine..::.AUDIO_BANDWIDTH data type defined except for Speex. Also, do not specify 30Ms data types.
SamplesPerIvrBuffer
Type: System..::.Int32 %
A variable reference that will receive a value that represents the number of samples the application will receive in each received IVR sample block.
BytesPerIvrBuffer
Type: System..::.Int32 %
A variable reference that will receive a value that represents the number of sample bytes the application will receive in each received IVR sample block.
SamplesInByteArray
Type: System..::.Boolean %
This parameter will allow application software to easily determine if received IVR sample data will be passed back to the application as a byte (8 bit) element buffer or a short (16 bit) element buffer.

Return Value

If the function succeeds, the return value will be SipSuccess.

If the function fails, the return value will be one of the following values as specified by the VoipMediaEngine..::.TELEPHONY_RETURN_VALUE data type.

Return ValueDescription
SipCallFailure
This value is returned by telephony API procedures to indicate general API failure. This error value is used as a "catch all error". If you receive this error, check to make sure that all parameters specified in the API procedure call are correct. Particularly, verify that pointers to memory regions are valid. This error return value is only used if a mapping to another specific error value does not exist.

(API return value)

SipBadParameter
One of the telephony API procedures was called by application software and was passed a pointer to an invalid memory address. Normally this error will occur when application software passes NULL pointer values to the telephony API. For managed code applications, you should never see this error unless your process space has exhausted memory.

(API return value)

SipInvalidHandle
Application software specified an invalid telephony handle in one of the API procedures. This usually indicates memory corruption on the part of application software.

(API return value)

SipBadPhoneLine
Application software called a telephony API procedure and specified an invalid phone line. Phone lines are numbered starting from zero. This error is most commonly returned when attempting to access phone lines in excess of the max number of lines supported by the telephony engine.

(API return value)

SipBadAudioDataType
Indicates that application software attempted to specify an invalid IVR or Audio Output media data type when calling the OpenRxIvrChannel(VoipMediaEngine, Int32, VoipMediaEngine..::.IVRCALLBACKPROC, Object, Boolean, VoipMediaEngine..::.AUDIO_BANDWIDTH, Int32%, Int32%, Boolean%), SetTxIvrDataType(VoipMediaEngine..::.AUDIO_BANDWIDTH), GetTxIvrSampleBlockSize(VoipMediaEngine..::.AUDIO_BANDWIDTH, Int32%, Int32%, Boolean%), or the SetAudioOutDataType(VoipMediaEngine..::.AUDIO_BANDWIDTH) API procedures. Make sure you specify the appropriate VoipMediaEngine..::.AUDIO_BANDWIDTH parameter when calling these API procedures.

(API return value)

SipMemoryError
The telephony engine attempted to allocate system memory but the allocation failed. Make sure the host system has enough virtual memory. Increasing the amount of virtual memory can remove these errors, however if critical telephony engine code has been swapped out to disk and is not resident in physical memory, you may experience degraded audio/video performance. If you want to remove this error and obtain the best possible audio/video performance, make sure the host system has enough physical memory. To resolve this error, you may also want to consider disabling certain features of the media engine such as conference calling. You can also reduce memory requirements if you reduce the maximum signal length of internal media engine signal paths by specifying a smaller number for the MaxMixerLinebuffers member of the VoipMediaEngine..::.START_SIP_TELEPHONY_PARAMS class that is passed to the StartSipTelephony(VoipMediaEngine..::.START_SIP_TELEPHONY_PARAMS) and ReStartSipTelephony(VoipMediaEngine..::.START_SIP_TELEPHONY_PARAMS) API procedures.

(API return value, PHONE_LINE_NOTIFICATION)

SipIvrAlreadyOpened
Indicates that application software attempted to open an IVR channel that is already open. IVR channels can only be opened once.

(API return value)

Remarks

If your application uses receiver IVR channels, you must open and prepare all required receiver IVR channels before any of the phone lines are allowed to leave the off hook state. Under normal operations, your software should open and configure all receiver IVR channels before finally enabling the telephony engine using the SipTelephonyEnable()()() API procedure.

This is in contrast to how an application opens and manages transmit IVR channels. For further information, see the OpenTxIvrChannel(VoipMediaEngine, Int32, Int32) API procedure.

See Also