2016-02-17 42 views
0

我有兩個電話號碼註冊到相同的SIP提供商。我希望Asterisk/PJSIP以不同於電話#2(18005551313)的方式路由電話#1(18005551212)。來電路由的被叫號碼

[sipprovider-18005551212] 
type=registration 
client_uri=sip:[email protected]:5060 

[sipprovider-18005551313] 
type=registration 
client_uri=sip:[email protected]:5060 

Asterisk在註冊期間提供的聯繫人對於兩者(使用默認擴展名')都是相同的。

Contact: <sip:[email protected]:5060>;expires=120 

我可以做任何以下的:

1)註冊時,提供比 'S' 以外的擴展?允許呼入呼叫在撥號方案中創建唯一的分機。

2)基於INVITE上的To:Header的唯一上下文路由? (其中包含稱爲唯一的電話號碼)。我曾嘗試在pjsip.conf端點塊中使用'context =',但沒有運氣;路由可以通過IP(兩個電話號碼相同)或名稱(基於From:Header)來實現。

任何幫助或指針,將不勝感激。

回答

1

你可以從我的extensions.conf

[inbound-sip] 
exten => 3215445,1,Goto(sip-in-1,s,1) 
exten => 2544221,1,Goto(sip-in-2,s,1) 

[sip-in-1] 
exten => s,1,Goto(internal-ext,6881,1) 

電話試試這個再作進一步處理的有關情況結束了,在這種情況下報警等sip-in-1sip-in-2

在你sip.confpjsip.conf你需要指定你有兩個號碼呼入背景下 - 在這種情況下context = inbound-sip

+0

試過這個沒成功;上下文inbound-sip被輸入,但帶有擴展名's'。所以通話失敗,因爲's'不是有效的擴展名。任何想法如何讓被叫電話號碼被用作分機號碼? –

+0

是的 - 剛剛用's'測試過並得到相同的結果。您希望呼叫最終到達哪裏,或者您期望什麼呼叫流程?你接到3215445的電話,並希望它在電話的第1行,當你從2544221接到第2行的電話時?我的SIP撥號計劃中只使用's',僅用於pstn線路。 – user3788685

+0

沒有電話直接撥號。一個號碼用於自動助理風格的撥號方案,另一個用於AGI()執行。所以只要我可以打不同的撥號計劃入口點,我很好。 –

1

您應該啓用SIP的調試,看看是否有來電像目的地號碼東西。

如果它沒有 - 你沒有辦法得到不存在的信息。

如果您有,您應該使用sip請求正文中的SIP_HEADER函數創建擴展名和解析號碼信息。

+0

是的,這是採取的方法。 「To:」標題。分機s處理該呼叫,而PJSIP_HEADER()用於讀取「To:」標題,並解析目標號碼。我很驚訝,PJSIP不能通過目的地號碼更好地路由。 –