我们有希望使用DTMF音调而不是RFC2833电话事件来检测DTMF数字的情况。我们试图通过对不支持电话事件的200个OK来响应SIP邀请(包括对SDP中的电话事件的支持)来避免双DTMF数字检测。
,例如
Session Initiation Protocol (INVITE)
Request-Line: INVITE sip:blahblah@172.23.20.127:5060 SIP/2.0
Message Header
Message Body
Session Description Protocol
Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): sphericall 24706 24707 IN IP4 172.23.20.122
Session Name (s): -
Connection Information (c): IN IP4 172.23.31.2
Time Description, active time (t): 0 0
Media Description, name and address (m): audio 19708 RTP/AVP 8 0 18 101
Media Attribute (a): rtpmap:8 PCMA/8000
Media Attribute (a): rtpmap:0 PCMU/8000
Media Attribute (a): rtpmap:18 G729/8000
Media Attribute (a): fmtp:18 annexb=no
Media Attribute (a): rtpmap:101 telephone-event/8000
Media Attribute (a): fmtp:101 0-16
我们响应;
Session Initiation Protocol (200)
Status-Line: SIP/2.0 200 OK
Message Header
Message Body
Session Description Protocol
Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): - 3720425649 3720425650 IN IP4 0.0.0.0
Session Name (s): pjmedia
Bandwidth Information (b): AS:84
Time Description, active time (t): 0 0
Session Attribute (a): X-nat:0
Media Description, name and address (m): audio 20004 RTP/AVP 8
Connection Information (c): IN IP4 172.23.20.127
Bandwidth Information (b): TIAS:64000
Media Attribute (a): sendrecv
Media Attribute (a): rtpmap:8 PCMA/8000
但是,即使我们没有在反应中包括对电话事件的支持,我们仍然收到了他们。是我们做错了什么,还是不能阻止服务器通过SDP协商发送它们。
我认为您没有做错任何事情。
SDP答案包含UA愿意/能够处理的编解码器。您的SDP答案仅包含PCMA音频,并且PEER UA(或SIP Server)应该尊重这一点。这并不意味着实施不佳的事实(IMHO)。
大多数SIP服务器都有一个属性来指定必须使用哪种DTMF信号(RFC 2833/4733,SIP INFO,频段音频)。我认为,如果您想控制使用的DTMF信号的类型,您应该寻找此属性。