Quantcast
Channel: Dialogic PowerMedia HMP GlobalCall and R4 API - Recent Threads
Viewing all articles
Browse latest Browse all 1151

HMP 3.0 bugs in SDP response to multiple offered DTMF payload types in INVITE SDP

$
0
0

We are integrating with a cloud based contact centre system and it sends Opus, PCMA, PCMU as offered codecs in that order. HMP doesn't know what Opus is - which is fine. It negotiates PCMA but something odd happens with the DTMF payload negotiation but I can kind-of work around it (see offer/answer SDP's below for details). It chooses the first DTMF payload type 101 which has a declared rate of 48000, but responds with 101 but with the rate 8000. Payload type 102 with a declared rate of 8000 is ignored. The other issue is that it duplicates a= lines in the response SDP which can cause some endpoints to reject the SIP (like Cisco CUBE is known to do).

In my view, the RFC 2833 (RFC 4733) payload type rate in an SDP response should be matched to the rate of the codec its being used with. PCMA is 8000 by default. Opus is declared in the SDP to be 48000/2. I'm not entirely sure whether its legal to change the rate of a specific offered RFC 2833 payload type like that but it stops DTMF from working in my testing (it appears that the source of the call doesnt like it).

I'm using HMP 3.0WIN SU372 (the latest at the time of writing) and using first party call control. This is a plain offer/answer without insertion of parameters to alter the HMP SIP stack operation (i.e. entirely automatic).

Offered call SDP (note that the 96 in the m= line is the Opus codec and the rate for opus is 48000):

v=0
o=- 2195393794 3705353689 IN IP4 10.102.80.228
s=-
c=IN IP4 10.102.80.228
t=0 0
m=audio 19568 RTP/AVP 96 8 101 102
a=rtpmap:96 opus/48000/2
a=rtpmap:101 telephone-event/48000
a=fmtp:101 0-15
a=rtpmap:102 telephone-event/8000
a=fmtp:102 0-15
a=sendrecv
 

Response SDP from HMP (wrong because the a=rtpmap line has had its rate changed from 48000 to 8000 and it has duplicated a pair of a= lines):

v=0
o=Dialogic_SIP_CCLIB 112755896 112755897 IN IP4 10.112.24.22
s=Dialogic_SIP_CCLIB
c=IN IP4 10.112.24.22
t=0 0
m=audio 49170 RTP/AVP 8 101 101
a=sendrecv
a=ptime:20
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-15
My workaround is that I assert the desired RFC2833 payload type 102 (i.e. set IPSET_DTMF:IPPARM_DTMF_RFC2833_PAYLOAD_TYPE=102) I get the following which is still not entirely correct because of the duplicated m= line with the double 102 and duplicated a=rtpmap lines (but two rtpmap with one fmtp lines) but happens to be accepted:

v=0
o=Dialogic_SIP_CCLIB 112756472 112756473 IN IP4 10.112.24.22
s=Dialogic_SIP_CCLIB
c=IN IP4 10.112.24.22
t=0 0
m=audio 49164 RTP/AVP 8 102 102
a=sendrecv
a=ptime:20
a=rtpmap:102 telephone-event/8000
a=rtpmap:102 telephone-event/8000
a=fmtp:102 0-15

 


Viewing all articles
Browse latest Browse all 1151

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>