روش Frequency Shift Keying یا به طور خلاصه FSK روشی است کلی برای ارسال اطلاعات بر روی خطوط یا بستر آنالوگ مخابراتی. این روش به طور گسترده در مودم ها بکار میرود و کارکرد آن به اینصورت است که هرگاه فرستنده میخواهد بیت ۰ را ارسال کند یک موج با فرکانس ۲۲۰۰Hz و وقتی میخواهد بیت ۱ را ارسال کند موجی با فرکانس ۱۲۰۰Hz ایجاد میکند به این ترتیب میتوان با ارسال پیوسته فرکانسهای فوق مجموعه اطلاعاتی را ارسال نمود در سمت دریافت کننده با دریافت این فرکانسها به اطلاعات ارسالی خواهیم رسید.
این روش در ارسال شماره تماس گیرنده یا همان کالر آیدی نیز به کار گرفته شده نه تنها شماره تماس گیرنده بلکه حتی میتوان نام و اطلاعات دیگر را نیز ارسال نمود.
Dual Tone Multy Frequency همان مکانیزی است که در هنگام شماره گیری از روی شماره گیر تلفن خود از آن استفاده میکنید. در این روش شما میتوانید حروف انگلیسی، اعداد و یا * و # را ارسال نمایید.
به هر یک از این حروف یک فرکانس بالا و یک فرکانس پائین تخصیص داده شده است بطور مثال هنگامی که فرستنده میخواهد عددی را ارسال کند یک موج سینوسی برای هریک از این فرکانسها ارسال میکند که در دریافت کننده با استفاده از الگوریتم گویرتزل این فرکانسها استخراج شده و به عدد مورد نظر میرسیم.
حال پس از دانستن نحوه ارسال کالر آیدی یک نکته دیگر باقی میماند اینکه این اطلاعات کی توسط مرکز مخابرات فرستاده میشوند؟
برای پاسخگوئی به این سوال باید بگوئید شما در کدام کشور قرار دارید و مرکز مخابراتی شما از کدام استاندارد برای ارسال کالر آیدی استفاده میکند. بطور کلی ارسال کالر آیدی معمولا بین زنگ اول و دوم صورت میگیرد البته در بعضی کشورها قبل از زنگ و با تغییر قطبهای ولتاژ (DC (Polarity، دریافت کننده را از ارسال کالر ُآیدی مطلع مینماید. البته در ایران معمولا ارسال بین زنگ اول و دوم صورت میگیرد ولی در بعضی مراکز قبل از زنگ اول نیز ارسال میشود.
همانطور که میدانیم استریسک یک PBX نرم افزاری است یعنی تقریبا اکثر کارکردهای سیستم بصورت نرم افزاری پیاده سازی شده از جمله دریافت و رمز گشائی (Decoding) کالر آیدی.
در سیستم استریسک سه گزینه در chan_dahdi.conf وجود دارد که مرتبط با دریافت کالر آیدی می باشد و عبارتند از:
cidstart, usecallerid, cidsignalling
dahdi_monitor x –r cidaudio-rx.raw
در دستور فوق x شماره کانال شماست بطور مثال اگر میخواهید dahdi/1 را ضبط کنید باید عدد 1 را به جای x بزنید.
مهمترین علت مشکل عدم تشخیص کالر آی دی تفاوت در نوع ارسال کالرآیدی از سمت مراکز مخابرات می باشد، که در این صورت باید پس از شناسایی نوع سیگنالینگ کالرآیدی، تنظیمات مربوط به cidstart ،cidsignalling کانال های dahdi را متناسب با آن، انجام دهید.
در ادامه با ارائه ی یک راهکار ساده، این مشکل بزرگ را حل خواهیم کرد.
در ابتدا باید با استفاده از نرم افزار dahdi_monitor یکی از کانال های dahdi را ضبط کنیم. در واقع با این نرم افزار می توان جریان ورودی و خروجی از کانال های dahdi را مانیتور و ضبط کرد.
در صورتی که خط شهری به یکی از پورت ها متصل است و شماره کانال آن را نمی دانید، می توانید به فایل system.conf که در مسیر etc/dahdi قرار دارد، رجوع کرده و اطلاعات لازم را استخراج کنید.
قبل از شماره گیری خط مورد نظر، دستور زیر را اجرا کنید تا ضبط کانال مربوطه آغاز شود. در این دستور x شماره کانال، -r نشان دهنده ی جریان ورودی و –t نشان دهنده ی جریان خروجی است.
#> dahdi_monitor x -r filename1.raw -t filename2.raw
در نهایت یک نام برای فایل های ضبط شده تعیین و فرمت فایل صوتی را raw ذخیره نمایید.
تماس را می توانید بعد از شنیدن چند بوق قطع نمایید. فایل های صوتی در مسیر جاری ذخیره شده که می توانید با دستور LS از وجود فایل های ضبط شده اطمینان حاصل کنید.
پس از ضبط فایل ها، آن ها را در نرم افزار adobe audition باز کرده و از این طریق نوع سیگنالینگ callerid را شناسایی کنید.
در فایل ضبط شده اگر غیر از صدای زنگ، صدای مشابه شماره گرفتن از روی صفحه کلید تلفن شنیده شود، به این معناست که callerid با سیگنالینگ dtmf ارسال می شود. اما در صورتی که صدایی همانند Handshake Dialup (زمان اتصال به اینترنت) شنیده شود، callerid با سیگنالینگ fsk برای شما ارسال می گردد.
در زیر، حالت های رایج مورد بررسی قرار گرفته اند.
حالت اول : کالرآیدی با سیگنالینگ DTMF بعد از زنگ
در این حالت ابتدا یک ringtone پخش شده، سپس callerid با سیگنالینگ dtmf ارسال شده و بعد از آن ringtone دوم پخش می شود. به عبارت دیگر callerid بین زنگ اول و دوم به دست ما می رسد.
در نتیجه در این حالت بایدتنظیمات زیر را به فایل chan_dahdi.conf که در مسیر /etc/asterisk/ قرار دارد، اضافه نمایید.
usecallerid=yes
cidsignalling=dtmf
cidstart=ring
hidecallerid=no
حالت دوم : کالرآیدی با سیگنالینگ DTMF قبل از زنگ
در این حالت callerid قبل از اولین ringtone و با سیگنالینگ dtmf منتشر می شود.
پس باید تنظیمات زیر را برای این حالت در نظر می گیریم:
usecallerid=yes
cidsignalling=dtmf
cidstart=dtmf
hidecallerid=no
حالت سوم : کالرآیدی با سیگنالینگ FSK بعد از زنگ
در این حالت ابتدا یک ringtone پخش می شود سپس callerid با سیگنالینگ fsk ارسال شده و بعد از آن ringtone دوم پخش می شود. در واقع callerid بین زنگ اول و دوم به دست ما می رسد.
بنابراین تنظیمات زیر را برای این حالت در نظر می گیریم:
usecallerid=yes
cidsignalling=bell
cidstart=ring
hidecallerid=no
حالت چهارم : کالرآیدی با سیگنالینگ FSK قبل از زنگ
در این حالت callerid قبل از حتی اولین ringtone و با سیگنالینگ fsk منتشر می شود.
پس تنظیمات زیر را برای این حالت در نظر می گیریم.
usecallerid=yes
cidsignalling=bell
cidstart=dtmf
hidecallerid=no
امیدوارم این مقاله مفید بوده باشد.