Freeswitch将407代理认证转为480 Temporary unavailable

Freeswitch converts 407 proxy authentication to 480 Temporary unavailable

网络设置如下。

最终用户 ------ Kamailio ------ Freeswitch ----- Sip 服务器 A

  1. 在SIP服务器A注册成功,请求直接通过kamailio到SIP服务器A,离开freeswitch。
  2. 收到最终用户对 Kamailio 的 INVITE 请求,然后 freeswitch 到达 SIP 服务器 A,它响应 407 代理身份验证以验证用户,但作为回复 freeswitch 发送 ACK
  3. 但是 freeswitch 回复 kamailio 说 480 暂时不可用并且通话中断。

    最终用户 ------ Kamailio ---------- Freeswitch -------- SIP 服务器 A

    注册 ------> | ---------------------------------------------->|

    | -----------> | <----------------------- 200 OK
    

    邀请 --------------> | ---------------------->| ------------------> |

                                |<----------- 407  
                                       (Proxy Auth Req.)   
                               ACK ---------> |
    
      | <--------- | <-------- 480 
                          (Temporary Unavailable) 
    

所以这是我的问题,

  1. 将 freeswitch 中的响应代码从 407 更改为 480 的原因?
  2. 以及如何配置 freeswitch,以便它将 407 响应直接传递给 kamailio,而不是转换为 480。

需要建议...

FreeSWITCH 不是 SIP 代理,FreeSWITCH 是 B2BUA。这意味着 FreeSWITCH 尝试独立呼叫 SIP 服务器 A。如果成功,则 FreeSWITCH 将桥接来自最终用户的呼叫(不是来自 kamailio,因为 kamailio 是此方案中的 SIP 代理,而不是 B2BUA)。它无法将 407 重新发送到 kamailio,因为它没有适当的机制。但是您可以将身份验证信息存储在 FreeSWITCH 端的网关中,并指示 FreeSWITCH 为每个用户进行适当的调用并抛出拨号方案。

如果你在你的 external.xml SIP 配置文件配置中写这样的东西,它将起作用:

<gateway name="asterlink.com">
 <param name="username" value="cluecon"/>
 <param name="password" value="2007"/>
 <!--/// do not register ///-->
 <param name="register" value="false"/>
</gateway>

拨号方案中类似这样的东西default.xml:

<extension name="end-user">
 <condition field="${sip_from_user}" expression="<end_user_caller_id_number>">
  <action application="bridge" data="sofia/gateway/asterlink.com/${destination_number}"/>
 </condition>
</extension>