چرا FreeSWITCH؟

ارسال شده در بهمن ۳م, ۱۳۹۱ موضوع دسته‌بندی نشده توسط

متن زیر ترجمه لینک http://www.freeswitch.org/node/117 بوده و توسط Anthony Minessale ، ایجاد کننده اصلی فری سوئیچ نوشته شده است.

فری سوئیچ در مقایسه با استریسک چطور عمل‌ می‌کند؟ چرا شما ایجاد یک نرم‌افزار جدید را شروع کردید؟ اینها سوالاتی هستند که اخیرا از من پرسیده می‌شوند و باعث شدند که تصمیم به ارائه پاسخ در مورد آنها به فعالان و مشتاقان در زمینه سیستم‌های تلفنی نرم‌افزاری و کسانی که علاقه‌مند به دانستن تفاوت‌های موجود بین این دو نرم‌افزار هستند، بگیرم. تجربه بسیار زیادی در زمینه کارکردن با هردوی این نرم‌افزارها داشته‌ام، در حدود ۳ سال در زمینه توسعه استریسک و به عنوان بنیان‌گذار فری سوئیچ. در ابتدا تجربیات خود در مورد استریسک را مطرح نموده سپس انگیزه و نحوه ایجاد فری سوئیچ را شرح خواهم داد.

اولین بار در سال ۲۰۰۳ از استریسک استفاده کردم. در آن زمان نسخه پیش از ۱٫۰ استفاده می‌شد و آشنایی کمی با VoIP داشتم. پس از دانلود و نصب، از اینکه پس از اتصال تلفن به کامپیوترم صدای بوق در آن شنیده می‌شد بسیار خوشحال بودم. چند روز مشغول کار با dial plan بودم و ایده‌هایی که با یک تلفن متصل به لینوکس قابل پیاده‌سازی بودند اجرایی می‌کردم. به علت سابقه زیاد در زمینه برنامه‌نویسی وب انواع ایده‌ها مانند تطابق شماره تماس‌گیرنده با شماره اکانت به منظور تشخیص علت تماس و موارد مشابه به ذهنم می‌رسید. سپس زمانی که قصد استفاده از تطابق الگوهای تماس در dial plan را داشتم نوشتن اولین ماژول را آغاز کردم. به این ترتیب نسخه ابتدایی app_perl، که اکنون res_perl نامیده می‌شود، شکل گرفت و یک مفسر Perl5 را به استریسک اضافه کرده بودم.

پس از کسب این تجربیات، ایجاد زیرساختی مبتنی بر استریسک را برای صف تماس‌های ورودی شروع کردم. نمونه اولیه را بر اساس app_queue و واسط مدیریت استریسک که به اختصار AMI نامیده می‌شود ایجاد کردم (استفاده از مخفف احساس خوبی ایجاد می‌کند). واقعا جالب بود! این امکان وجود داشت که از خطوط تلفن با یک خط T1 تماس گرفت و وارد صف تماس شد و اپراتوها نیز پس از تماس وارد صف شده و تماس‌ها را پاسخ می‌دادند. وقتی که از طریق وب  وضعیت صف‌ها و حضور اپراتورها را مشاهده می‌کردم به نظرم همه چیز عالی بود. حتی صفحه به طور خودکار هر چند ثانیه بروزرسانی می‌شد اما زمانیکه مرورگر مدت زیادی در حال بارگزاری باقی ماند برای اولین بار این لغت را شنیدم، Deadlock! لغتی که هیچوقت نمی‌توانم فراموش کنم.

