Freeswitch bgapi使用ignore_early_media = true发出命令

Luc*_*nes 5 freeswitch

我在freeswitch上尝试以下场景:

  • 创建一个电话(a-leg)
  • 创建另一个电话(b-leg)
  • 桥然后在一起

b-leg手机是其他freeswitch的拨号方案如下:

<extension name="EarlyMedia">
    <condition field="destination_number" expression="^[+]?[1]?<MY_NUMBER>">
        <action application="pre_answer"/>
        <action application="playback" data="/home/ubuntu/EARLY_MEDIA.wav"/>
        <action application="sleep" data="1000"/>
        <action application="answer"/>
        <action application="playback" data="/home/ubuntu/CALL_MEDIA.wav"/>
        <action application="sleep" data="1000"/>
    </condition>
</extension>
Run Code Online (Sandbox Code Playgroud)

我发送给freeswitch的命令序列如下:

  • 一条腿

bgapi originate {ignore_early_media=true,bridge_early_media=false,origination_caller_id_number=sofia/external/<MY_FROM_NUMBER>@<MY_IP>,origination_channel_name=<MY_CHANNEL>,ringback=\'%(2000,4000,440,480)\'}sofia/external/<A-LEG NUMBER>@<MY_IP> &park()

  • B-腿

bgapi originate {ignore_early_media=true,bridge_early_media=false,origination_caller_id_number=sofia/external/<MY_FROM_NUMBER>@<MY_IP>,origination_channel_name=<MY_CHANNEL>,ringback=\'%(2000,4000,440,480)\'}sofia/external/<B-LEG NUMBER>@<MY_IP> &park()

  • uuid_bridge

bgapi uuid_bridge <A-LEG UUID> <B-LEG UUID>

问题是即使使用ignore_early_media = true,bridge_early_media = false我听到A-LEG上的早期媒体

byo*_*ale 0

ignore_early_media并不意味着您没有“听到”早期媒体。这只是意味着 Freeswitch 不会将其视为答案。

来自文档 ignore_early_media

控制呼叫是否在早期媒体上返回。默认为 false

即使ringback=\'%(2000,4000,440,480)\设置了,我发现 Freeswitch 仍然会发送183 SIP 响应。如果是您的 Freeswitch 发送了您不想要的 183,请删除ringback=\'%(2000,4000,440,480)\并查看是否有效。另外,您可以用来ring_ready发送不应该有 SDP/早期媒体的 180。