Freeswitch将407代理认证转为480 Temporary unavailable
Freeswitch converts 407 proxy authentication to 480 Temporary unavailable
网络设置如下。
最终用户 ------ Kamailio ------ Freeswitch ----- Sip 服务器 A
- 在SIP服务器A注册成功,请求直接通过kamailio到SIP服务器A,离开freeswitch。
- 收到最终用户对 Kamailio 的 INVITE 请求,然后 freeswitch 到达 SIP 服务器 A,它响应 407 代理身份验证以验证用户,但作为回复 freeswitch 发送 ACK
但是 freeswitch 回复 kamailio 说 480 暂时不可用并且通话中断。
最终用户 ------ Kamailio ---------- Freeswitch -------- SIP 服务器 A
注册 ------> | ---------------------------------------------->|
| -----------> | <----------------------- 200 OK
邀请 --------------> | ---------------------->| ------------------> |
|<----------- 407
(Proxy Auth Req.)
ACK ---------> |
| <--------- | <-------- 480
(Temporary Unavailable)
所以这是我的问题,
- 将 freeswitch 中的响应代码从 407 更改为 480 的原因?
- 以及如何配置 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>
网络设置如下。
最终用户 ------ Kamailio ------ Freeswitch ----- Sip 服务器 A
- 在SIP服务器A注册成功,请求直接通过kamailio到SIP服务器A,离开freeswitch。
- 收到最终用户对 Kamailio 的 INVITE 请求,然后 freeswitch 到达 SIP 服务器 A,它响应 407 代理身份验证以验证用户,但作为回复 freeswitch 发送 ACK
但是 freeswitch 回复 kamailio 说 480 暂时不可用并且通话中断。
最终用户 ------ Kamailio ---------- Freeswitch -------- SIP 服务器 A
注册 ------> | ---------------------------------------------->|
| -----------> | <----------------------- 200 OK
邀请 --------------> | ---------------------->| ------------------> |
|<----------- 407 (Proxy Auth Req.) ACK ---------> | | <--------- | <-------- 480 (Temporary Unavailable)
所以这是我的问题,
- 将 freeswitch 中的响应代码从 407 更改为 480 的原因?
- 以及如何配置 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>