สำหรับ 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 บรรทัดที่ผมแนะนำเข้าไป หรือใส่ไม่ถูกต้องหน่ะครับ