我使用 Kamailio 4.4 作为我的 Asterisk 服务器的代理。我正在尝试开发一种方案,当收到推送通知时,扩展程序通过Kamailio在星号上注册。当此分机的呼叫到达Kamailio时,此推送通知将发送到SIP扩展名。
例如,假设通过Kamailio在Asterisk上注册了两个SIP扩展(扩展名1和扩展名2 )。当来自分机1的呼叫到达星号时,它会通过Kamailio将 INVITE 请求转发到分机2.Kamailio将尝试将其转发到分机2.假设分机2无法接收来自Kamailio的邀请请求。当扩展名2收到推送通知时,它将在星号上注册。 所以我需要通过新注册接收扩展2的呼叫。
我们正在尝试在接收推送通知时模拟扩展到星号的注册。 首先,我们注册了扩展2并断开了网络连接。然后,当来自分机1的呼叫到达Kamailio时,我们尝试注册相同的分机。这是基于推送的注册的模拟,因为接收推送的扩展将在收到来电时尝试注册。
当星号向Kamailio发送INVITE请求时,它会立即回复 100次尝试临时响应。 Kamailio对星号的100回应可防止星号重新发送INVITE。 然后Kamailio尝试发送并重新传输数据包到扩展2,它没有网络访问权限。此扩展名2的端口号为 24071 。即使在扩展2成功注册(在端口59995 中)之后,Kamailio仍继续将数据包传输到旧端口。
之后,我们配置了Kamailio,它不会立即发送临时回复( 100尝试) INVITE 请求。 在这里,Kamailio没有立即向Asterisk发送 100次尝试消息。这迫使Asterisk重新传输。发现Asterisk重传了相同的数据包。然而,即使在成功注册扩展2之后,星号继续将旧邀请发送到Kamailio,而不是将新邀请发送到最新端口。
这是我的问题,因为推依赖邀请以正确的端口号到达手机。
那么,还有其他好方法可以解决这个问题吗?
我想尝试的一件事是在新注册到达Kamailio时,使用新端口详细信息修改待处理的 INVITE 请求到旧注册端口。我可以收到Kamailio的持续请求吗? 请提出可行的解决方案。
答案 0 :(得分:0)
几乎任何可用的kamailio配置都可以做类似的事情。
您已保存到位并在致电时咨询。
但是,如果你需要真正可扩展的平台,你根本不应该将注册请求转发给星号。
如果kamailio发送邀请到错误的端口,可能意味着您在位置有两条记录。