You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改FreeSwitch的拨号计划/Sofia配置文件添加P-Early-Media头?

在FreeSwitch中配置预应答时183消息添加P-Early-Media头

一、修改拨号计划(针对特定业务场景)

直接在需要触发预应答的拨号计划路由中,通过set指令添加P-Early-Media头,配合pre_answer动作生效:

  1. 打开目标拨号计划文件(如conf/dialplan/default.xml或业务专属拨号计划)
  2. 在对应路由的<condition>块内添加以下动作:
<extension name="pre_answer_with_early_media">
  <condition field="destination_number" expression="^你的业务号码前缀$">
    <!-- 设置P-Early-Media头,值需和3GPP核心网侧确认,常用supported或sendrecv -->
    <action application="set" data="sip_h_P-Early-Media=supported"/>
    <!-- 触发预应答,发送183 Session Progress消息 -->
    <action application="pre_answer"/>
    <!-- 播放错误语音文件 -->
    <action application="playback" data="error-message.wav"/>
    <!-- 后续业务逻辑 -->
  </condition>
</extension>
  • sip_h_前缀是FreeSwitch中设置自定义SIP头的标准方式,会自动将头插入到后续发送的SIP消息中(包括183)。
  • 执行pre_answer后,FreeSwitch会立即发送带SDP的183消息,此时P-Early-Media头已被附加。

二、调整Sofia配置(全局生效或对接3GPP的Profile)

如果需要所有对接3GPP核心网的呼叫都自动添加该头,可修改对应SIP Profile的配置:

  1. 打开与3GPP核心网对接的Sofia配置文件(如conf/sip_profiles/external.xml)
  2. 在<profile>标签内添加以下参数:
<!-- 开启183消息发送 -->
<param name="enable-183" value="true"/>
<!-- 全局添加P-Early-Media头 -->
<param name="sip-headers" value="P-Early-Media: supported"/>
<!-- 确保183消息携带SDP,P-Early-Media通常需配合SDP使用 -->
<param name="183-session-progress-sdp" value="true"/>
  • 若仅需在预应答场景添加,可结合send-p-early-media参数:
<param name="send-p-early-media" value="true"/>

三、关键注意事项

  • 头值确认:务必和电信核心网侧确认P-Early-Media的取值(supported/sendrecv等),不同厂商的核心网可能要求不同。
  • 媒体协商:确保FreeSwitch的编码配置(如G.711、AMR等)与3GPP核心网一致,否则即使头正确,错误语音也无法正常传输。
  • 验证方法:执行命令sofia global siptrace on开启SIP追踪,在FreeSwitch日志中检查发送的183消息是否包含P-Early-Media头。

内容的提问来源于stack exchange,提问作者sorosh_sabz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:52:48