Author |
|
speedvoip Vetran
Joined: August 07 2008 Location: Canada Posts: 156
|
Posted: October 20 2008 at 6:41am | IP Logged
|
|
|
Hi Support:
From latest media engine reference, RFC2833 is fully supported. Is it right? How to interact with upper application? Second issue, How to implement DTMF delivery upon SIP INFO? Is there code segment or full sample to demonstrate how to use it?
Thanks
George Lee
|
Back to Top |
|
|
support Administrator
Joined: January 26 2005 Location: United States Posts: 1666
|
Posted: October 20 2008 at 1:25pm | IP Logged
|
|
|
Hi George,
You >>>
From latest media engine reference, RFC2833 is fully supported. Is it right?
<<< Support
Yes, RFC2833 DTMF detection and generation is fully supported. Nice stuff… rock solid.
You >>>
How to interact with upper application?
<<< Support
To use RFC2833 DTMF is pretty simple. Your application code starts the media engine with RFC2833 DTMF enabled (a handful of startup parameters). Then for each phone line in your app that you want RFC2833 DTMF detection to be enabled you call a single API procedure SetRfc2833DtmfDecoderEnableState(). That is all there is to it. Your VOIP app can then generate RFC2833 out-of-band DTMF using the StartDtmfTone() and StopDtmfTone() API procs. DTMF detection is even simpler, the media engine will automatically send your app DTMF ON and OFF related events on a per-phone-line basis whenever received RFC2833 DTMF is detected.
You >>>
How to implement DTMF delivery upon SIP INFO?
<<< Support
This last year we deliberated over the support of DTMF via SIP INFO requests. We handle in-band DTMF generation and detection (must use lossless codecs for calls) and we fully support RFC2833 DTMF generation and detection. RFC2833 DTMF generation and detection is rock solid and we love it.
The media engine does not support DTMF via SIP INFO requests because of two factors: 1) Its non-standard. 2) It duplicated the RFC2833 DTMF capability the media engine supports.
It was a hard decision to not support SIP INFO DTMF but one we had to make.
The good news is that the media engine does not stop apps from receiving or generating SIP INFO DTMF requests and responses. It’s a bit clunky to do but completely possible.
If your app requires DTMF detection using SIP INFO messages, your app can receive the raw SIP messages (see the SipModifySipMessage event), inspect them and determine the DTMF digit request(s) contained. Your app then must formulate its own “200 OK” response and then transmit the SIP response back to the far end using the SendUdpDatagramUsingSipPort() API proc.
Like I said, a bit clunky but completely possible.
To transmit SIP INFO DTMF, your app will have to construct its own SIP INFO message al on its own. Transmit this SIP message to the far end using the SendUdpDatagramUsingSipPort() API proc and process the response from the far end. Transmitting INFO DTMF is a bit harder that detection discussed above – but again, it completely possible and the media engine will not get in your way.
We may still eventually support DTMF via SIP INFO messages but it will take a back seat to other features yet to be released. Please try to use RFC2833 DTMF. Its already there and is more robust and much less susceptible to network lost packets, etc.
You >>>
Is there code segment or full sample to demonstrate how to use it?
<<< Support
The answer is YES if we are talking about RFC2833 generation and detection. The two soft phone C/C++ apps demonstrate both generation and detection. You will really like how easy it is to use.
One thing that would make good sense would be to have the media engine support INFO SIP messages and their responses in a generic fashion. This way we would handle all INFO SIP messages and DTMF would then be a special case of the base functionality.
Hmm.. Its something to think about because it would not be hard to implement at all… We will make a note of this.
Support
|
Back to Top |
|
|
speedvoip Vetran
Joined: August 07 2008 Location: Canada Posts: 156
|
Posted: October 21 2008 at 1:29am | IP Logged
|
|
|
Thanks for your support. In fact, I think it is good way to handle SIP INFO message in generic fashion at media engine, because per RFC3261 SIP INFO request and response is only a pair of transaction, not belonging to dialog or session layer. So that is to say: SIP INFO do not change calleg state.
Moreover, derived from this point, I feel that media engine also supply API framework for building SIP generic message such as INFO.
|
Back to Top |
|
|
support Administrator
Joined: January 26 2005 Location: United States Posts: 1666
|
Posted: October 21 2008 at 6:24am | IP Logged
|
|
|
Yes, exactly.
|
Back to Top |
|
|