ตอนนี้จะลองคอนฟิก asterisk 20 (trunks) โดยใช้ PJSIP
ในการเชื่อมต่อ trunks เพื่อโทรออก / รับสายจากโครงข่ายอื่น (มือถือ - mobile, โทรศัพท์บ้าน - pstn)
จะมีอยู่ 3 รูปแบบ คือ
- asterisk register trunks เข้ากับโครงข่ายอื่น
- โครงข่ายอื่น register เข้ากับ asterisk
- ip peering, ไม่ต้อง register, asterisk และโครงข่ายอื่น authenticate กันด้วย IP address
ในตอนนี้เราจะแสดงแบบที่ 1 เท่านั้น เพราะเป็นรูปแบบที่ใช้กันเมื่อเราขอใช้ SIP trunks/SIP accounts จาก NT
หรือ providers อื่นๆ
ขั้นแรกให้ edit ไฟล์ /etc/asterisk/pjsip.conf ต่อจากบทความตอนที่แล้ว โดยเพิ่มเติมส่วนที่เป็น trunk (mytrunk)
เข้าใป จะเห็นว่าส่วนที่เป็น trunk ก็มีองค์ประกอบเช่นเดียวกับ extension คือ aors, auths, endpoints ส่วนที่เพิ่มเติม
มา คือ registration เพราะต้องไป register เข้ากับ service provider (username, password, sip server ip ที่ได้จาก
service provider คือ 02579xyxy, xxxyyyzzz, 172.30.213.92)
=============================================================
[SIMPLETRANS]
type=transport
protocol=udp
bind=0.0.0.0
;;; extensions
[200]
type=auth
username=200
password=dbog9jk16
auth_type=userpass
[200]
type=aor
max_contacts=2
qualify_frequency=60
[200]
type=endpoint
context=internal
auth=200
aors=200
disallow=all
allow=ulaw,alaw
transport=SIMPLETRANS
[300]
type=auth
username=300
password=dbog9jk16
auth_type=userpass
[300]
type=aor
max_contacts=2
qualify_frequency=60
[300]
type=endpoint
context=internal
auth=300
aors=300
disallow=all
allow=ulaw,alaw
transport=SIMPLETRANS
[400]
type=auth
username=400
password=dbog9jk16
auth_type=userpass
[400]
type=aor
max_contacts=2
qualify_frequency=60
[400]
type=endpoint
context=internal
auth=400
aors=400
disallow=all
allow=ulaw,alaw
transport=SIMPLETRANS
;;; trunk-1
[mytrunk]
type=auth
auth_type=userpass
username=02579xyxy
password=xxxyyyzzz
[mytrunk]
type=aor
qualify_frequency=60
contact=sip:172.30.213.92:5060
[mytrunk]
type=endpoint
outbound_auth=mytrunk
aors=mytrunk
disallow=all
allow=ulaw
transport=SIMPLETRANS
context=from-external
[mytrunk]
type=registration
outbound_auth=mytrunk
server_uri=sip:172.30.213.92:5060
client_uri=sip:This email address is being protected from spambots. You need JavaScript enabled to view it.:5060
endpoint=mytrunk
transport=SIMPLETRANS
line=yes
contact_user=02579xyxy
retry_interval=60
forbidden_retry_interval=600
expiration=3600
=============================================================
ลองเช็ค status ของ trunk
$ sudo asterisk -rvvvv
ubuntu*CLI> reload
ubuntu*CLI> pjsip show registrations
Status = Registered แสดงว่า asterisk register trunk เข้ากับ service provider เรียบร้อยแล้ว
ขั้นตอนต่อไปก็ edit ไฟล์ /etc/asterisk/extensions.conf เพื่อให้โทรออก - รับสายได้
=============================================================
[general]
static=yes
writeprotect=no
autofallthrough=yes
[internal]
exten => _NXX,1,Set(CDR(customerid)=12345)
exten => _NXX,n,Dial(PJSIP/${EXTEN},30)
exten => _NXX,n,Hangup()
;;; call outside
exten => _0[23456789]xxxx.,1,NoOp(call outside)
exten => _0[23456789]xxxx.,n,Dial(PJSIP/${EXTEN}@mytrunk)
exten => _0[23456789]xxxx.,n,Hangup()
;;; incoming call
[from-external]
exten => _02579xxxx,1,NoOp(incoming call)
exten => _02579xxxx,n,Dial(PJSIP/200,30)
exten => _02579xxxx,n,Hangup()
=============================================================
Save ไฟล์ reload asterisk แล้วลองโทรเข้าออกดู