DID號碼設定

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 號碼呢? 因為我們在個人分機那兒已經設定過了。
分類: voip。這篇內容的永久連結

在〈DID號碼設定〉中有 4 則留言

  1. chaoyi表示:

    你好,我有申請亞太電信測試號碼是用IP驗證,但設定好後只能撥出卻無法接聽,可以請問亞太電信sip trunk該怎麼設定嗎?

  2. Rex Lai表示:

    想請教一個問題,asterisk底層可以測試撥打分機號碼或是測試外線響鈴嗎?
    ps: sip show peers有建立

發佈回覆給「chaoyi」的留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *