我是艾哈迈德,我正在开发。 实际上,我在论坛上播撒你的问题,我有一个问题,我认为你有答案。
实际上,我做了一个简单的senario来在opensips服务器上注册的用户之间路由呼叫,但是当谈到真正的IP电话(每个人都有自己的IP地址)时,它无法正常工作。 ( 树干 )。 例如:我的opensips地址:10.42.15.18 我的IP地址是:10.42.13.82 我认为这是关于SIP干线的全部。
我在这部分被封锁并搜索了很多解决方案,也许有一个我错过的细节。 哪个功能负责处理IP电话的请求和响应?
我使用了这段代码:
仅限帐户
if ($rU=="49894614950666"){
$rU = $tU;
rewritehostport("10.42.13.82:5060");
$du = "sip:49894614950666@10.42.13.82;user=phone";
t_relay();
xlog("reference to URI of 'To' header ====> $tu");
xlog("reference to domain in URI of 'TO' header ====> $td");
# route the call out based on RURI
route(3);
}
route[3]{
seturi("sip:49894614950666@10.42.13.82;user=phone");
$du = "sip:49894614950666@10.42.13.82;user=phone";
rewriteuri("sip:49894614950666@10.42.13.82;user=phone");
xlog("route 2 : forwarding to $tU \n $ruri \n");
xlog("Received $rm from $fu (callid: $ci)\n");
forward();
if (is_method("INVITE")) {
t_on_branch("2");
t_on_reply("2");
t_on_failure("1");
}
if (!t_relay()) {
sl_reply_error();
};
exit;
}
当从软电话呼叫所请求的号码时,服务器发送请求INVITE,如下所示:
INVITE sip:49894614950666@10.42.15.18;transport=TCP SIP/2.0
Via: SIP/2.0/TCP 10.42.15.12:5060;branch=z9hG4bK-524287-1---dedd27ee7475c0f1
Max-Forwards: 70
Contact: <sip:test11@10.42.15.12:5060;transport=tcp>
To: <sip:49894614950666@10.42.15.18;transport=TCP>
From: <sip:test11@10.42.15.18;transport=TCP>;tag=2f025b44
Call-ID: tdO14DnlADH9Okx6Sr0p4A..
CSeq: 1 INVITE
Content-Type: application/sdp
User-Agent: Z 3.15.40006 rv2.8.20
Allow-Events: presence, kpml, talk
Content-Length: 237
并且目标VM向INVnsips服务器重新发送INVITE请求,但是,服务器开始向自己发送消息而不响应目标机器...
我想知道INVITE消息中的“To”字段是假的! opensips只向IP电话发送邀请并忽略来自它的消息,在任何确认后都不响应。 我应该添加或修改什么? 非常感谢你。
答案 0 :(得分:0)
为什么不使用lookup功能?它完全适用于像您这样的情况,并且会自动完成重写URI的所有工作。
类似的东西:
if (lookup("location","m")) {
xlog("[INCOMINGCALL][$rU @ $si:$sp ] Forward call call to <$ru> via <$du>\n");
if (!t_relay()) {
send_reply("503","Internal Error");
};
exit;
}
t_reply("404", "Not Found");
exit;
此技术的优点是,您可以使用&amp; openipsctl地址&#39;在运行时更改位置。命令