این اولین بار بود که چنین اتفاقی رخ می‌داد اما آخرین بار نبود. مطالب زیادی در مورد GNU Debugger یادگرفتم که آغاز اتفاقات زیادی بود. وقوع Deadlock در ماژول صف، Deadlock در ماژول مدیریت و کنسول. این اتفاقات اندکی باعث ناامیدی من شد اما ادامه دادم. در همین حین با Segmentation Fault برخورد کردم که برنامه‌نویسان با آن آشنایی کامل دارند. پس از حدود یک سال درگیری با باگ‌ها، بر زبان c تسلط زیادی پیدا کرده بودم و مهارتم در زمینه دیباگ کردن افزایش پیدا کرده بود. بستر مورد استفاده من شامل ۷ سرور استریسک بود که تعداد زیادی تماس در حد DS3 را سرویس‌دهی می‌کرد و مقدار زیادی کد برای استریسک نوشته بودم که کپی‌رایت آن‌ها را در اختیار دارم http://www.cluecon.com/anthm.html.

ادامه مطلب…

FreeSWITCH چیست؟

ارسال شده در دی ۲۹م, ۱۳۹۱ موضوع معرفی توسط

FreeSWITCH، یک سیستم تلفنی کدباز است که اولین بار در سال ۲۰۰۶ توسط یکی از برنامه‌نویسان Asterisk به نام Anthony Minessale معرفی شد. او کار طراحی و پیاده‌سازی این سیستم را به کمک Brian West و Michael Jerris، که آنها نیز قبل از آن از توسعه‌دهنده‌گان Asterisk بودند، انجام داده بود. در ابتدا ایجاد یک سیستم تلفنی جدید با وجود سیستم تلفنی موفقی مانند Asterisk، کار عاقلانه‌ایی به نظر نمی‌رسید. اما با توجه به تجربیاتی که او و همکارانش در کار با Asterisk داشتند و متوجه یک سری مشکلات در آن شده بودند (در مقاله‌ایی دیگر به بررسی مشکلات استریسک خواهیم پرداخت)، هدف اولیه آنها طراحی یک سیستم تلفنی ماژولار، قابل‌گسترش، پایدار و قابل پشتیبانی بر روی سیستم‌عامل‌های مختلف بود. نسخه ۱٫۰٫۰ FreeSWITCH در ماه می ۲۰۰۸ رسما معرفی شد و در حال حاضر بعد از گذشت چندین سال، روزانه کاربران و توسعه‌دهندگان زیادی به پیشرفت این پروژه کمک می‌کنند.

FreeSWITCH در حقیقت یک soft switch کلاس ۵ یا B2BUA (مخفف back-to-back user agent) است که تحت لیسانس MPL و با زبان برنامه‌نویسی C پیاده‌سازی شده و بر روی سیستم عامل‌های Windows، Mac OSX، Linux، *BSD و سایر توزیع‌های UNIX قابل اجرا است. در طراحی و پیاده‌سازی این سیستم تلفنی، سعی شده است هسته (core) آن تا حد امکان کوچک باشد و تنها امکانات و قابلیت‌های ضروری را شامل شود. ضمنا در پیاده‌سازی آن سعی شده تا حد امکان دوباره کاری نشود و از کتابخانه‌های نرم‌افزاری موجود استفاده شود. به عنوان مثال در پیاده‌سازی ماژول mod_sofia، از پروژه Sofia-SIP که یک پروژه کدباز تحت حمایت شرکت نوکیا استفاده شده است (sofia-sip.sourceforge.net).

در این سیستم تلفنی، از تکنولوژی‌ها و پروتکل‌های ارتباطی مختلفی مانند Skype، SIP، H323 و GoogleTalk پیشتیبانی می‌شود که امکان برقراری ارتباط آسان با سیستم‌های تلفنی کدباز مختلفی مانند sipXecs، Call Weaver، Bayonne، YATE و یا Asterisk را فراهم می‌کند.

FreeSWITCH، از بسیاری از ویژگی‌های پیشرفته SIP مانند presence/BLF/SLA و همچنین TCP TLS و sRTP پشتیبانی می‌کند. آن همچنین می‌تواند به عنوان یک پروکسی ناپیدا (transparent proxy) با و بدون media در مسیر استفاده شود و به عنوان یک SBC یا Session Border Controller عمل کند.

