از چالش های موجود در سیستم های یکپارچه ارتباطی، امکان پخش موزیک، کنفرانس صوتی و اعلان پیام یا پیجینگ (Paging) با استفاده از هسته نرم افزاری مرکز تلفن های تحت شبکه مبتنی بر استریسک (Asterisk) است. از این رو، تیم فنی شرکت ساعیان ارتباط راهکاری را توسعه داده است تا بتواند این نیاز را به طور جامع مرتفع کند. دیاگرام زیر نمای کلی از این راهکار است:
این راهکار پیجینگ با توجه به نیاز مشتریان قابل توسعه و تغییر است. سناریو پخش موزیک از طریق سیستم پیجینگ به شرح زیر میباشد:
• ابتدا مدیر سیستم توسط تلفن خود (Admin Phone) شماره کنفرانسی که از قبل در مرکز تلفن تحت شبکه تعریف شده را شماره گیری میکند و پس از وارد کردن رمز عبور وارد کنفرانس صوتی میشود.
• مدیر سیستم پس از ورود به کنفرانس میتواند با شماره گیری کلید 1، تعداد یک یا چندین اسپیکر و یا تلفن تحت شبکه (کاربر) را همزمان به کنفرانس صوتی دعوت کند.
• پس از آن مدیر سیستم میتواند توسط کلید 2 یک موزیک را به طور همزمان برای تمامی اعضای کنفرانس (اسپیکرها و کاربران) پخش نماید.
• مدیر سیستم میتواند برای قطع موزیک و اعلان پیغام از کلید 3 استفاده نموده و پس از اتمام پیغام مجدداً موزیک را پخش نماید.
• همچنین مدیر سیستم میتواند توسط کلید 9 کنفرانس صوتی را بسته و اعضا از آن خارج گردند.
نحوه پیاده سازی کنفرانس در استریسک جهت پیاده سازی سناریو پخش موسیقی از طریق سیستم پیجینگ تحت شبکه:
1. تعریف کنفرانس در Freepbx و اختصاص شماره به آن
2. تعریف admin menu برای کنفرانس در فایل confbridge_custom.conf در استریسک
به عنوان مثال قطعه کدهای زیر را در نظر بگیرید.
[pagebridge]
type=bridge
max_members=20
mixing_interval=10
internal_sample_rate=auto
record_conference=yes
[admin_menu]
type = menu
dialplan_exec(addcallers,1,1)=3*
dialplan_exec(addcallers,1,1)=3
leave_conference=2*
leave_conference=2
dialplan_exec(musiconHold,2,1)=4*
dialplan_exec(musiconHold,2,1)=4
dialplan_exec(mute-participants,s,1)=5*
dialplan_exec(mute-participants,s,1)=5
dialplan_exec(unmute-participants,s,1)=6*
dialplan_exec(unmute-participants,s,1)=6
dialplan_exec(hangupchan,s,1)=0*
dialplan_exec(hangupchan,s,1)=0
همچنین در ادامه به بررسی نحوه تعریف dialplan در extention_custom میپردازیم.
[addcallers]
exten = 1,1,NoOp(add exten to Conf)
exten = 1,n,Goto(from-internal,5000,1);
exten = 1,n,Page(SIP/4000&SIP/3000);
exten = 1,n,Originate(SIP/4000,exten,conferences,s,1);
exten = 1,n,Originate(SIP/3000,exten,conferences,s,1);
[musiconHold]
exten = 2,1,NoOp(playing music)
exten = 2,n,Originate(Local/s@musiconHold,exten,conferences,s,1)
()exten = s,1,Answer
()exten = s,n,MusicOnHold
[mute-participants]
()exten = s,1,NoOp
exten = s,n,System(asterisk -rx 'confbridge mute 1020 participants')
[unmute-participants]
()exten = s,1,NoOp
exten = s,n,System(asterisk -rx 'confbridge unmute 1020 participants')
[hangupchan]
()exten = s,1,NoOp
exten = s,n,System(asterisk -rx 'channel request hangup all')
[conferences]
(1020)exten => s,1,ConfBridge