2015-09-11 83 views
0

我正在使用Kamailio代理版本4.0.4。 我有兩個用相同的URI註冊的UAC(Bob1,Bob2)。 然後第三個UAC(Alice)發送一個INVITE給代理。 兩個UAC都收到此邀請,並且都接受該呼叫。 Kamailio現在取消第二個(Bob2)並將第一個(Bob1)的200 Ok轉發給Alice。分叉邀請後的Kamailio併發呼叫

但是,我需要從Bob1和Bob2獲得兩個200 Ok的響應給Alice。 愛麗絲然後想要同時與他們交談。

這可能與kamailio? 如何防止第二個200 Ok取消?

回答

2

當通過有狀態模式(通過tm模塊)進行路由時,當收到200ok時,Kamailio將取消所有其他活動分支。即使你會認爲兩個200ok同時產生,很可能一個接一個地被處理,所以一個分支被取消。

你應該能夠通過無狀態路由實現你想要的。使用forward()函數,而不是使用tm模塊的函數發出請求。邏輯應該是這樣:

  • 組R-URI($ RU)到第一目的地
  • 向前()
  • 組R-URI($ RU)到第二目的地
  • 向前()

如果目標是通過查找(「位置」)設置的,則第一個進入r-uri,您可以執行forward()。第二,你必須通過$ branch(...)變量獲得它的細節,並設置r-uri,然後設置與下一跳相關的其他屬性。

+0

感謝您的回答。你能舉一個小例子說明我該如何使用它?我不是真的進入kamailio語法。那太好了! –