将(只是 SDP 中的文本)telephone-event/16000 更改为 8000 并再次返回

change (just text in SDP) telephone-event/16000 to 8000 and back again

我的 sip 合作伙伴有时确实在 SDP 中发送:

v=0
o=HuaweiSoftx3000 69494235717543 69494235717543 IN IP4 18.8.14.12
s=-
c=IN IP4 18.8.14.12
t=0 0
m=audio 39204 RTP/AVP 96 98 8 99 100 104 0 97
a=rtpmap:96 AMR-WB/16000
a=rtpmap:8 PCMA/8000
a=rtpmap:104 telephone-event/16000

(没有 telephone-event/16000),我们期望 telephone-event/8000 所以我们更改它(只是文本替换)

所以我们修复它 - 像这样

route[FIXSDP] {
       if (has_body("application/sdp")) {
               if(subst("/event\/16000/event\/8000/")) {
                       xlog("L_INFO", "SDP SILLTFIXDTMF [$fU->$tU]");
               }
       }
}

它大约占 sip 流量的 20%。

但我们希望(需要)将“200”条消息中返回此聚会的 8000 替换为看起来像 16000,并且仅在那些对话框中(其他有 8000 并且工作正常),有什么提示吗? (需要对此保持状态)。

你应该检查textops模块,它有很多重写功能。

对于向后你应该使用 on_reply 路线。您可以使用对话和 avpairs 标记您的通话。

您可以使用 Kamailio htable 模块。

modparam("htable", "htable", "telEvent=>size=1024;autoexpire=10800")
$sht(telEvent=>$ci::status) = 1;

当特殊数据包到达时,您可以将此信息添加到htable。然后发送200 OK包就可以使用了