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
امید مهاجرانی
یک نظر اضافه کنید
شماره موبایل شما منتشر نخواهد شد.زمینه های مورد نیاز هستند علامت گذاری شده *
امتیاز شما