CallerID در Asterisk و Elastix یکی از مشکلات رایج در ارتباط با سیستم های تلفنی استریسک و الستیکس و خطوط شهری آنالوگ، تشخیص کالرآیدی می باشد. در نظر داشته باشید که عدم تشخیص کالرآیدی، مشکلات دیگری همچون تاخیر اتصال تماس به منوی صوتی (IVR) را نیز به دنبال خواهد داشت. مهمترین علت این مشکل، تفاوت در نوع ارسال کالرآیدی از سمت مراکز مخابرات می باشد، که در این صورت باید پس از شناسایی نوع سیگنالینگ کالرآیدی، تنظیمات مربوط به cidstart ،cidsignalling کانال های dahdi را متناسب با آن، انجام دهید. در ادامه با ارائه ی یک راهکار ساده، این مشکل بزرگ را حل خواهیم کرد.
در ابتدا باید با استفاده از نرم افزار dahdi_monitor یکی از کانال های dahdi را ضبط کنیم. در واقع با این نرم افزار می توان جریان ورودی و خروجی از کانال های dahdi را مانیتور و ضبط کرد.
در صورتی که خط شهری به یکی از پورت ها متصل است و شماره کانال آن را نمی دانید، می توانید به فایل system.conf که در مسیر etc/dahdi قرار دارد، رجوع کرده و اطلاعات لازم را استخراج کنید.
قبل از شماره گیری خط مورد نظر، دستور زیر را اجرا کنید تا ضبط کانال مربوطه آغاز شود. در این دستور x شماره کانال، -r نشان دهنده ی جریان ورودی و –t نشان دهنده ی جریان خروجی است.
در نهایت یک نام برای فایل های ضبط شده تعیین و فرمت فایل صوتی را raw ذخیره نمایید. تماس را می توانید بعد از شنیدن چند بوق قطع نمایید. فایل های صوتی در مسیر جاری ذخیره شده که می توانید با دستور LS از وجود فایل های ضبط شده اطمینان حاصل کنید.
پس از ضبط فایل ها، آن ها را در نرم افزار adobe audition باز کرده و از این طریق نوع سیگنالینگ callerid را شناسایی کنید.
در فایل ضبط شده اگر غیر از صدای زنگ، صدای مشابه شماره گرفتن از روی صفحه کلید تلفن شنیده شود، به این معناست که callerid با سیگنالینگ dtmf ارسال می شود. اما در صورتی که صدایی همانند Handshake Dialup (زمان اتصال به اینترنت) شنیده شود، callerid با سیگنالینگ fsk برای شما ارسال می گردد.
در زیر، حالت های رایج مورد بررسی قرار گرفته اند.
حالت اول : کالرآیدی با سیگنالینگ DTMF بعد از زنگ
دانلود نمونه فایل صوتی
در این حالت ابتدا یک ringtone پخش شده، سپس callerid با سیگنالینگ dtmf ارسال شده و بعد از آن ringtone دوم پخش می شود. به عبارت دیگر callerid بین زنگ اول و دوم به دست ما می رسد. در نتیجه در این حالت بایدتنظیمات زیر را به فایل chan_dahdi.conf که در مسیر /etc/asterisk/ قرار دارد، اضافه نمایید.
حالت دوم : کالرآیدی با سیگنالینگ DTMF قبل از زنگ
دانلود نمونه فایل صوتی
در این حالت callerid قبل از اولین ringtone و با سیگنالینگ dtmf منتشر می شود. پس باید تنظیمات زیر را برای این حالت در نظر می گیریم :
حالت سوم : کالرآیدی با سیگنالینگ FSK بعد از زنگ
دانلود نمونه فایل صوتی
در این حالت ابتدا یک ringtone پخش می شود سپس callerid با سیگنالینگ fsk ارسال شده و بعد از آن ringtone دوم پخش می شود. در واقع callerid بین زنگ اول و دوم به دست ما می رسد. بنابراین تنظیمات زیر را برای این حالت در نظر می گیریم :
حالت چهارم : کالرآیدی با سیگنالینگ FSK قبل از زنگ
دانلود نمونه فایل صوتی
در این حالت callerid قبل از حتی اولین ringtone و با سیگنالینگ fsk منتشر می شود. پس تنظیمات زیر را برای این حالت در نظر می گیریم :
نویسنده : سهیل تهرانی پور
در ابتدا باید با استفاده از نرم افزار dahdi_monitor یکی از کانال های dahdi را ضبط کنیم. در واقع با این نرم افزار می توان جریان ورودی و خروجی از کانال های dahdi را مانیتور و ضبط کرد.
در صورتی که خط شهری به یکی از پورت ها متصل است و شماره کانال آن را نمی دانید، می توانید به فایل system.conf که در مسیر etc/dahdi قرار دارد، رجوع کرده و اطلاعات لازم را استخراج کنید.
قبل از شماره گیری خط مورد نظر، دستور زیر را اجرا کنید تا ضبط کانال مربوطه آغاز شود. در این دستور x شماره کانال، -r نشان دهنده ی جریان ورودی و –t نشان دهنده ی جریان خروجی است.
کد PHP:
#> dahdi_monitor x -r filename1.raw -t filename2.raw
پس از ضبط فایل ها، آن ها را در نرم افزار adobe audition باز کرده و از این طریق نوع سیگنالینگ callerid را شناسایی کنید.
در فایل ضبط شده اگر غیر از صدای زنگ، صدای مشابه شماره گرفتن از روی صفحه کلید تلفن شنیده شود، به این معناست که callerid با سیگنالینگ dtmf ارسال می شود. اما در صورتی که صدایی همانند Handshake Dialup (زمان اتصال به اینترنت) شنیده شود، callerid با سیگنالینگ fsk برای شما ارسال می گردد.
در زیر، حالت های رایج مورد بررسی قرار گرفته اند.
حالت اول : کالرآیدی با سیگنالینگ DTMF بعد از زنگ
دانلود نمونه فایل صوتی
در این حالت ابتدا یک ringtone پخش شده، سپس callerid با سیگنالینگ dtmf ارسال شده و بعد از آن ringtone دوم پخش می شود. به عبارت دیگر callerid بین زنگ اول و دوم به دست ما می رسد. در نتیجه در این حالت بایدتنظیمات زیر را به فایل chan_dahdi.conf که در مسیر /etc/asterisk/ قرار دارد، اضافه نمایید.
کد PHP:
usecallerid=yes
cidsignalling=dtmf
cidstart=ring
hidecallerid=no
حالت دوم : کالرآیدی با سیگنالینگ DTMF قبل از زنگ
دانلود نمونه فایل صوتی
در این حالت callerid قبل از اولین ringtone و با سیگنالینگ dtmf منتشر می شود. پس باید تنظیمات زیر را برای این حالت در نظر می گیریم :
کد PHP:
usecallerid=yes
cidsignalling=dtmf
cidstart=dtmf
hidecallerid=no
حالت سوم : کالرآیدی با سیگنالینگ FSK بعد از زنگ
دانلود نمونه فایل صوتی
در این حالت ابتدا یک ringtone پخش می شود سپس callerid با سیگنالینگ fsk ارسال شده و بعد از آن ringtone دوم پخش می شود. در واقع callerid بین زنگ اول و دوم به دست ما می رسد. بنابراین تنظیمات زیر را برای این حالت در نظر می گیریم :
کد PHP:
usecallerid=yes
cidsignalling=bell
cidstart=ring
hidecallerid=no
حالت چهارم : کالرآیدی با سیگنالینگ FSK قبل از زنگ
دانلود نمونه فایل صوتی
در این حالت callerid قبل از حتی اولین ringtone و با سیگنالینگ fsk منتشر می شود. پس تنظیمات زیر را برای این حالت در نظر می گیریم :
کد PHP:
usecallerid=yes
cidsignalling=bell
cidstart=dtmf
hidecallerid=no