วิธีการทำให้ Asterisk รองรับ SUBSCRIBE Message

Asterisk Opensource IP Pbx

วิธีการทำให้ Asterisk รองรับ SUBSCRIBE Message

โพสต์โดย voip4share » 19 มี.ค. 2010 09:04

ท่านที่เคยใช้โปรแกรม Ngrep หรือ WireShark มอนิเตอร์ดู SIP Messages ที่โต้ตอบกันระว่า SIP Server และ SIP Client น่าจะเคยเห็น SUBSCRIBE Message บ้างนะครับ ซึ่ง SUBSCRIBER เป็น SIP message แบบหนึ่งซึ่ง SIP device ไม่ว่าจะเป็น Client หรือ Server ก็ตาม ส่งไปหา SIP Device อื่นเพื่อบอกกว่า "ถ้ามีการเปลี่ยนแปลงสถานะ กรุณาแจ้งให้ผมทราบด้วย" สถานะในที่นี้ก็ได้แก่ วางสาย ยกหู สายไม่ว่าง อะไรทำนองนี้หน่ะครับ เครื่องไอพีโฟนที่ปุ่มเยอะๆเหมือนกับเครื่องคีย์ของโอเปอร์เรเตอร์ (ผมเคยเห็นยี่ห้อ Grandstream) ที่มันมีปุ่มแสดงสถานะของเบอร์ Extensions ได้ว่าเบอร์ไหนใช้สายอยู่หรือไม่ได้ใช้สาย มันก็ใช้คอนเซ็ปต์แบบนี้แหล่ะครับ โดยมันอาจจะส่ง SUBSCRIBE request มาที่ SIP Server (IP PBX, Asterisk) หรือที่เบอร์ Extension โดยตรง เพื่อสอบถามสถานะของเบอร์ Extension แต่ละเบอร์ และถ้าเบอร์เหล่านั้นมีการเปลี่ยนสถานะมันก็จะส่งกลับไปบอก

สำหรับ Asterisk นะครับ มันรองรับ SUBSCRIBE ก็จริงแต่คอนฟิกดีฟอลท์ไม่ได้เปิดใช้งานไว้ (เป็นเพราะว่า Asterisk ไม่รู้ว่าเราจะคอนฟิกใช้เบอร์ Extensions เบอร์อะไรบ้างหน่ะครับ) ดังนั้นเวลามี SIP Client ส่ง SUBSCRIBE มา Asterisk จะตอบกลับไปว่า 404 Not Found อย่างนี้ครับ

192.168.4.10 -> 192.168.4.55 SIP Request: SUBSCRIBE sip:100@192.168.4.55;transport=UDP
192.168.4.55 -> 192.168.4.10 SIP Status: 404 Not Found

ถ้าต้องการให้ Asterisk รองรับ SUBSCRIBE จาก Client ให้ทำดังนี้ครับ

1. เพิ่มบรรทัดต่อไปนี้ในไฟล์ sip.conf
เอาไว้ภายใต้ [general] นะครับ
โค้ด: เลือกทั้งหมด
[general]
allowsubscribe=yes
subscribecontext=from-internal-subscribe

ซึ่ง subscribecontext เป็นชื่อ Context ในไฟล์ extensions.conf

2. เพิ่ม Context ในไฟล์ extensions.conf
สมมติว่าเบอร์ Extension ที่ใช้มี 3 หลัก ขึ้นต้นด้วย 100 - 199
[from-internal-subscribe]
exten => _1XX,hint,SIP/${EXTEN}

3. เข้า Asterisk Console แล้วรีโหลด Asterisk ใหม่
โค้ด: เลือกทั้งหมด
reload


แต่ถ้าเราคอนฟิก SUBSCRIBE ไม่ถูกต้อง ก็จะเห็นข้อความแบบนี้แทนครับ

192.168.4.10 -> 192.168.4.55 SIP Request: SUBSCRIBE sip:100@192.168.4.55;transport=UDP
192.168.4.55 -> 192.168.4.10 SIP Status: 489 Bad Event

ก็เป็นไปได้ว่าในไฟล์ sip.conf ไม่ได้ใส่ 2 บรรทัดที่ผมแนะนำเข้าไป หรือใส่ไม่ถูกต้องหน่ะครับ
voip4share
Administrator
 
โพสต์: 656
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 11:26
ที่อยู่: รามคำแหง กรุงเทพฯ

ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 2 ท่าน