امروز با اموزش نصب و راه اندازی WebRTC در سرور های استریسک در خدمت شما هستیم.در این اموزش شما با نحوه پیکربندی استریسک برای استفاده از این قابلیت اشنا خواهید شد.این اولین پست من تو ویرگوله.سعی میکنم از این به بعد بیشتر راجع تجربیات انجام یه سری از کارهام بنویسم.
با استفاده از این سرور برنامه نویسان وب قادر خواهند بود با استفاده از API های موجود که اکثرا به زبان Javascript هستن اقدام به نوشتن تلفن های تحت وب یا سیستم تماس با کلیک نمایند
شما توسط این سرویس میتوانید لذت یک ارتباط realtime را در بستر وب تجربه کرده و حتی در صورت نیاز این امکان را برای کاربران برون سازمانی خود نیز فراهم کنید.برای استفاده از این بستر نیاز به نصب افزونه خاصی بر روی مرورگر اینترنت خود ندارید
نصب و پیکربندی WebRTC
در گام اول برای استفاده از این سرویس نیاز به نصب چند ماژول برای سرور استریسک خود دارید که برنامه های تحت وب قادر باشند به سرور شما متصل شوند. این ماژول ها عبارتند از :
· res_crypto
· res_http_websocket
· res_pjsip_transport_websocket
علاوه بر این موارد در صورتی که کیفیت صدا برای شما مهم است با نصب کدک Opus میتوانیم به بهترین کیفیت مکالمات در این بستر دست پیدا کنیم.
البته باید بدانیم در صورت عدم نصب کدک نیز مکالمات با کیفیت قابل قابولی انجام پذیر است.
ابتدا به کنترل نصب یا عدم نصب ماژول های مورد نظر و کدک Opus اقدام می کنیم
از دستور زیر برای کنترل نصب موارد بالا میتوان اقدام کرد :
ls -w 1 /usr/lib/asterisk/modules/{*crypto*,*websocket*,*opus*}
در صورتی که خروجی به صورت زیر بود یعنی ماژول های مورد نیاز نصب شده است
/usr/lib/asterisk/modules/codec_opus.so
/usr/lib/asterisk/modules/res_crypto.so
/usr/lib/asterisk/modules/res_format_attr_opus.so
/usr/lib/asterisk/modules/res_http_websocket.so
/usr/lib/asterisk/modules/res_pjsip_transport_websocket.so
در گام دوم بررسی می کنیم که موارد فوق به درستی در استریسک load شده اند یا خیر
۳ دستور زیر را در محیط کامند وارد می کنیم :
asterisk -rx "module show like crypto"
asterisk -rx "module show like websocket"
asterisk -rx "module show like opus"
در صورت مشاهده این خروجی :
# asterisk -rx "module show like crypto"
Module Description Use Count Status Support Level
res_crypto.so Cryptographic Digital Signatures 1 Running core
1 modules loaded
# asterisk -rx "module show like websocket"
Module Description Use Count Status Support Level
res_http_websocket.so HTTP WebSocket Support 3 Running extended
res_pjsip_transport_websocket.so PJSIP WebSocket Transport Support 0 Running core
2 modules loaded
# asterisk -rx "module show like opus"
Module Description Use Count Status Support Level
codec_opus.so OPUS Coder/Decoder 0 Running extended
res_format_attr_opus.so Opus Format Attribute Module 1 Running core
3 modules loaded
ماژول ها به طرز صحیحی در سرور نصب و بالا امده است.
در صورتی که ماژول ها روی سرور شما نصب نبود شما می توانید با استفاده از قابلیت menuselect سرور استریسکی خود اقدام به نصب نمایید
در مرحله بعد احتیاج به ساخت یک فایل certificate برای استفاده از این سیستم داریم
مرورگر های جدید احتیاج به استفاده از TLS و یا DTLS-SRTP برای برقرای ارتباط و انجام عملیات سیگنال دهی دارند. در این آموزش با ما به ایجاد یک گواهینامه امضا شده self-signed اکتفا می کنیم و برای استفاده از گواهینامههای مورد تایید در اینترنت در مقالات بعدی صحبت خواهیم کرد
ما با استفاده از ابزار ast_tls_cert که در داخل خود استریسک وجود دارد اقدام به ایجاد این گواهی نامه می کنیم برای این منظور از دستورات زیر استفاده خواهیم کرد
ابتدا برای ایجاد فایل ذخیره گواهینامه ها دستور را می زنیم :
mkdir /etc/asterisk/keys
سپس با استفاده از دستور زیر اقدام ساخت گواهینامه می کنیم :
./ast_tls_cert -C pbx.example.com -O "My Super Company" -d /etc/asterisk/keys
حال به توضیح سوئیچ های استفاده شده در این دستور می پردازیم :
سوئیچ -C : برای مشخص کردن آی پی سرور و یا آدرس کامل خواندنی سرور(FQDN)
سوئیچ -O : برای مشخص کردن نام شرکت
سوئیچ -d : برای مشخص کردن آدرس ذخیره کردن فایل های گواهینامه
پس از وارد کردن دستور بالا شما احتیاج به وارد کردن چندین باره پسورد خود دارید این پسورد را به خاطر بسپارید در صورت نیاز به استفاده از این گواهینامه برای موارد دیگر احتیاج به وارد کردن این پسورد دارید.توجه کنید که نیاز نیست این پسورد با پسورد سرور شما یکسان باشد اما همیشه این پسورد را به خاطر بسپارید
سپس با استفاده از دستور :
ls -w 1 /etc/asterisk/keys
به بررسی صحت انجام دستور بالا اقدام می کنیم
خروجی مورد انتظار ما در صورت صحیح بودن مرحله قبل به شکل زیر خواهد بود :
asterisk.crt
asterisk.csr
asterisk.key
asterisk.pem
ca.cfg
ca.crt
ca.key
tmp.cfg
در گام بعدی ما نیاز داریم که به پیکربندی وب سرور داخلی سرور استریسک اقدام کنیم. بدین منظور فایل etc/asterisk/http.conf را باز کرده و خط های زیر را در آن اضافه میکنیم :
[general]
enabled=yes
bindaddr=0.0.0.0
bindport=8088
tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/etc/asterisk/keys/asterisk.pem
با استفاده از این دستور وب سرور داخلی سرویس را پیکربندی کردیم و با اختصاص دادن یک پورت اقدام به فعال کردن حالت نمودیم
با استفاده از دستور:
netstat -an | grep 8089
می توانیم بررسی کنیم آیا پورت مورد نظر ما در حال حاضر بر روی سرور باز است یا نه در صورت باز بودن عملیات با موفقیت انجام شده. خروجی مورد انتظار ما از پس از اجرای این دستور در محیط ترمینال به شکل زیر خواهد بود در صورت بسته نشان دادن پورت مورد نظر که در مثال ما شماره ۸۰۸۹ بوده عملیات قبلی به درستی انجام نشده
tcp 0 0 0.0.0.0:8089 0.0.0.0:* LISTEN
در گام آخر ما برای استفاده از این سرویس نیاز به پیکربندی یک شماره داخلی مختص سرویس WebRTC خواهیم داشت بدین منظور باید فایل sip.conf را باز کرده و خط های زیر را به آن اضافه کنیم پس از اضافه کردن این خطوط داخلی شماره ۱۹۹ ساخته شده و قابلیت استفاده توسط سرویس مورد نظر ما را خواهد داشت
[general]
udpbindaddr=0.0.0.0:5060
realm=123.123.123.123 ;replace with your Asterisk server public IP address or host
transport=udp,ws,wss
[199]
host=dynamic
secret=199
context=default
type=friend
encryption=yes
avpf=yes
force_avp=yes
icesupport=yes
directmedia=no
disallow=all
allow=opus
allow=ulaw
dtlsenable=yes
dtlsverify=fingerprint
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup=actpass
rtcp_mux=yes
پس از انجام مراحل بالا کار به اتمام رسیده و شما می توانید با استفاده از یک کلاینت از پیش طراحی شده یا یک کلاینت اختصاصی اقدام به استفاده از این سرویس برای ایجاد تماس و یا دریافت کنید
امیدوارم این آموزش مورد توجه شما قرار گرفته باشد