شناختن نوع ارسال شماره تماس گیرنده یا همان CallerID حتی اگر این مشکل را روی سیستم خود ندارید برای کسانی که مهندس ویپ هستند بسیار مفید است، اگر هم در دریافت کالر آی دی ار سوی مخابرات مشکل دارید این مقاله مشکل شما را حل خواهد کرد.
کالر آی دی از سوی مخابرات در ۲ نوع ممکن است ارسال شود که به آنها خواهیم پرداخت:
۱. ارسال کالر آیدی با استفاده از FSK
روش Frequency Shift Keying یا به طور خلاصه FSK روشی است کلی برای ارسال اطلاعات بر روی خطوط یا بستر آنالوگ مخابراتی. این روش به طور گسترده در مودم ها بکار میرود و کارکرد آن به اینصورت است که هرگاه فرستنده میخواهد بیت ۰ را ارسال کند یک موج با فرکانس ۲۲۰۰Hz و وقتی میخواهد بیت ۱ را ارسال کند موجی با فرکانس ۱۲۰۰Hz ایجاد میکند به این ترتیب میتوان با ارسال پیوسته فرکانسهای فوق مجموعه اطلاعاتی را ارسال نمود در سمت دریافت کننده با دریافت این فرکانسها به اطلاعات ارسالی خواهیم رسید.
این روش در ارسال شماره تماس گیرنده یا همان کالر آیدی نیز به کار گرفته شده نه تنها شماره تماس گیرنده بلکه حتی میتوان نام و اطلاعات دیگر را نیز ارسال نمود.
۲. ارسال کالر آیدی با بهره گیری از DTMF
Dual Tone Multy Frequency همان مکانیزی است که در هنگام شماره گیری از روی شماره گیر تلفن خود از آن استفاده میکنید. در این روش شما میتوانید حروف انگلیسی، اعداد و یا * و # را ارسال نمایید.
به هر یک از این حروف یک فرکانس بالا و یک فرکانس پائین تخصیص داده شده است بطور مثال هنگامی که فرستنده میخواهد عددی را ارسال کند یک موج سینوسی برای هریک از این فرکانسها ارسال میکند که در دریافت کننده با استفاده از الگوریتم گویرتزل این فرکانسها استخراج شده و به عدد مورد نظر میرسیم.
حال پس از دانستن نحوه ارسال کالر آیدی یک نکته دیگر باقی میماند اینکه این اطلاعات کی توسط مرکز مخابرات فرستاده میشوند؟
برای پاسخگوئی به این سوال باید بگوئید شما در کدام کشور قرار دارید و مرکز مخابراتی شما از کدام استاندارد برای ارسال کالر آیدی استفاده میکند. بطور کلی ارسال کالر آیدی معمولا بین زنگ اول و دوم صورت میگیرد البته در بعضی کشورها قبل از زنگ و با تغییر قطبهای ولتاژ (DC (Polarity، دریافت کننده را از ارسال کالر ُآیدی مطلع مینماید. البته در ایران معمولا ارسال بین زنگ اول و دوم صورت میگیرد ولی در بعضی مراکز قبل از زنگ اول نیز ارسال میشود.
چگونگی دریافت کالر آیدی در استریسک (Asterisk)
همانطور که میدانیم استریسک یک PBX نرم افزاری است یعنی تقریبا اکثر کارکردهای سیستم بصورت نرم افزاری پیاده سازی شده از جمله دریافت و رمز گشائی (Decoding) کالر آیدی.
در سیستم استریسک سه گزینه در chan_dahdi.conf وجود دارد که مرتبط با دریافت کالر آیدی می باشد و عبارتند از:
cidstart, usecallerid, cidsignalling
هرکدام از این متغیرها میتوانند مقادیر زیر را پذیرا باشند:
usecaller id = yes /no
cidstart = ring /polarity
cidsignalling = bell /dtmf
این گزینهها کم و بیش قبلا در متن توضیح داده شده ولی موارد زیر جهت روشن شدن بیشتر معانی آنها اضافه میگردد.
usecallerid: مشخص میکند آیا استریسک دنبال کالر آیدی بگردد یا خیر، در حقیقت کالرآیدی نمایش داده شود یا خیر
cidstart: این گزینه مشخص میکند آیا کالر آیدی بعد از زنگ اول (بین زنگ اول و دوم) ارسال میشود یا پس از تغییر polarity
cidsignalling: با این متغیر تعیین میکنیم که آیا ارسال کالر آیدی بصورت DTMF است یا FSK، البته در سیستم استریسک انواع مختلف FSK پشتیبانی میشود، bell ،v.23 یا غیره
در ایران همانطور که گفته شد cidstart در اغلب موارد ring میباشد (بین زنگ اول و دوم) ولی در مواردی نیز قبل از زنگ اول است که استریسک این حالت را پشتیبانی نمیکند.
در مورد cidsignalling هر دو مورد DTMF و (FSK (bell وجود دارد که این گزینهها را باید از مرکز مخابراتی خود جویا شوید.
در سیستم استریسک کارتهای تلفنی که با آن همخوانی دارند کلیه فریمهای صوتی را از طریق درایور خاص خود یا DAHDI/Zaptel به استریسک انتقال میدهند و در استریسک ماژولی بنام dsp مسئولیت پردازش و استخراج فرکانسهای DTMF یا FSK را به عهده دارند، البته کارتهای Sangoma با توجه به نحوه طراحی سخت افزاری آن قابلیت تشخیص DTMF را در روی کارت دارند در صورتیکه در درایو آن گزینه Hardware-dtmf فعال شده باشد.
در صورتیکه شما در ایران هستید و در خصوص تشخیص کالر آیدی با استریسک دچار مشکلید، باید از cidstart ،cidsignalling مرکز مخابراتی خود مطمئن شوید.
در صورتیکه مطمئین نیستید که کالرآیدی قبل از زنگ اول ارسال میشود یا خیر میتوانید بروش زیر یک مکالمه را ضبط کرده و پس از شنیدن آن از این مسئله مطمئن شوید.
dahdi_monitor x –r cidaudio-rx.raw
در دستور فوق x شماره کانال شماست بطور مثال اگر میخواهید dahdi/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
امیدوارم این مقاله مفید بوده باشد.