DID= (Direct Inward Dialing)直接撥入
DID–直接撥入(在歐洲叫DDI)
簡言之, DID號碼就是直播專線,使用DID,需要申請一條ISDN或數位化線路,而公司這端則需要具有DID功能的設備,其中包括BRI、E1 或T1卡或閘道。
情境簡介:
當我們向電話公司申請了10條電話線路,這10條線路是count current的數字,也就是同一時間能撥打只有10線,第11個人想要撥進或撥出就會出現忙線的狀況,那他就得等一等了,等有人掛斷之後他才能再撥。
業務同仁反應一個問題,每次撥電話給客戶時都是用公司的線路撥出去,顯示在客戶的手機上面都是公司的代表號,客戶回撥時都只能聽到公司的IVR,不知是誰找他,每次都要總機小姐問個老半天才知是誰找,有沒有好的解決方法呢?
最好的解決方法就是給每一位業務同仁一條專線,撥出去時都顯示他自己那條專線的號碼。
但申請一條專線給每位業務的話,又好象不太實際,除非他話務量真的很大,不然的話,一條專線總是空在那裡,沒能充份利用,每月的月租費(300元左右)又不便宜,怎辦?
DID號碼就是個解決方案,DID號碼實際上是個虛擬門號,你可以申請50個DID號碼,而只用10條count current的線路。你可以向中華電信、亞太電信….一般的電信業者都有提供這樣的服務。
亞太電信的DID門號,一次就要申請10組,每一門號月租費要90元,所以一申請,每個月最少就要付900元
它的使用概念就是將某一個DID號碼設定在分機上面的Caller ID,讓此分機以此Caller ID 撥出去即可。前提是你要跟那些電信業者使用 sip 串接,能夠直接送 sip 訊號給他們才行。
好了,底下就開始介紹 asterisk 怎樣設定 DID 號碼給各分機使用。
當我們向電信業者申請了did號碼之後,他會給我們號碼長的象這樣
22650001
22650002
22650003
22650004
22650005
….
….
….
22650030
通常是連號的
sip.conf 裡的設定
[in](!)
type=friend
context=callout
host=dynamic
dtmfmode=rfc2833
canreinvite=yes
directmedia=yes
directrtpsetup=yes
qualify=yes
[4001](in)
secret=4001
cid_number = 22650001
[4002](in)
secret=4002
cid_number = 22650002
[4003](in)
secret=4003
cid_number = 22650003
extension.conf
[callin]
exten => 22650001,1,Dial(sip/4001,30,m)
exten => 22650002,1,Dial(sip/4002,30,m)
;既設了did號碼,那麼就要指定別人回撥時要送到哪個分機去
[callout]
exten => _XX.,1,Noop(${CALLERID(num):0:4}) ;說明:0:4 是指從第0位數之後開始,只取4個數字
same => n,GotoIf($["${CALLERID(num):0:4}" = "2265" ]?did)
;檢查caller ID 是否已有設定,前4個數字若為 2265 則直接跳往 did 這個priority
same => n,Set(CALLERID(num)=22650000) ;設定公司代表號
same => n,Dial(SIP/中華電信/${EXTEN},35,XxWw)
same => n(did),Dial(SIP/callout1/did${EXTEN},35,XxWw)
;轉到另一台專撥外線的機器callout1上去
;底下是另一台專撥外線的機器上callout1的設定
[callout]
exten => _didXXX.,1,Noop
same => n,Dial(SIP/亞太電信/${EXTEN:3},60,XW) ;取掉前3個字,did的字樣
;;;;底下皆為test dial plan
exten => 7798,1,Noop(${CALLERID(num)})
same => n,Noop(${CALLERID(num):1:5}) ;說明:1:5 從第1位數之後開始,保留5個數字,其餘全刪掉
same => n,GotoIf($["${CALLERID(num):1:5}" = "2650" ]?ok)
same => n,hangup
same => n(ok),playback(beep)
說明:平常一般同仁是用公司的代表號,中華電信的線路撥出去的。一但設定了did號碼的話,就會走亞太電信的線路出去,並帶自己的Caller ID號碼出去
上面的範例是檢查 Caller ID 的前4碼是否為2265,若是則前綴帶did撥出去
範例二
底下範例則是要檢查另一個地方 CallerID name,這個設定範例比上一個精簡,也比較不容易出錯
sip.conf 裡的設定
[in](!)
type=friend
context=callout
host=dynamic
dtmfmode=rfc2833
canreinvite=yes
directmedia=yes
directrtpsetup=yes
qualify=yes
[4001](in)
secret=4001
callerid= "didUser"
cid_number = 22650001
;在個人分機上即設定好did號碼,並將 CallerID name設為 "didUser"
[4002](in)
secret=4002
callerid= "didUser"
cid_number = 22650002
說明:你可以在asterisk終端機畫面下這樣的指令 sip show peer 4001 就可以看到它顯示的caller id會是這樣的 Callerid : “didUser” <22650001>
extension.conf
[callin]
exten => 22650001,1,Dial(sip/4001,30,m)
exten => 22650002,1,Dial(sip/4002,30,m)
;既設了did號碼,那麼就要指定別人回撥時要送到哪個分機去
[callout]
exten => _XX.,1,Noop(${CALLERID(name)}) ;檢查CallerIDname是否為 didUser
same => n,GotoIf($["${CALLERID(name)}" = "didUser" ]?did)
;檢查CALLERID(name)是否設為 didUser,若有 則直接跳往 did 這個priority
same => n,Set(CALLERID(num)=22650000) ;設定公司代表號
same => n,Dial(SIP/中華電信/${EXTEN},35,XxWw)
same => n(did),Dial(SIP/亞太電信/${EXTEN},35,XxWw)
;說明:若分機已有設定didUser的話,則會略過 "設定公司代表號" 這個步驟,直接撥外線了,為何不需要設caller id 號碼呢? 因為我們在個人分機那兒已經設定過了。
你好,我有申請亞太電信測試號碼是用IP驗證,但設定好後只能撥出卻無法接聽,可以請問亞太電信sip trunk該怎麼設定嗎?
給你參考
[亞太電信]
type=peer
context=pstn
host=對方的IP
dtmfmode=rfc2833
qualify=yes
canreinvite=yes
disallow=all
allow = ulaw,alaw,g729
這頁給你參考
http://hccoding.blogspot.tw/2018/01/sip-trunk.html
想請教一個問題,asterisk底層可以測試撥打分機號碼或是測試外線響鈴嗎?
ps: sip show peers有建立
若你說的是從 asterisk console 端去撥打的動作,那我也不會