query زدن مستقیم به پایگاه داده Microsoft SQL SERVER 2005  از طریق DialPlan ها در استریک

query زدن مستقیم به پایگاه داده Microsoft SQL SERVER 2005  از طریق DialPlan ها در استریک

ارتباط مستقیم با پایگاه داده MSSQL در لینوکس با استفاده از ODBC و بهره گیری از FreeTDS امکان پذیر است .اما بخش هیجان انگیز این مقاله ارتباط مستقیم سیستم تلفنی Asterisk با پایگاه داده MSSQL است . روشی که با استفاده از آن شما قادر به Query زدن مستقیم به پایگاه داده MSSQL در DialPlan های Asterisk خواهید بود. شاید این بهترین روش برای پیاده سازی و هدایت آنلاین مشتری ها با توجه به تغییر یک value  در  پایگاه داده می باشد . 

 

Query


این مراحل بر روی سیستم عامل CENTOS 5.5 ، Asterisk نسخه 1.6.2.10 و  Microsoft SQl Server 2005 پیاده سازی و تست شده است .

گام نخست نصب بسته های پیش نیاز و دو مجموعه نرم افزار ODBC و FreeTDS می باشد .

yum install -y  unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel

yum install -y freetds freetds-devel freetds-doc

بعد از نصب بسته های فوق شما باید قادر باشید به سادگی با استفاده از بسته نرم افزاری tsql به پایگاه داده MSSQL متصل شوید .

tsql -S your.server.com -p 1433 -U WINDOWS-SQL-USERNAME -P PASSWORD

به عنوان مثال برای اتصال به پایگاه داده MSSQL در آدرس 192.168.1.100 با نام کاربری sa وکلمه عبور omidreza به صورت زیر عمل کنید .

tsql -S 192.168.1.100 -p 1433 -U sa -P omidreza

اگر در این مرحله مشکل دارید حتما پارامتر های اتصال از راه دور به پایگاه داده MSSQL را  با توجه به مراجل زیر بررسی کنید .

مشکلی که ممکن است در این مرحله با آن مواجه شویددر شکل زیر نمایش داده شده است .

ابتدا از مسیر نصب MSSQL ، بسته  SQL Server Configuration Manager را انتخاب کنید .

 

و در صورت غیر فعال بودن پروتکل TCP/IP آنرا enable کنید .

 

و سرویس SQL Server را راه اندازی مجدد کنید تا تغییرات اعمال شود .

 

اکنون نوبت به انجام تنظیمات ODBC و FREETDS است که طبق روند زیر انجام می گیرد .

vi /etc/odbc.ini

ما یک DSN به نام odbc-test به این فایل اضافه می کنیم .

[odbc-test]

Description = test

Driver = ms-sql

Servername = ms-sql

UID =VIPS

Port = 1433

و مسیر درایور های ms-sql را در فایل odbcinst.ini مشخص می کنیم .

vi /etc/odbcinst.ini

 

[ms-sql]

Description = TDS connection

Driver = /usr/lib/libtdsodbc.so

Setup = /usr/lib/libtdsS.so

UsageCount = 1

FileUsage = 1

 

و مشخصات سرور پایگاه داده را برای ارتباط ms-sql در فایل freetds.conf مشخص می کنیم .

vi /etc/freetds.conf

 

[ms-sql]

host = mssql.yourserver.com

port = 1433

tds version = 7.0

dump file = /var/log/freetds.log

برای تست DSN ساخته شده می توانید از بسته نرم افزاری isql با توجه به ساختار زیر استفاده کنید .

isql -v odbc-test Your-Username Your-Password

به عنوان مثال :

isql -v odbc-test sa omidreza

تا این مرجله ما قادر خواهیم بود به پایگاه داده MSSQL از طریق Linux متصل شویم . برای برقراری ارتباط استریک با پایگاه داده MSSQL باید تنظیمات مربوط به ODBC را در فایل res_odbc.conf همانند زیر انجام دهید .

# vi /etc/asterisk/res_odbc.conf

[odbc-test]

enabled => yes

dsn => odbc-test

username => sa

password => omidreza

pre-connect => yes

البته باید به این نکته توجه داشته باشید که اگر در هنگام نصب استریسک قابلیت ODBC را در هنگام کامپایل به سیستم تلفنی استریسک اضافه نکرده باشید باید دوباره استریسک را با توجه به نسخه موجود recompile کنید .

cd /usr/src

wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.10.tar.gz

tar -xzvf asterisk-1.6.2.10.tar.gz

cd asterisk-1.6.2.10

./configure --disable-xmldoc

make menuselect

و قابلیت اتصال از طریق ODBC را با انتخاب res_config_odbc و res_odbc به نرم افزار Asterisk اضافه کنید .

 

make

make install

برای اعمال تغییرات  نیار به راه اندازی مجدد سرویس Asterisk است .

service asterisk restart

اکنون با استفاده از دستور

asterisk -rx "odbc show"

قادر خواهید بود DSN تعریف شده را ، در کنسول Asterisk مشاهده کنید .

برای لود شدن خودکار این ماژول ها ، فایل modules.conf را همانند زیر ویرایش نمایید .

 

vi /etc/asterisk/modules.conf

; An example of loading ODBC support would be:

preload => res_odbc.so

preload => res_config_odbc.so

 

 اکنون برای تست ، یک پایگاه داده به نام testasterisk در پایگاه داده MSSQL ایجاد کنید و مشخصات این پایگاه داده را به DSN ای که قبلا در فایل odbc.ini ساختیم با استفاده از کلمه رزرو شده Database اضافه کنید .

[odbc-test]

Description = test

Driver = ms-sql

Servername = ms-sql

UID =VIPS

Port = 1433

Database = testasterisk

اکنون می توانید   Query مورد نظر خود را در فایل func_odbc.conf نوشته و از این Query در فایل extensions.conf استفاده کنید .

[TEST]

dsn=odbc-test

readsql=SELECT id from exten_table WHERE extension = 1000

برای اینکه از صحت دستور عبارت SQL خود مطمئن شوید می توانید Query را با استفاده از isql تست کنید .

نحوه فراخوانی این Query در فایل extensions.conf با استفاده از متغیر ${ODBC_PARAMETENAME()} است . به عنوان مثال Query قبلی را می توانیم با نام ${ODBC_TEST()}  فراخوانی کنیم .

[ODBC-test]
exten => s,1,wait(5)
exten => s,n,saydigits(${ODBC_TEST()})
exten => s,n,Dial(SIP/${ODBC_TEST()})
exten => s,n,Voicemail(${ODBC_TEST()})
exten => s,n,hangup

 

امید مهاجرانی

تاریخ ارسال: 1390/7/23
تعداد بازدید: 1481
کلمات کلیدی
ارسال نظر



تهران - خیابان انقلاب -روبروی پیچ شمیران - جنب دانشگاه آزاد واحد تهران مرکز - ساختمان تنکابن - پلاک 352 - طبقه 6 - واحد 31
تلفن: +98 21 77513268 -77512236 -77613815 -09197371329
طراحی و تولید: ایده پرداز طلوع