ดาวน์โหลดบทความ Asterisk Sound Recording นี้ในรูปแบบไฟล์ pdf
Asterisk Call Recording
ผมมีบทความนี้มาฝากครับ เป็นการสั่ง Asterisk ให้บันทึกเสียงในขณะที่ยูสเซอร์ใช้โทรศัพท์ ทั้งโทรออกและรับสายเข้า ไม่ว่าจะโทรหากันภายใน หรือโทรออกไปภายนอก หรือภายนอกโทรเข้ามาหาก็ตาม
คำสั่งที่ใช้คือ MixMonitor เป็นคำสั่งใน Dialplan ทำให้เราบันทึกเสียงการสนทนาได้ คำสั่งนี้จะแตกต่างจากคำสั่ง Monitor ตรงที่สามารถปรับโวลุ่มเสียงในขณะที่กำลังสนทนาได้ ปรับได้ทั้งเสียงพูดและเสียงที่ได้ยิน หรือเอาเสียงสนทนาไปต่อท้ายเสียงไฟล์เดิมก็ได้ รูปแบบการใช้คำสั่งคือ
MixMonitor(<filename>.<extension>[|<options>[|command>]])
โดยที่
filename เป็นชื่อไฟล์ หรือจะใส่ Path ด้วยก็ได้นะครับ เช่น /tmp/filename หรือจะไม่ระบุชื่อ Path ก็ได้นะครับซึ่งไฟล์จะเก็บที่ไดเร็คตอรี่ /var/spool/asterisk/monitor แต่ถ้าระบุ Path แบบนี้ voip4share/file (ไม่มีเครื่องหมาย / ข้างหน้า voip4share) ไฟล์จะถูกเก็บที่ไดเร็คตอรี่ย่อยชื่อ voip4share ภายในไดเร็คตอรี่ /var/spool/asterisk/monitor
extension เป็นนามสกุลของไฟล์ เช่น .WAV ซึ่งนามสกุลนี้นะครับก็คือรูปแบบไฟล์เสียงที่จะบันทึก ถ้าเราใส่เป็น .wav หรือ .WAV จะเปิดด้วย Windows Media Player ได้ แต่ .WAV จะมีขนาดเล็กกว่า นาทีละ 85 กิโลไบต์ หรือชั่วโมงละประมาณ 5 เม็กเท่านั้น
option เป็นออปชั่นมีให้เลือกดังนี้
a - ถ้ามีไฟล์ชื่อเดียวกันอยู่ในไดเร็คตอรี่ จะเอาเสียงใหม่ไปต่อท้ายเสียงเก่า ไม่เขียนทับ
b - จะบันทึกเสียงเมื่อเสียงเมื่อปลายทางรับสายแล้ว (แชนแนลถูกบริดจ์) ถ้าติดต่อเบอร์ปลายทางไม่ได้ก็จะไม่บันทึกเสียงนะครับ
v(x) - ปรับโวลุ่มเสียงปลายทางพูดหรือเสียงที่เราได้ยิน x - มีค่าจาก -4 ถึง 4
V(x) ปรับโวลุ่มเสียงที่เราพูดหรือเสียงที่ปลายทางได้ยิน x - มีค่าจาก -4 ถึง 4
W(x) ปรับโวลุ่มเสียงที่ได้ยินและเสียงที่พูด x - มีค่าจาก -4 ถึง 4
มาดูตัวอย่างการใช้งานกันครับ ซึ่งผมจะบันทึกเสียงที่โทรไปหาเบอร์ภายใน (อาจจะโทรจากเบอร์ภายใน หรือเบอร์ภายนอกก็ได้) และสายภายในที่โทรหาเบอร์ภายนอก เก็บไฟล์เสียงไว้ในไดเร็คตอรี่ /tmp ชื่อไฟล์มีรูปแบบคือ record-${CALLERID(num)}-${EXTEN}-${STRFTIME(${EPOCH},,%d%m%Y-%H%M%S)}.WAV โดยที่ ${CALLERID(num)} คือเบอร์ต้นทาง, ${EXTEN} คือเบอร์ปลายทาง,${EXTEN}-${STRFTIME(${EPOCH},,%d%m%Y-%H%M%S)} คือ วันที่และเวลา เก็บในรูปแบบ WAV ให้บันทึกเมื่อปลายทางรับสาย และปรับโวลุ่มเสียงไว้ที่ 2 (ดังกว่าปกติ)
1. ไฟล์ extensions.conf
; บันทึเสียงการโทรระหว่างสายใน หรือสายนอกกับสายใน
exten => _1XX,1,MixMonitor(/tmp/record-${CALLERID(num)}-${EXTEN}-${STRFTIME(${EPOCH},,%d%m%Y-%H%M%S)}.WAV|bW(0))
exten => _1XX,2,Dial(SIP/${EXTEN},30,tT)
exten => _1XX,3,Voicemail(u${EXTEN})
exten => _1XX,103,Voicemail(b${EXTEN})
exten => _1XX,104,Hangup
; บันทึกเสียงการโทรระหว่างสายในกับสายนอก (กด 9 โทรออกสายนอก)
exten => _90X.,1,MixMonitor(/tmp/record-${CALLERID(num)}-${EXTEN}-${STRFTIME(${EPOCH},,%d%m%Y-%H%M%S)}.WAV|bW(0))
exten => _90X.,n,Dial(SIP/${EXTEN:1}@trunk1,30,tT)
exten => _90X.,n,Hangup
ถ้าเป็น Asterisk 1.6 ให้ใช้เครื่องหมายคอมม่า , แทนเครื่องหมายไปป์ | นะครับ
2. ไฟล์ sip.conf
สร้าง Trunk ชื่อ trunk1 และสร้าง SIP Clients เหมือนปกติครับ ไม่ได้มีอะไรพิเศษ
3. ทดสอบ
เอาเบอร์ Extension 100 โทรไปหาเบอร์ 028888888 เมื่อวันที่ 8/03/2010 เวลา 15:32:44 เมื่อปลายทางรับสาย คุยธุระจบและวางสาย จะมีไฟล์ชื่อ record-100-9028888888-08032010-153244.WAV อยู่ในไดเร็คตอรี่ /tmp
ดาวน์โหลดไฟล์นี้และใช้ Windows Media Player หรือโปรแกรมอะไรก็ได้ที่เล่นไฟล์เสียงได้ เปิดฟังครับ