FreeSWITCH ، از کدک‌های Wide Band و Narrow Band پشتیبانی می‌کند و آن را به راهکاری ایده‌آل برای برقراری ارتباط بین دستگاه‌های قدیمی و تکنولوژی‌های جدید، تبدیل کرده است. کانال‌های صدا و ماژول اتصال کنفرانس می‌توانند با فرکانس‌های ۸،۱۲،۱۶،۲۴،۳۲ یا ۴۸ کیلوهرتزی کار کنند و حتی کانال‌هایی با نرخ‌های مختلف را به هم وصل کنند. کدک G729 تحت لیسانس تجاری هم قابل دسترسی است.

FreeSWITCH، از فکس، هم بر روی صدا و هم پروتکل T.38 پشتیبانی می‌کند و می‌تواند بین هردو روش به عنوان مبدل هم عمل کند.

RingPBX چیست؟

ارسال شده در آذر ۲۳م, ۱۳۹۱ موضوع معرفی توسط

RingPBX، یک نرم افزار مدیریت تماس کاملا ایرانی و مبتنی بر نرم افزار کدباز FreeSWITCH است که نقشی مشابه نرم افزارهای شناخته شده ایی مانند trixbox ،AsteriskNOW ،Elastix  (برپایه Asterisk) و blue.box، FusionPBX و FreePyBX (بر پایه FreeSWITCH) را در دنیای VoIP ایفا می کند.

تاریخچه RingPBX، به اوایل سال ۱۳۸۹ بر می گردد که نسخه اولیه آن تحت ویندوز و به صورت اختصاصی برای شرکت گسترش ارتباطات سپنتا پیاده سازی شده بود. به دلیل اینکه نسخه ۱ این نرم افزار، اختصاصی برای یک شرکت خاص پیاده سازی شده بود، به راحتی قابل نصب و راه اندازی برای شرکت ها و سازمان های دیگر نبود. از این رو در ابتدا تصمیم گرفته شد نسخه ۱ این نرم افزار کلا کنار گذاشته شود و برای صرفه جویی در وقت از یکی از نرم افزارهای کدباز مانند blue.box و یا FusionPBX استفاده شود. تیم فنی بخش VoIP سپنتا بعد از ماه ها وقت گذاشتن بر روی این نرم افزارهای کدباز متوجه یک سری محدودیت های فنی شد که باعث پیچیده شدن پیاده سازی یک سری ایده ها و گسترش این نرم افزارها می شد. از این رو در اواخر سال ۱۳۹۰ تصمیم گرفته شد با کنار گذاشتن نسخه ۱ نرم افزار RingPBX، نسخه ۲ آن از صفر (from scratch) پیاده سازی شود. بعد از ماه ها تلاش در نهایت نسخه ۲ این نرم افزار در اواخر مهرماه سال ۱۳۹۱ بعد از انجام تست های اولیه به مرحله بهره برداری رسید.

نسخه ۲ RingPBX، برخلاف نسخه ۱ آن، بر روی توزیع CentOS سیستم عامل Linux ومبتنی بر ۳٫۲ Kohana که یک HMVC PHP5 Framework است پیاده سازی شده است.

به منظور پیاده سازی نرم افزاری در حد استانداردهای جهانی و با توجه به داشتن یک سری تجربیات تیم فنی بخش VoIP سپنتا در کار با نرم افزارهای مدیریت تماسی مانند blue.box، Elastix و Cisco Unified Communication Manager، سعی شده است با در نظر گرفتن و ترکیب یک سری از قابلیت های قابل استفاده این نرم افزارهای شناخته شده، یک نرم افزار مطمئن، یکپارچه و قابل گسترش برای رفع نیازهای شرکت ها و سازمان های داخلی، طراحی و پیاده سازی شود.