วันเสาร์ที่ 15 พฤษภาคม พ.ศ. 2553

บันทึกเสียงโทร เข้าและโทรออก

ปกติการโทรเข้ามาในระบบ Agent จะสามารถบันทึกเสียงได้อยู่แล้ว (อ่าน วิธีการบันทึกเสียง Call Center เพิ่มเติม) แต่สำหรับการโทรเข้าหรือโทรออกโดยทั่วไปจะสามารถบันทึกเสียงได้เช่นกัน แต่จะต้องเขียนคำสั่งเพิ่มเติมใน Dial Plan วิธีการไม่ยุ่งยากอะไรเลย เพียงแต่เข้าใจวิธีเขียน DialPlan เท่านั้นเอง...

ปกติการโทรเข้ามาในระบบ แล้ว asterisk จะทำการหมุนโทรศัพท์ต่อไปยังเครื่องลูกที่เป็น SIP Client หรือเครื่องโทรศัพท์ทั่วไปอีกครั้งหนึ่ง และการโทรออกจากเครื่อง SIP Clent แล้ว Asterisk จะเป็นตัวสลับสายเพื่อโทรออกไปยัง Zap Channel ตามที่กำหนด

ทั้งหมดนี้จะเกิดขึ้นในไฟล์ /etc/asterisk/extensions.conf ซึ่งเป็นไฟล์เก็บ Dial Plan ทั้งหมดไว้

วิธีบันทึกสายโทรเข้า กรณีไม่ได้เป็น Agent

หลัง จากที่ Asterisk ได้รับสายเรียกเข้าจะต่อไปยังเครื่องโทรศัพท์ ด้วยคำสั่ง Dial(SIP/xxxx) ดังนั้นเราจะสั่งให้บันทึกเสียงก็เพิ่มคำสั่งให้บันทึกเพิ่ม ตัวอย่างเช่น

ปกติ

exten=>901,1,Dial(SIP/901)

แก้ไขใหม่ เพิ่มการบันทึก

exten=>901,1,Set(DATETIME=${STRFTIME(${EPOCH},,%C%y%m%d%H%M)})
exten=>901,n,Set(CALLFILENAME=${CALLERID(num)}-${DATETIME}-${EXTEN})
exten=>901,n,Monitor(gsm|${CALLFILENAME}|m)

คำสั่งบรรทัดที่ 1: set(DATETIME=${STRFTIME(${EPOCH},,%C%y%m%d%H%M)})
เป็นการกำหนดตัวแปร DATETIME เพื่อเก็บวันที่และเวลา รูปแบบที่เก็บจะเป็น YYYYMMDDHHMM

คำสั่งบรรทัดที่ 2: Set(CALLFILENAME= Set(CALLFILENAME=${CALLERID(num)}-${DATETIME}-${EXTEN})
เป็น การกำหนดตัวแปรชื่อ CALLFILENAME เพื่อกำหนดชื่อไฟล์ที่จะบันทึกโดยใช้ หมายเลขที่โทรเข้า-YYYYDDMMHHMM-หมายเลขเครื่อง ตัวอย่างเช่น 081XXXXXXX-200903201830-901 หมายถึงหมายเลข 081XXXXXXX โทรเข้ามาหาหมายเลข 901 เมื่อเวลา 18.30 วันที่ 20 มีนาคม 2009

คำสั่งบรรทัดที่ 3: Monitor(gsm|${CALLFILENAME}|m)
เป็น การกำหนดให้บันทึกเสียงการสนทนาโดยบันทึกรูปแบบไฟล์ gsm และเก็บไว้ในไฟล์ชื่อตามที่กำหนดรูปแบบไว้ในตัวแปร $CALLFILENAME บรรทัดที่ 2

วิธีบันทึกสายโทรออก

ปกติ

exten=>_02.,1,Dial(Zap/g0)

แก้ไขใหม่ เพิ่มการบันทึกเสียง

exten=>_02.,1,set(DATETIME=${STRFTIME(${EPOCH},,%C%y%m%d%H%M)})
exten=>_02.,n,Set(CALLFILENAME=OUT-${CALLERID(num)}-${DATETIME}-${EXTEN})
exten=>_02.,n,Monitor(gsm|${CALLFILENAME}|m)
exten=> _02.,n,Dial(Zap/g0/${EXTEN})
คำสั่งบรรทัดที่ 1-3 จะเหมือนตัวอย่างข้างบน เพียงแต่บรรทัดที่ 2 จะเพิ่มคำสั่ง OUT- นำหน้าชื่อไฟล์ที่บันทึกเสียงไว้เพื่อแยกให้เห็นว่าเป็นสายโทรออกให้ชัดเจน

ไฟล์ บันทึกเสียงทั้งหมดจะถูกบันทึกไว้ใน /var/spool/asterisk/monitor ซึ่งจะเป็นไฟล์แบบ gsm หากต้องการฟังถ้าจะให้ง่ายก็ต้องเปลี่ยนไฟล์ให้เป็นไฟล์แบบ wav เสียก่อนด้วยคำสั่ง

sox /var/spool/asterisk/monitor/ชื่อไฟล์.gsm /var/www/calls/ชื่อไฟล์.wav

คำ สั่งข้างบนจะเปลี่ยนไฟล์เสียงที่เป็นแบบ gsm ไปเป็นไฟล์แบบ wav และคัดลอกไปยังไดเรคทอรี /var/www/calls ซึ่งจะต้องสร้างไดเรคทอรี calls ไว้ก่อนเวลาจะเรียกฟังผ่านเว็บก็ระบุไดเรคทอรีได้เลย เช่น http://192.168.1.100/calls เป็นต้น

หลังจากใช้คำสั่ง sox แล้วไฟล์เดิมยังถูกเก็บไว้ใน /var/spool/asterisk/monitor/ ต้องสั่งลบเองนะครับ... อ่านเพิ่มเติมใน เขียนโปรแกรมแปลงไฟล์เสียง...

ป้ายกำกับ: ,

0 ความคิดเห็น:

แสดงความคิดเห็น

สมัครสมาชิก ส่งความคิดเห็น [Atom]

<< หน้าแรก