การทำ Reverse Attend Transfer

จาก Asterisk DIY - VoIP Opensource WiKi, สารานุกรมฟรี

Jump to: navigation, search

ในการทำ Attend Transfer โดยการทำงานปรกติของ Asterisk นั้น
หาก Extensions ที่เราทำการโอนสายไปนั้นมีการสร้าง Voicemail, Call Forwarding, Followme หรือ Application อื่นๆแทนที่ทำการ hangup สาย
การโอนสายนั้นๆ จะเกิดปัญหาขึ้น โดยผู้โอนสายจะต้องเข้าไปตาม application ที่ทำการ program เอาไว้ในขั่นต้น คือ แทนที่จะเป็นการ คุยกับผู้ที่เราจะโอนสายไปหากลับกลายเป็นการเข้า Voicemail ของผู้ที่เราจะโอนสายไป ซึ่งเราไม่สามารถที่จะ โอน สายนี้ไปยังสายต้นทางได้เลย
ฉะนั้นต้องมีการทำการ check ว่าสายที่ถูกใช้งานนั้นเป็นสายที่เกิดจาก Attend Transfer หรือไม่ หากเป็น ให้ทำการ hangup สายหากไม่สามารถทำการติดต่อกับผู้ที่เราจะโอนไปถึง


ตัวอย่าง CODE

[macro-attend_dial]
exten => s,1,NoOp(${CALLERID(NUM)})
exten => s,n,Set(DEST=${CUT(CHANNEL,-,1)})
exten => s,n,Set(DEST=${CUT(DEST,/,2)})
exten => s,n,NoOp(${DEST})
exten => s,n,Set(ATTENDTRANSFER=${IF($[ "${DEST}" = "${CALLERID(NUM)}"]?N:Y)})
exten => s,n,NoOp(${ATTENDTRANSFER})

exten => s,n(dial),Dial(${ARG1},${ARG2},${ARG3})
exten => s,n,GotoIf($["${ATTENDTRANSFER}" = "Y"]?s-BUSY,2)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s,n(unavailable),Goto(s-CHANUNAVAIL,1) 

exten => s-BUSY,1,Voicemail(${ARG10})
exten => s-BUSY,2,Hangup
Personal tools