我正在使用Asterisk PBX呼叫軟電話,我使用thise命令:「發起SIP/100分機4004」,在撥號方案中,我必須獲得CALLERID變量,但在這種情況下,它總是空的! P:如果我從軟電話(100)呼叫分機(4004),設置了CALLERID,並且我可以使用:${CALLERID(num)}
。Asterisk:始發呼叫不設置撥號方案中的CALLERID
如何在原始情況下獲取調用者ID?
我正在使用Asterisk PBX呼叫軟電話,我使用thise命令:「發起SIP/100分機4004」,在撥號方案中,我必須獲得CALLERID變量,但在這種情況下,它總是空的! P:如果我從軟電話(100)呼叫分機(4004),設置了CALLERID,並且我可以使用:${CALLERID(num)}
。Asterisk:始發呼叫不設置撥號方案中的CALLERID
如何在原始情況下獲取調用者ID?
最終的解決方案,我現在使用:
我沒有找到另一種解決方案。
當您發起呼叫時,您自己設置來電顯示。有兩種方法可以做到這一點 - 無論是在原始應用程序中,還是在撥號方案中。下面是一個例子。
Action: Originate
Channel: local/[email protected]
Application: Echo
CallerID: Asterisk <12345>
的extensions.conf:
[outgoing]
exten => 12345,1,NoOp()
same => n,Verbose(1, Outgoing Caller ID: {$CALLERID(all)})
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
,或者你可以這樣做:
exten => 12345,1,NoOp()
same => n,Set(CALLERID(num)=54321)
same => n,Set(CALLERID(name)=Asterisk)
same => n,Verbose(1, Outgoing Caller ID: {$CALLERID(all)})
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
你應該可以看到你的來電顯示設置無論是在AMI發起或,如果您選擇在dialplan中覆蓋它,這些值。
欲瞭解更多信息,請參閱Manager Action Originate和CallerID Function。
我知道這是晚了,但如果你在Asterisk 1.8原始應用程序只是不允許它正常。
我之前曾在論壇上發過帖子,他們表示該功能將在稍後添加。所以我所做的是修改app_originate.c以允許傳遞數字和名稱。
這裏是一個我寫了去年: https://github.com/cmendes0101/asterisk-originate-callerid
一直在生產了一年多,並一直工作良好。寫爲1.8。這是一個簡單的修改,所以如果你使用不同的版本,你可以簡單地區分變化,並對你的版本做一些小的修改。
你好 感謝您的回答,但我不明白如何使用您的解決方案,因爲呼叫者ID必須是動態的(我稱他爲php腳本,它將接收擴展作爲參數)。 無論如何,我正在使用相同的腳本將擴展名寫入文件,然後使用AGI腳本從星號讀取此文件,這是我現在使用的解決方案。 exten => 4004,n,AGI(get_caller_id.php) exten => 4004,n,Set(CALLERID(num)= $ {caller_id}) 謝謝。 – 2012-04-09 09:59:49
上述示例回答了您如何在通過AMI來源創建的渠道上設置調用者ID的問題。我並沒有試圖爲你寫你的申請。如果你需要一個動態的來電顯示,只需使用dialplan變量而不是上面所示的硬編碼值,然後從你的AGI腳本中設置變量。 – 2012-04-09 23:42:44
我沒有說我正在使用AMI!我只是從另一個腳本中調用originate。 謝謝你:) – 2012-04-10 11:02:02