การใช้งาน Unconditional Call Forward บน Asterisk

Asterisk Opensource IP Pbx

การใช้งาน Unconditional Call Forward บน Asterisk

โพสต์โดย nuiz » 26 ส.ค. 2010 17:16

พอดีว่าก่อนหน้านี้มีสมาชิกท่านหนึ่งในเว็บสอบถามถึงวิธีการเซ็ต Call Forward บน Asterisk ไม่รู้ว่าตอนนี้จะเซ็ตใช้งานได้หรือยัง ผมก็ลองไปค้นในเน็ตและเอามาลองเซ็ตเล่นๆดู กว่าจะเวอร์คก็เล่นเอาเหงื่อตก
บน Asterisk เราเซ็ต Call Forward ได้ 3 เงื่อนไขนะครับคือ Unconditional (โอนสายทุกกรณี), Busy (โอนสายเมื่อสายไม่ว่าง) และ Unanswered (โอนสายเมื่อไม่รับสายภายในเวลาที่กำหนดไว้)
เอาหล่ะครับ ผมจะแนะนำวิธีการเซ็ต Unconditional Call Forward ก่อน ซึ่งผมเตรียมเบอร์ Extension ไว้ 3 เบอร์คือ *21* (โทรเข้าไปตั้งเบอร์ที่จะโอนไป), *22* (โทรเข้าไปยกเลิกการโอนสาย) และ *23* (โทรเข้าไปฟังดูว่าตอนนี้โอนสายไปเบอร์ไหนอยู่) มีเสียงบอกเบอร์ด้วยนะครับ ปรับเปลี่ยนเบอร์ได้ตามใจชอบครับ

วิธีการใช้งานก็กด *21* ตามด้วยเบอร์ที่จะโอนสายไป เช่น *21*0851619439 ครับ

[call-forward]
exten => _*21*X.,1,Answer
exten => _*21*X.,n,Set(DB(CFIM/${CALLERID(num)})=${EXTEN:4})
exten => _*21*X.,n,Playback(call-fwd-unconditional)
exten => _*21*X.,n,SayDigits(${EXTEN:4})
exten => _*21*X.,n,Hangup

exten => *22*,1,Answer
exten => *22*,n,Set(cfim_cancel=${DB_DELETE(CFIM/${CALLERID(num)})})
exten => *22*,n,Playback(call-fwd-cancelled)
exten => *22*,n,Hangup

exten => *23*,1,Answer
exten => *23*,n,Set(cfim_current=${DB(CFIM/${CALLERID(num)})})
exten => *23*,n,Playback(call-fwd-unconditional)
exten => *23*,n,SayDigits(${cfim_current})
exten => *23*,n,Hangup

คอนเซ็ปต์การเซ็ตอัพ Call Forward ของ Asterisk ก็มีประมาณนี้นะครับ เรียกใช้งาน Asterisk Database โดยส่งข้อมูลไปเก็บไว้ให้อยู่ในรูปแบบ family/key ซึ่งในตัวอย่าง family คือ CFIM (น่าจะย่อมาจาก Call Forward Immediately เดาเอาหน่ะ) และ key คือ CALLERID(num) ซึ่งก็คือเบอร์ Extension ของเรานั่นเอง หลังจากนั้น Asterisk จะเอาไปเก็บไว้ที่ไฟล์ /var/lib/asterisk/astdb นะครับ เพื่อรอให้เราเรียกใช้งาน ไฟล์นี้เป็น binary เราเรียกดูตรงๆไม่ได้ ต้องใช้คำสั่งเรียกดูครับ เช่น บน Linux Prompt พิมพ์คำสั่ง asterisk -rx "database show" หรือบน Asterisk Prompt ก็พิมพ์คำสั่ง database show

เวลาเมมเบอร์ที่จะโอนสายให้ Asterisk รับทราบแล้ว เราเช็คดูจากคำสั่งก็จะประมาณนี้ครับ

โค้ด: เลือกทั้งหมด
[sip2.voip4share.com ~]# asterisk -rx "database show"
/CFIM/80999                                       : 0851619439


มาดูตัวอย่างการเอาไปใช้งานนะครับ
** ปล. การเอาไปใช้งานผมยังไม่ได้เทสนะครับ ก๊อบมาจากเน็ต ส่วนข้างบนที่เซ็ตเบอร์นั้นเทสแล้วครับ เวอร์ค 100% **

[from-internal]
include => call-forward

exten => _1XX,1,Set(temp=${DB(CFIM/${CALLERID(num)})}) ; เช็คดู CFIM ของเบอร์ Extension ถ้าหาไม่เจอ (ไม่ได้เซ็ตโอนสายไว้) ก็จะกระโดดไปที่ Priority 102
exten => _1XX,2,Dial(SIP/${temp}@trunk) ; โอนสายไปเบอร์ที่เมมไว้
exten => _1XX,3,Dial(${EXTEN},60) ; รอรับสาย
exten => _1XX,4,Hangup

; ถ้าไม่เจอ CFIM ก็โทรเบอร์ Extension ปกติ
exten => _1XX,102,Goto(from-internal,3)

บทความที่เกี่ยวข้อง
การใช้งาน Busy Call Forward บน Asterisk
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7058
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: การใช้งาน Unconditional Call Forward บน Asterisk

โพสต์โดย zummer » 03 ก.ย. 2010 10:37

ผมเองหละครับ ตั้งแต่คราวก่อนยังก็ไม่ไ้ด้ลองอีกเลย

ขอบคุณคุณหนุ่ยมากครับ รู้สึกวิธีนี้ง่ายกว่าเยอะเลย
zummer
Bronz Member
 
โพสต์: 12
ลงทะเบียนเมื่อ: 09 มิ.ย. 2010 09:11


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

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

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

cron