วันเสาร์ที่ 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/ ต้องสั่งลบเองนะครับ... อ่านเพิ่มเติมใน เขียนโปรแกรมแปลงไฟล์เสียง...

ป้ายกำกับ: ,

บันทึก เสียง Call Center

ครั้งก่อนได้กล่าวถึงการ สร้างคิวการรับโทรศัพท์ ไปแล้ว คราวนี้จะได้กล่าวถึงการบันทึกเสียงของ Agent ที่รับโทรศัพท์ ซึ่งการบันทึกเสียงถือว่าเป็นสิ่งสำคัญในการจัดระบบงาน Call Center เพื่อใช้ในการปรับปรุง และเป็นพยานมัดตัวพนักงาน Agent บางคนที่ทำผิดแล้วไม่ยอมรับผิด (กรณีมีเกิดขึ้นจริง ๆ ) และบางครั้งใช้ในการสอบสวนกรณีลูกค้าร้องเรียนเกี่ยวกับ Call Center หรือการแอบอ้างอื่น ๆ

วิธีการก็ไม่ยุ่งยากอะไรเพียงแต่แก้ไขที่ไฟล์ queues.conf และ agents.conf เหมือนเดิม....

ก่อนอื่นให้เข้าไปเพิ่มข้อความในไฟล์ queues.conf ดังนี้

[general]
monitor-type = MixMonitor
monitor-format = gsm|wav|wav49
monitor-join=yes

การ กำหนดประเภทของ monitor-type ให้เป็น MixMonitor หมายถึงการรวมไฟล์ที่บันทึกเสียง เพราะปกติการบันทึกจะแยกออกเป็นสองไฟล์คือ -in และ out ฝ่ายผู้โทรเข้ามาเป็น -in และผู้ให้บริการเป็น -out ซึ่งสะดวกสำหรับกรณีที่เสียงดังไม่เท่ากัน เราสามารถใช้โปรแกรมปรับแต่งเสียงให้เท่ากันก่อนรวมไฟล์ แต่ก็ยุ่งยากสำหรับการใช้งานโดยทั่วไป จึงกำหนดให้ระบบรวมไฟล์ให้อัตโนมัติจะดีกว่า

ตัวอย่างไฟล์ที่บันทึกเสียงแบบแยกไฟล์

agent-991-1237105282-2661-in.gsm
agent-991-1237105282-2661-out.gsm

และ ประเภทของไฟล์เสียงกำหนดให้เป็น gsm ซึ่งเป็นการเก็บไฟล์ที่มีขนาดน้อยที่สุดและคุณภาพพอรับได้ หรือเรียกว่าคุณภาพเสียงสนทนาทางโทรศัพท์ทั่วไป แต่วิธีการฟังเสียงจะไม่สามารถฟังได้ง่ายนัก ต้องอาศัยโปรแกรมแปลงเสียงอีก (ดูเพิ่มเติมเรื่องเขียนโปรแกรมแปลงเสียง gsm เป็น wav)

จากนั้นให้เข้าไปกำหนดในไฟล์ agents.conf เพิ่มเติมดังนี้

[agents]
recordagentcalls=yes
recordformat=gsm
monitor-join=yes
createlink=yes
savecallsin=/var/calls

เมื่อกำหนดข้อความในไฟล์ agents แล้วให้สร้าง ไดเรคทอรีชื่อ calls ใน /var เพื่อเก็บไฟล์ที่บันทึก

ป้ายกำกับ: , ,