ประเภทของ SIP Account ซึ่ง Asterisk 1.6 รู้จักจะเหลือแค่ 2 แบบ (type) เท่านั้นนะครับ คือ "friend" และ "peer" โดยที่ type=friend หมายถึงอุปกรณ์ที่สามารถโทรออก (Outbound) และรับสายได้ (Incoming) ซึ่ง Asterisk จะรู้ว่าอุปกรณ์นี้เป็น "friend" โดยดูจากเฮดเดอร์ "From:username" ตอนที่อุปกรณ์ส่งคอลไปหา Asterisk นะครับ ถ้าหากหลังเครื่องหมาย : เป็น username หล่ะก็แสดงว่าเป็น "friend" เดิมทีใช้คำว่า "user" แทน "friend" นะครับ อุปกรณ์ใดๆก็ตามที่รีจิสเตอร์กับ Asterisk จะถือว่าเป็น "friend" ครับ
ในขณะที่ type=peer ก็โทรออก (Outgoing) และรับสายเข้า (Incoming) ได้เช่นเดียวกัน แต่ตอนที่ Asterisk รับคอลเข้ามามันจะมองหา IP/Port ว่าตรงกับที่คอนฟิกไว้หรือไม่ ไม่ใช่มองหา username เหมือนกับกรณี type=friend ปกติตอนที่เราสร้าง SIP Trunk เราจะใช้ type=peer ครับ
วิธีที่ SIP Account จะเข้ามาใช้งาน Asterisk จะมีอยู่ 2 รูปแบบครับ ได้แก่ แบบที่ต้องรีสเตอร์และแบบที่ไม่ต้องรีจิสเตอร์ แบบที่ไม่ต้องรีจิสเตอร์เรามักเรียกว่า SIP Trunk นั่นเองครับ แบบแรกที่ต้องรีจิสเตอร์ ก็ต้องรีจิสเตอร์ก่อนจึงจะยอมให้โทร แต่แบบหลัง Asterisk จะเช็คแค่ IP/Port ว่ามีคอนฟิกไว้แล้วหรือไม่
บทความนี้ผมจะแนะนำวิธีการสร้าง SIP Extensions หรือ SIP Accounts สำหรับเอาไปคอนฟิกในตัว SIP Devices เช่น IP Phone, Softphone, VoIP Gateway, SIP WiFi Phone, SIP ATA หรือ Asterisk SIP Server ตัวอื่น ให้มารีจิสเตอร์กับ Asterisk SIP Server ของเราครับ ว่าต้องคอนฟิกไว้ที่ไหนและมีออปชั่นอะไรให้เลือกใช้บ้าง
เราต้องสร้าง SIP Accounts ไว้ในไฟล์ "sip.conf" นะครับ แต่จริงๆแล้วเราคอนฟิกไว้ในไฟล์อื่นก็ได้ แต่อย่าลืม include เข้าไปไว้ในไฟล์ sip.conf ด้วย ตัวอย่างที่จะทำให้ดูต่อไป
นี้นะครับ ผมจะสร้างไว้ในไฟล์ "sip_clients.conf" โดยผมจะสร้าง Extension 100
1. ไฟล์ sip.conf
- โค้ด: เลือกทั้งหมด
[general]
#include sip_clients.conf
2. ไฟล์ sip_clients.conf
- โค้ด: เลือกทั้งหมด
[100]
type=friend
secret=password
qualify=yes
port=5060
nat=yes
mailbox=100@voip4share
host=dynamic
dtmfmode=rfc2833
disallow=all
allow=g723
allow=g729
allow=alaw
context=from-internal
canreinvite=no
callgroup=1
callerid=khun nui <100>
call-limit=1
registertrying=yes
3. ออปชั่นทั้งหมดที่คอนฟิกได้และความหมาย
ออปชั่นที่ผมใส่ตอนสร้าง SIP Account มันไม่ได้มีแค่นั้นนะครับ ยังมีอีกหลายออปชั่นให้เราเอาไปใช้ อันนี้เป็นออปชั่นที่เราใช้ได้สำหรับ Asterisk 1.6 ครับ
callingpres = number|descriptive_text
เซ็ต Caller ID ของคอลที่รับจาก SIP Account นี้ให้เป็นค่าใหม่ ค่า descriptive_text ได้แก่ allowed_not_screened, allowed_passed_screen, allow_failed_screen, allowed, prohib_not_screened, prohib_passed_screen,prohib_failed_screen,prohib และ unavailable ดีฟอลท์คือ
deny = ip_address
ใช้กับ type=peer ซึ่ง Asterisk จะไม่ยอมรับ Incoming Call มาจาก IP นี้ ปกติจะใส่ 0.0.0.0/0.0.0.0 ซึ่งมีหมายถึงทุกไอพี ใส่ออปชั่น deny ก่อนออปชั่น permit
permit = ip_address
ใช้กับ type=peer ซึ่ง Asterisk จะยอมรับคอลที่โทรเข้ามาจาก IP Address นี้ใส่เป็น IP Address หรือเป็น Subnet ก็ได้ เช่น 192.168.0.25 หรือ 192.168.1.0/255.255.255.0 มีบรรทัด permit ได้หลายบรรทัด ให้ใส่ IP/Subnet ละบรรทัด
secret = password
เป็นพาสเวอร์ดที่ SIP Account ต้องใช้เพื่อรีจิสเตอร์เข้ามา
md5secret = MD5-Hash of "<user>:==SIP_realm==:<secret>"
เป็นพาสเวอร์ดของ SIP Client สามารถใช้แทน secret ได้ ค่าดีฟอลท์สำหรับการ authen กับ Asterisk ที่ไม่ได้ระบุ SIP realm คือ "<user>:asterisk:<secret>"
dtmfmode = inband|rfc2833|auto|info
เซ็ตโหมด DTMF ที่ Asterisk จะใช้รับส่งกับ SIP Client นี้ ควรเซ็ตเป็น rfc2833 การเซ็ตแบบ inband จะทำให้กิน CPU สูงมากและใช้ได้กับ Codec=alaw, ulaw แบบ auto ก็จะพยายามเลือกใช้ rfc2833 ก่อน ถ้า Client ไม่รองรับก็จะพยายามใช้ inband และแบบ info ก็จะใช้ SIP-INFO
directmedia = yes|update|nonat
ดีฟอลท์คือ yes ซึ่ง Asterisk พยายามจะ redirect มีเดีย (สัญญาณเสียง) ให้ต้นทางคุยกับปลายทางโดยตรงโดยไม่ผ่านตัวมันเพื่อลดโหลดที่จะเกิดขึ้น แต่ถ้าปลายทางอยู่หลัง NAT (ใช้งานผ่าน ADSL Router) หรือเราต้องการให้เสียงผ่าน Asterisk ด้วยให้เซ็ตเป็น no ปกติจะเซ็ตค่าไว้เป็น no
ส่วน nonat ยอมให้เส้นทาง media path redirection (reinvite) แต่ก็เฉพาะเมื่อมันรู้ว่า Client ไม่ได้อยู่หลัง NAT เท่านั้น โดยมันสามารถดีเท็คได้ว่า Client อยู่หลัง NAT หรือไม่โดยดูจาก IP Address ต้นทางของมีเดีย
nat = yes|no|never|route
Asterisk สามารถวิเคราะห์ SIP Message หรือ Media Session (SDP) ที่เข้ามาหามัน ว่าส่งมาจากอุปกรณ์ NAT หรือไม่ แต่จะสนใจหรือไม่ก็ขึ้นอยู่กับออปชั่น "nat=" ซึ่ง Asterisk อาจจะแทนค่า IP/Port ที่อยู่ใน SIP/SDP Message ด้วยค่า IP และ Port ที่มันเห็นว่าเหมาะสม อย่างไรก็ตามคุณสมบัตินี้จะเป็นประโยชน์ถ้าทราฟิกจากภายนอกสามารถมาถึง Asterisk ได้
เมื่อเซ็ตค่าเป็น "no" (ค่าดีฟอลท์) Asterisk จะใช้ NAT Mode ก็ต่อเมื่อเป็นไปตาม RFC3581 (;rport) เมื่อเซ็ตค่าเป็น "yes" มันจะไม่สนใจ info และจะสมมติว่าเป็น NAT ถ้าเซ็ตเป็น "never" มันจะไม่พยายามใช้ NAT mode หรือให้รองรับ RFC3851 ถ้าเซ็ตเป็น "route" มันจะสมมติว่าเป็น NAT ไม่ส่ง rport (เวอร์คกับอุปกรณ์บางยี่ห้อ)
callgroup = <num1,num2-num3>
มีค่าตั้งแต่ 0 - 63 กำหนดว่า SIP Client ไหนบ้างที่จะมีสิทธิ์ดึงสาย (Pick Up) สำหรับ Call ไหนบ้าง
pickupgroup = <group_number>
ตั้ง group เบอร์ Extension ที่จะให้ดึงสายมารับแทนกันได้ โดยกดปุ่ม *8
language = <language>
เซ็ตภาษาที่ Asterisk จะใช้โต้ตอบกับ SIP Client นี้ ปกติถ้าใน Dialplan มีเรียกใช้ Playback(), Background() ก็จะมีเสียงให้ได้ยิน เราต้องมีไฟล์เสียงภาษานั้นอยู่ในโฟลเดอร์ย่อยๆใน /var/lib/asterisk/sounds ด้วย เช่นถ้าอยากให้เสียงสำหรับ SIP Client นี้เป็นภาษาไทย ต้องเซ็ต language = th แล้วเอาไฟล์เสียงภาษาไทยไปไว้ที่ไดเร็คตอรี่ /var/lib/asterisk/sounds/th
disallow = all
ไม่ยอมรับ Codec ใดๆจาก SIP Client ให้เซ็ตเป็น all เสมอ และให้บรรทัดนี้อยู่ก่อนบรรทัด allow
allow = <codec1_name, codec2_name, codec3_name>
ยอมให้ SIP Account นี้ใช้ Codec อะไรได้บ้าง Codec แรกๆจะมี Preference สูงกว่า Codec ลำดับถัดมา หมายความว่า เวลา Asterisk คุยกับ SIP Account นี้มันจะพยายามคุยด้วย Codec ลำดับแรกๆก่อน ให้ใส่บรรทัด allow ไว้ทีหลังบรรทัด disallow
canreinvite = yes|no|update|nonat
ดีฟอลท์คือ yes เช็คว่า SIP Client นี้สามารถรองรับ SIP re-invite ได้หรือไม่
insecure = very|yes|no|invite|port
ระบุว่าจะรับมือกับคอลที่มาจาก peer ยังไง ดีฟอลท์คือ no ซึ่ง Asterisk จะ Authenticate กับทุกๆคอลที่ส่งเข้ามาหาตัวมัน โดยการส่ง Proxy Authentication Required กลับไปหลังจากได้รับ Invite
trustrpid = yes|no
บอก Asterisk ว่าควรจะเชื่อถือค่า Remote-Party-ID ที่อยู่ใน SIP Header หรือไม่
progressinband = never|no|yes
Asterisk จะสร้าง in-band ringing เสมอเมื่อเซ็ตเป็น yes ดีฟอลท์คือ never
promiscredir = yes|no
ถ้าเซ็ตเป็น yes จะทำให้ Asterisk รองรับ 302 Redirect ซึ่งจะ redirect คอลไปยังเบอร์ Extension ที่ปรากฏอยู่ในฟิลด์ Contact แทนที่จะเป็น Extension ปลายทาง ดีฟอลท์คือ no
useclientcode = yes|no
ถ้าเซ็ตเป็น yes เวลา Asterisk จะไรท์ข้อมูลการโทรลง CDR มันจะเปลี่ยน Call Originator ไปเป็นค่าตามที่ระบุไว้ใน X-ClientCode ของ SIP Header ดีฟอลท์คือ no
accountcode = <string>
ใช้ทำ Billing โดย <string> อาจจะเป็นรหัสพินโค๊ด หรือยูสเซอร์เนม ซึ่ง Asterisk จะใช้แสดงตัวต่อโปรแกรม Billing เมื่อโทรจาก SIP Client นี้ และโปรแกรมก็จะรู้ว่าโทรมาจากใคร จะได้คิดค่าโทรได้ถูกคน
callerid = <string>
เป็น Caller ID ที่จะใช้แทน SIP Client เมื่อ Asterisk ไม่รู้ว่าจะใช้อะไรเป็น Caller ID ดี ดีฟอลท์คือคำว่า asterisk
amaflags = default|omit|billing|documentary
เป็น category ที่จะบันทึกลงใน CDR ใช้เพื่อจุดประสงค์การทำ billing
busylevel = <number>
จำนวนคอลที่จะยอมให้เกิดขึ้นพร้อมๆกันจนกระทั่ง user/peer อยู่ในสถานะ busy อาจต้องเซ็ต call-limit ร่วมด้วย
call-limit = <number>
จำนวนคอลพร้อมๆกันที่ Asterisk จะยอมให้โทรได้จาก SIP Account นี้
allowsubscribe = yes|no
ยอมรับหรือไม่ยอมรับ Subscribe Message ที่ SIP Account นี้ส่งมา
setvar = variable = value
เซ็ต Channel Variable สำหรับทุกคอลที่โทรจาก SIP Client นี้
context = <context_name>
ถ้า type = user เป็นชื่อ Context สำหรับ inbound call ของ SIP Client นี้ แต่ถ้า type=peer เป็นชื่อ Context สำหรับ Outbound call จาก SIP Client นี้ แต่ถ้า type=friend จะเป็น Context สำหรับ Inbound และ Outbound call สำหรับ SIP client นี้
ถ้าไม่มี type=user แม๊ตซ์เมื่อมี inbound call จากนั้น type=peer หรือ type=friend จะแม๊ตซ์ถ้า hostname หรือ ip address ตรงกับบรรทัด host=
allowtransfer = yes|no
เซ็ตเป็น yes จะทำให้ client นี้โอนสายได้ ดีฟอล์คือ yes
callcounter = yes|no
อินาเบิล call counter สำหรับ SIP Client นี้
allowoverlap = yes|no
เซ็ตเป็น yes จะทำให้ client นี้รองรับการโทรแบบ overlap dialing ได้ ดีฟอลท์คือ yes
videosupport = yes|no
ให้ Client นี้รองรับ Video ได้ด้วย
maxcallbitrate = <birtate>
กำหนดแบนวิดธ์หรือความเร็วสูงสุดที่จะยอมสำหรับ Video หน่วย kbps
mailbox = mailbox_number@voicemail_context
ตั้งหมายเลขเมล์บ๊อกซ์พร้อม Context สำหรับ SIP Account เมื่อมีข้อความฝากไว้ Asterisk จะส่ง Notify ไปแจ้งให้ Client รู้
fromdomain = <domain>
เซ็ตค่าดีฟอลท์ของ From:domain ซึ่งอยู่ใน SIP message เมื่อส่งคอลไปยัง peer แต่จะมีผลก็ต่อเมื่อเซ็ต type=peer
fromuser = <from_id>
ระบุว่าจะให้ Asterisk ใส่ค่าอะไรเข้าไปใน "from" ใน SIP Message แทนที่จะใช้ค่า ${CALLERID(number)} ค่านี้จะมีผลแทนค่า Caller ID ของ SIP Account นี้ Asterisk จะใช้ก็ต่อเมื่อส่งไปหา SIP Server อื่น ดังนั้นจะมีผลกับ user=peer
host = dynamic|hostname|ip
เป็น IP address หรือ hostname ที่ Asterisk จะใช้ติดต่อกับ SIP Client นี้ เซ็ต dynamic ถ้าต้องการให้ SIP client มารีจิสเตอร์เพื่ออัพเดท IP ของตัวเอง
port = <portnumber>
เป็น SIP พอร์ตดีฟอลท์ของ Client เช่น 5060 ไม่ใช่พอร์ตที่ Asterisk จะรอรับคอนเน็คชั่น แต่มันเป็นพอร์ตที่ Asterisk คาดว่า Client จะใช้ส่งเข้ามา ที่จริงเรียก Local SIP port ของ Client จะดีกว่า เวลา Asterisk ส่ง Message ไปหา Client มันจะส่งไปที่ Port นี้ แต่พอร์ตนี้ก็เปลี่ยนแปลงแบบไดนามิคได้ตามที่ Client รีจิสเตอร์เข้ามา
qualify = yes|no|milliseconds
Asteris จะส่ง Message ไปเช็ค Client ว่ายังออนไลน์อยู่หรือไม่ก่อนที่มันจะส่งคอลไป เซ็ตเป็น yes จะส่งทุก 60 วินาที ถ้าเซ็ตเป็นตัวเลขก็จะส่งไปทุกๆช่วงตามที่ใส่เข้าไป อย่าลืมว่าหน่วยเป็น milliseconds ดีฟอลท์คือ no
defaultip = ip_address
ไอพีแอดเดรสที่ Asterisk จะใช้อ้างอิงถึง SIP Account นี้ จนกว่าจะมีการรีจิสเตอร์จริงๆ
defaultuser = user
เป็น Username ที่จะใช้เมื่อโทรหา SIP Account นี้ ปกติเราไม่ได้ใช้ออปชั่นนี้
rtptimeout = <seconds>
Asterisk จะดิสคอนเน็คคอลถ้าไม่มี RTP หรือ RTCP บนแชนแนล แต่ไม่รวมกรณีที่เรา Hold สายไว้ ช่วยป้องกันสายค้างได้ ซึ่งมักจะเกิดขึ้นเมื่อเน็ตเวอร์คล่ม อุปกรณ์แฮ้งค์ หรือสายโทรศัพท์ถูกดึงออกในขณะที่กำลังโทร ดีฟอทล์คือ 0 (ไม่กำหนด RTP timeout)
rtpholdtimeout = <seconds>
Asterisk จะดิสคอนเน็คคอลถ้าเรา Hold สายไว้นานว่าเวลาที่กำหนด ดีฟอลท์คือ 0 โฮลไว้นานแค่ไหนก็ได้ แต่บางทีโฮลแล้วสายค้าง ค่านี้ต้องมากกว่า rtptimeout
rtpkeepalive = <seconds>
Asterisk จะส่ง Keepalive เข้าไปใน RTP Stream ขณะที่กำลังคุยกับ Client นี้ เพื่อให้ NAT device เปิดคอนเน็คชั่นค้างไว้ ดีฟอลท์คือ 0 (ไม่ใช้งาน)
sendrpid = yes|no
Asterisk จะส่ง Remote-Party-ID รวมอยู่ใน SIP header ด้วยถ้าเซ็ตเป็น yes ดีฟอลท์คือ no
usereqphone = yes|no
จะให้ Asterisk เพิ่ม ";user=phone" เข้าไปใน URI หรือไม่ ดีฟอลท์คือ no
outboundproxy = <ip|dns srv name>
เซ็ตค่า SRV name, hostname หรือ IP addres ของ Oubound SIP proxy
callbackextension = <extension>
ใช้เมื่อ type=peer และเอา Asterisk ไปรีจิสเจอร์กับ SIP Server อื่น ซึ่งจะบอก SIP Server ตัวนั้นว่าเวลาจะโทรมาหา Asterisk ให้โทรมาที่เบอร์ Extension นี้
registertrying = yes|no
เมื่อเซ็ตเป็น yes เวลา client นี้ส่ง Register มา Asterisk จะตอบกลับไปว่า "100 Trying"
t1min = <milliseconds>
ค่าเวลา Roundtrip ต่ำสุดสำหรับ message ที่ส่งไปยังโฮสต์ที่มอนิเตอร์อยู่ ดีฟอลท์คือ 100 ms
timert1 = <milliseconds>
ตั้งค่าเวลา T1 ดีฟอลท์คือ 500 ms หรือวัดจากค่า Roundtrip Time ระหว่าง Asterisk กับ Client นี้ แต่ว่าต้องใช้ qualify=yes ด้วยเพื่อให้ Asterisk เห็นเวลา Roundtrip
timerb = <milliseconds>
ตั้วเวลา call setup timer สำหรับ client นี้ ซึ่งถ้า Asterisk ส่งคอลไปยัง client นี้แล้วแต่ไม่ได้รับตอบสนองภายในเวลา TimerB คอลจะถูกยกเลิก ดีฟอลท์คือ 64*timert1
session-timers = accept|originate|refuse
กำหนดโหมดการทำงานของ session-timer ระหว่าง Asterisk กับ Client นี้ ดีฟอลท์คือ accept
โหมด accept จะรับ request จาก client ซึ่ง client ขอเช็ค session-timer โดยการส่ง INVITE ที่ภายในมี "Supported:timer" มาด้วย หรือโดยการตอบสนองต่อ INVITE จาก Asterisk ด้วย 200 OK ที่ภายในมีค่า "Session-Expires:" อยู่ โหมดนี้ Asterisk จะไม่ได้ร้องขอ session-timer จาก client
โหมด originate โหมดนี้ Asterisk จะร้องขอ client ให้ทำการเปิดการใช้งาน session-timer เพื่อให้ client นั้นรองรับ request จาก client อื่น และเพื่อป้องกันสายค้างซึ่งเกิดขึ้นได้ มื่อเน็ตเวอร์คล่มหรือ client แฮ้งค์ Asterisk จะส่ง re-INVITE ซ้ำราวกับว่า client ไม่รองรับ session-timer
โหมด refuse โหมดนี้ Asterisk จะทำตัวราวกับว่าไม่รองรับ session-timer ไม่ว่าจะเป็น inbound หรือ outbound ก็ตาม ถ้า client ส่ง request มาพร้อมกับ session-timer มันก็จะไม่สนใจ request นั้นมันเขียนไว้ว่า Require:session-timer สำหรับ inbound หรือ outbound นอกนั้น Asterisk จะปฏิเสธ INVITE โดยการส่ง 420 Bad Extension กลับไป
session-expires = <seconds>
ช่วงเวลาสูงสุดก่อนที่จะรีเฟรชเซสชั่นอีกครั้ง มีหน่วยเป็นวินาที ดีฟอลท์คือ 1800 วินาที
session-minse = <seconds>
ช่วงเวลาต่ำสุดก่อนที่จะรีเฟรชเซสชั่นอีกครั้ง มีหน่วยเป็นวินาที ดีฟอลท์คือ 90 วินาที
session-refresher = uac|uas
กำหนดว่าใครจะเป็นคนทำการรีเฟรชเซสชั่นระหว่าง UAC หรือ UAS ดีฟอลท์คือ UAS
regexten = <extension>
เมื่อ Client นี้รีจิสเตอร์ ให้สร้างเบอร์ Extension ตามที่ระบุไว้
qualifyfreq = <seconds>
Asterisk จะเช็คสถานะของ Client นี้ทุกๆช่วงเวลาที่ระบุ มีหน่วยเป็นวินาที ช่วยให้ NAT device ยังคงเปิดพอร์ตให้คอนเน็คเข้าไปยัง Client ค้างไว้ตลอดเวลา ถ้า NAT device เปิดพอร์ตได้ไม่นานก็ให้เซ็ตค่า qualify ให้น้อยลงอีก
constantssrc = yes|no
เมื่อเซ็ตเป็น yes จะทำให้ Asterisk ไม่เปลี่ยน RTP SSRC เมื่อ Media stream เปลี่ยนแปลง
transport = udp,tcp
เซ็ตค่าดีฟอลท์ Transport Type ใส่คู่กันได้ เช่น udp,tcp ซึ่งตอนส่งออกจะใช้ udp แต่ตอนรับเข้าได้ทั้ง udp และ tcp ดีฟอลท์ใช้เฉพาะตอนส่ง message ออกไปจนกระทั่ง register ซึ่งในขณะขั้นตอนการ Register ของ Client ชนิดของ Transport Type อาจจะเปลี่ยนแปลงไปเป็นอย่างอื่นได้แล้วแต่ว่า Client รองรับแบบไหน
t38pt_udptl=yes|yes,fec|yes,redundancy|yes,none
อินาเบิลและเลือกโหมดการทำงานของ T.38 Fax ที่ Asterisk จะใช้กับ client นี้ ดีฟอลท์คือปิด T.38 Fax
t38pt_usertpsource = yes|no
เซ็ตเป็น yes ใช้ Source IP adress ของ RTP เป็น Destination IP address สำหรับแพ็กเก็ต UDPTL ถ้ามีการอินาเบิล NAT ถ้าได้รับ single RTP packet จะทำให้ Asterisk รู้ค่า External IP Address ของ client ถ้าด้าน client มีการเซ็ต port forwarding ไว้ จากนั้น UDPTL ก็จะไหลไปยัง client ได้
ignoresdpversion = yes|no
ดีฟอลท์ Asterisk จะให้ความสนใจกับ Session Version Number ที่อยู่ใน SDP packets และจะแก้ไขก็ต่อเมื่อหมายเลขเวอร์ชั่นเปลี่ยนไป ออปชั่นนี้จะบังคับให้ Asterisk ไม่สนใจ SDP Seesion Version Number และคิดว่าเป็น SDP data ใหม่ ออปชั่นนี้ต้องการสำหรับอุปกรณ์ที่ส่ง SDP packets ที่ไม่เป็นมาตรฐาน (เช่น Microsoft OCS) ดีฟอลท์คือ no
subscribecontext = <context>
Asterisk จะยอมรับ SUBSCRIBE จาก Client ก็ต่อเมื่อรายชื่อเบอร์ Extension ของ Client นี้อยู่ใน Context ที่ระบุ
rfc2833compensate = yes|no
ถ้า Client นี้เป็น Asterisk เวอร์ชั่น Pre-1.4 ต้องเซ็ตออปชั่นนี้ให้เป็น yes ไม่เช่นนั้นจะมีปัญหาการรับส่ง DTMF
template = <name>
ตั้งชื่อ template แล้วเอาพารามิเตอร์ที่ต้องใช้ร่วมกันมาอยู่ด้วยกัน
remotesecret = <password>
พาสเวอร์ดที่ Asterisk จะส่งไปยัง Client สำหรับใช้กับบางบริการ ใช้กับการโทรออกไปยัง Client นี้
contactdeny = <ip/host>
ใส่ IP/Subnet ที่จะให้ Asterisk ไม่ยอมรับการ Register มาจาก IP/Subnet นี้ ใส่เป็น 0.0.0.0/0.0.0.0 และต้องใช้ร่วมกับ contactpermit ด้วย
contactpermit = <ip/host>
จะยอมรับการ Register เฉพาะเมื่อในฟิลด์ Contact มีไอพีหรือโฮสต์ตรงกับที่กำหนดไว้เท่านั้น เช่น 192.168.0.0/255.255.0.0