bgapi originate sofia/external/1234@61.132.230.73:5161 &echo
得到的是:
172.17.129.123:5088 -> 61.132.230.73:5161
INVITE sip:1234@61.132.230.73:5161 SIP/2.0
Via: SIP/2.0/UDP 8.141.11.8:5088;rport;branch=z9hG4bKcagQFyUgF21NS
Max-Forwards: 70
From: "" <sip:0000000000@8.141.11.8>;tag=t97H06r7rK2vj
To: <sip:1234@61.132.230.73:5161>
Call-ID: 683839e5-6a31-123e-61bf-00163e324ab9
CSeq: 95475261 INVITE
Contact: <sip:mod_sofia@8.141.11.8:5088>
...
但想修改 sip 头,有什么好办法呢?(比如修改主叫号码等)
当然有!
先设置全局变量
global_setvar sip_invite_route_uri=<sip:88888888@172.17.129.123:6666;lr;orig>
再用同样的命令呼出
bgapi originate sofia/external/1234@61.132.230.73:5161 &echo
则得到:
172.17.129.123:5088 -> 172.17.129.123:6666
INVITE sip:1234@61.132.230.73:5161 SIP/2.0
Via: SIP/2.0/UDP 8.141.11.8:5088;rport;branch=z9hG4bKmjtXXp2cr9KBp
Route: <sip:88888888@172.17.129.123:6666;lr;orig>
Max-Forwards: 70
From: "" <sip:0000000000@8.141.11.8>;tag=6NQUNB3HpyDXD
To: <sip:1234@61.132.230.73:5161>
Call-ID: ddb0fd6b-6a32-123e-61bf-00163e324ab9
CSeq: 95475574 INVITE
Contact: <sip:mod_sofia@8.141.11.8:5088>
...
剩下的就很简单了,配置 kamailio/opensips,用 sip proxy 修改 sip 头
kamailio/opensips listen=udp:172.17.129.123:6666
也就是 fs->sip proxy->落地
FreeSWITCH 很强很方便,只要用心,就能找到解决问题的办法
下面给出 kamailio 路由脚本的主要部分:
# 这就是预加载路由
route[PRELOADED_ROUTE] {
# 如果不是 INVITE, 那么返回
if (!is_method("INVITE")) {
return;
}# 如果没有 Route 头,那么返回
if (!is_present_hf("Route)) {
return;
}# 修改主叫号码(取 Route 头里面的 user)
$fU = $(route_uri{uri.user});# 删除某些 sip 头(视情况而定)
remove_hf("Route");
remove_hf("Remote-Party-ID");
remove_hf("User-Agent");
remove_hf("Allow-Events");
remove_hf("X-FS-Support");
record_reoute();
t_relay();
exit;}