در بسیاری از پروژههای ویپ (VoIP)، نیاز به ضبط تماسها برای اهداف آموزشی، نظارتی، یا قانونی وجود دارد. استریسک (Asterisk) بهصورت پیشفرض دو برنامه کاربردی (Application) قدرتمند برای این منظور فراهم کرده است: MixMonitor
و Monitor
. در این مقاله، نحوه استفاده از این دو برنامه را بهطور کامل و همراه با مثالهای کاربردی در بستر ایزابل (Issabel) بررسی خواهیم کرد.
MixMonitor چیست؟
MixMonitor
برنامهای در استریسک است که برای ضبط همزمان صدای طرفین تماس استفاده میشود و فایل خروجی آن بهصورت ترکیبشده (میکسشده) ذخیره میگردد. این برنامه در اغلب سناریوهای عملیاتی ترجیح داده میشود، زیرا صدای تماس در یک فایل واحد ذخیره میشود که بررسی آن را سادهتر میکند.
ساختار استفاده از MixMonitor
[voipiran
exten => 1000,1,Answer(
exten => 1000,n,Set(FILENAME=/var/spool/asterisk/monitor/${UNIQUEID}.wav
exten => 1000,n,MixMonitor(${FILENAME},a
exten => 1000,n,Playback(welcome
exten => 1000,n,Dial(SIP/1001,20
exten => 1000,n,Hangup()
در این مثال:
-
از متغیر
${UNIQUEID}
برای تولید نام منحصربهفرد فایل استفاده شده. -
گزینه
a
باعث میشود فایل بهصورت خودکار بعد از پایان تماس بسته شود.
توضیح گزینههای مهم MixMonitor
-
b
: فقط صدای تماسگیرنده (caller) را ضبط میکند. -
B
: فقط صدای پاسخدهنده (callee) را ضبط میکند. -
a
: فایل را بعد از پایان تماس ببندد. -
v
: حجم صدا را افزایش میدهد. -
W
: ضبط را فقط زمانی شروع میکند که تماس برقرار شود.
Monitor چیست؟
برنامهی قدیمیتری است که صدای دو طرف تماس را بهصورت جداگانه در دو فایل ضبط میکند و یک فایل سوم برای ترکیب این دو تولید میشود. معمولاً در پروژههای جدید پیشنهاد نمیشود، مگر برای اهداف خاص.
ساختار استفاده از Monitor
[voipiran]
exten => 2000,1,Answer()
exten => 2000,n,Monitor(wav,mycall,mb)
exten => 2000,n,Dial(SIP/2001,20)
exten => 2000,n,Hangup()
در این مثال:
-
فایلهای ضبطشده به صورت
mycall-in.wav
,mycall-out.wav
, وmycall.wav
ذخیره میشوند. -
گزینه
m
برای میکس صدا استفاده میشود. -
گزینه
b
باعث میشود ضبط پس از تماس آغاز شود.
مثال عملی – ضبط تماس داخلی به داخلی در ایزابل
اگر بخواهید تمامی تماسهای داخلی ۳۰۰۰ را ضبط کنید، کافی است در فایل extensions_custom.conf
چنین چیزی بنویسید:
[voipiran]
exten => 3000,1,Answer()
exten => 3000,n,Set(FILENAME=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${CALLERID(num)}-${EXTEN}.wav)
exten => 3000,n,MixMonitor(${FILENAME},a)
exten => 3000,n,Dial(SIP/3000,30,tT)
exten => 3000,n,Hangup()
یادتان باشد برای اینکه داخلیها به این context دسترسی داشته باشند، باید در فایل extensions_custom.conf
این خط را نیز اضافه کنید:
[from-internal-additional]
include => voipiran