星號 - 來自 SIP DID 中繼的入站呼叫“由於找不到分機而被拒絕”
我有一個帶有 DIDforSale 的 DID,它指向我的 Asterisk 伺服器。當我用我的固定電話撥打它時,我得到了 AT&T 斷開的線路錄音。Asterisk CLI 顯示錯誤消息:
[Oct 6 17:03:00] NOTICE[10563]: chan_sip.c:20163 handle_request_invite: Call from 'didforsale_1' to extension '###########' rejected because extension not found.
“來自”部分錶示它正確匹配對
sip.conf
等條目。“to”部分顯示對等方正在正確發送 DID 號碼作為目標分機。DID 號碼是對等方傳入上下文中的有效擴展(詳情如下),因此我只能假設 Asterisk 正在查看錯誤的上下文。配置
我正在使用通過 Apt 在執行 Ubuntu Server 10.04 (lucid) 的物理伺服器上安裝的 Asterisk 1.6.2.5-0ubuntu1.4。我將中繼配置為
sip.conf
每個原始 IP 一個對等點(有兩個)。這些是相關的節:[didforsale_base](!) type=peer context=from-did nat=no insecure=port,invite ; configure codecs disallow=all allow=ulaw allow=alaw allow=g729 dtmfmode=rfc2833 [didforsale_1](didforsale_base) host=AAA.AAA.AAA.AAA [didforsale_2](didforsale_base) host=BBB.BBB.BBB.BBB
對等體被配置為向上下文發送呼叫,該
from-did
上下文包含每個 DID 號碼的擴展。上下文配置extensions.ael
如下:// starting context for calls originating from DID trunks // the call is matched on the DID number and routed appropriately context from-did { // test DID from DIDforSale ########### => jump s@inbound; }
調試輸出
除了 SIP 數據包轉儲之外,使用
core set verbose 5
、core set debug 5
和sip set debug on
唯一的附加 CLI 輸出是:== Using SIP RTP CoS mark 5 Sending to AAA.AAA.AAA.AAA : 5060 (no NAT) Using INVITE request as basis request - 1510862529_23265@CCC.CCC.CCC.CCC Found peer 'didforsale_1' for '+###########' from AAA.AAA.AAA.AAA:5060 Found RTP audio format 18 Found RTP audio format 0 Found RTP audio format 101 Found audio description format G729 for ID 18 Found audio description format PCMU for ID 0 Found audio description format telephone-event for ID 101 Capabilities: us - 0x10c (ulaw|alaw|g729), peer - audio=0x104 (ulaw|g729)/video=0x0 (nothing)/text=0x0 (nothing), combined - 0x104 (ulaw|g729) Non-codec capabilities (dtmf): us - 0x1 (telephone-event), peer - 0x1 (telephone-event), combined - 0x1 (telephone-event) Peer audio RTP is at port CCC.CCC.CCC.CCC:5432
事先故障排除
我已經驗證
sip show peer didforsale_1
了同行正在使用正確的上下文。dialplan show from-did
表示上下文解析正確。如果我將它包含在我的桌面電話的預設上下文中,呼叫 DID 號碼會按預期為我提供 IVR 菜單。我閱讀了Google搜尋結果的前幾頁,查找了圍繞錯誤消息的幾組搜尋詞,但沒有發現任何有用的資訊。大多數使用 FreePBX 或類似產品的人需要幫助設置我
from-did
在 GUI 中的上下文。一些文章看起來可能與我遇到的問題相同,但沒有一個有答案。我會發布連結,但我的聲譽太低了。一旦它足夠高,我將編輯以添加它們。
我最終閱讀了錯誤消息中提到的
handle_request_invite
函式的原始碼。chan_sip.c
該函式呼叫get_destination
(在同一個文件中)來解析目標地址。如果get_destination
返回錯誤,它會產生我看到的錯誤消息。來自 DID 提供商的傳入 SIP 請求中的 URI 域
INVITE
設置為我的 PBX 的 IP 地址,而不是其域。我已allowexternaldomains
禁用sip.conf
並且我的 IP 不在域列表中,因此目標地址被拒絕。查看原始碼get_destination
似乎應該在返回錯誤之前在調試級別 1 產生錯誤消息,但由於某種原因我沒有看到它。將我的 IP 地址添加到域列表似乎已經解決了這個問題。