Cài đặt Asterisk

Một phần của tài liệu nghiên cứu triển khai hệ thống voip cho doanh nghiệp (Trang 39 - 101)

3.2.1. Yêu cầu phần cứng

Tùy theo mục đích sử dụng và số lượng người dùng hệ thống sẽ được trang bị phần cứng theo các mức độ khác nhau. Dưới đây là một khuyến nghị từ cộng đồng sử dụng asterisk.

Mục đích Số lượng các kênh Cấu hình tối thiểu

Thử nghiệm, học tập 1-5 400-MHz x86, 256 MB RAM

Hệ thống cho văn phòng hoặc

nhà riêng 5-10 1-GHz x86, 512 MB RAM

Hệ thống cho doanh nghiệp

nhỏ Tới 15 kênh 3-GHz x86, 1 GB RAM

Hệ thống thương mại cỡ vừa và

lớn Hơn 15

Dual CPUs hoặc triển khai trên nhiều server

3.2.2. Lắp đặt phần cứng

Máy chủ: chú ý thông số điện thế trên khe PCI phải tương thích với các card giao tiếp cần kết nối

Card giao tiếp mạng: Kết nối máy chủ với mạng IP

Card giao tiếp analog: Kết nối máy chủ với mạng PSTN. Card này có hai loại : FXO – Foreign eXchange Office – Kết nối tới nhà cung cấp PSTN

FXS – Foreign eXchange Station – Kết nối các điện thoại PSTN vào PBX

Thông tin về các loại card cũng như giá cả của chúng có thể tham khảo tại trang web http://www.digium.com

3.2.3. Yêu cầu phần mềm

• Hệ điều hành: Linux based. Để thử nghiệm và xây dựng tài liệu này, tôi sử dụng bản phân phối CentOS 5.6

• Gói phần mềm asterisk: Download từ asterisk. http://www.asterisk.org/downloads

• Zapata driver – zaptel trong trường hợp sử dụng các card kết nối FXO/FXS để nối với mạng PSTN. Nếu hệ thống ko sử dụng các card này (chỉ là IP đơn thuần) thì có thể sử dụng module ztdummy thay thế. Zapata driver có thể download tại http://downloads.digium.com/pub/telephony/zaptel/

• Các yêu cầu về thư viện và trình biên dịch:

o Trình biên dịch gcc phiên bản 3.x trở lên

o Gói mã nguồn nhân kernel-source (với phiên bản nhân 2.4)

o Thư viện bison: giúp asterisk phân tích câu lệnh CLI

o Thư viện openssl và openssl-devel trợ giúp việc mã hóa

o Thư viện libnewt và gói devel liên quan để biên dịch zaptel driver Các gói phần mềm cần thiết ở thời điểm hiện tại bao gồm

• asterisk-1.4.4.tar.gz • zaptel-1.4.2.1.tar.gz

Các gói rpm cần cài đặt thêm cho bản CentOS 5.6 (nếu chưa cài) • gcc-3.2.2-5 • bison-1.35-6 • openssl-devel-0.9.7a-2 • openssl-0.9.7a-2 • newt-0.51.4-1 • newt-devel-0.51.4-1

• kernel-source-2.4.20-8

Chú ý : khi cài các gói trên sẽ có thông báo cần cài đặt một số gói khác liên quan. 3.2.4. Biên dịch và cài đặt

Để đơn giản, ta copy các file nén vào thư mục /usr/src rồi dùng lệnh sau giải nén :

cd /usr/src/

tar -zxvf zaptel-*.tar.gz tar -zxvf asterisk-*.tar.gz

Sau khi giải nén, ta có các thư mục chứa mã nguồn tương ứng. Thực hiện biên dịch và cài đặt cho với từng gói này như các phần dưới đây

Biên dịch và cài đặt Zaptel

Asterisk sử dụng module chan_zap để giao tiếp với nhân hệ điều hành và điều khiển phần cứng. Giao diện điều khiển zaptel là một module động được nạp vào nhân hệ điều hành. Ở đây chúng ta sẽ biên dịch và sử dụng hai module chính đó là zaptel.o và wctdm.o

Để biên dịch được module zaptel trong với nhân hệ điều hành Redhat Linux 9.0 (bản nhân 2.4), trình biên dịch cần tìm kiếm các file tiêu đề và thư viện kernerl- source tại thư mục /usr/linux-2.4. Tuy nhiên, gói kernel-source lại đặt các file này trong thư mục /usr/src/linux-2.4.20-8. Vậy nên cần tạo một slink với tên linux-2.4 đến thư mục này như sau:

ln –s /usr/src/linux-2.4.20-8 /usr/srv/linux-2.4

Thông tin cụ thể về tính năng cũng như tối ưu hóa thiết bị dựa trên các tham số này sẽ được tìm hiểu và trình bày trong một phần khác. Để đơn giản, tôi sử dụng thông số mặc định để biên dịch và cài đặt module zaptel. Các lệnh biên dịch và cài đặt như sau:

cd /usr/src/zaptel-version make distclean

./configure make

make install make config

Lưu ý với lệnh ./configure, chúng ta có thể thêm vào một số tham số. Để biết chi tiết các tham số này, gõ lệnh ./configure –help. Lệnh make config sẽ tạo script trong thư mục khởi động hệ điều hành để nạp module vào nhân khi hệ thống khởi động.

Với lệnh make instal, module zaptel và một số ứng dụng sẽ được cài đặt vào hệ thống trong đó có hai công cụ hỗ trợ rất hiệu quả đó là ztcfg và zttool. Công cụ ztcfg dùng để kiểm tra và cấu hình thiết bị dựa trên file cấu hình /etc/zaptel.conf. Công cụ zttool được sử dụng để kiểm tra trạng thái của thiết bị. Sử dụng lệnh man để xem thông tin chi tiết về hai chương trình này.

Để bắt đầu khởi động trình điều khiển thiết bị, tôi sử dụng lệnh sau đây:

/etc/init.d/zaptel start

Biên dịch Asterisk

Để biên dịch và cài đặt mặc định, ta thực hiện các lệnh sau

make config cd /usr/src/asterisk-version make distclean ./configure make make install make samples

Lệnh make samples sẽ tạo ra các file cấu hình mẫu với các tham số mặc định giúp cho việc thiết lập và cài đặt asterisk được nhanh chóng và dễ dàng hơn. Chúng ta sẽ điều chỉnh các tham số này trong các phần sau.

Sau khi biên dịch và cài đặt thành công, chúng ta có thể khởi động và sử dụng Asterisk với các tham số mặc định như trên. Có nhiều cách để khởi động asterisk nhưng cách đơn giản nhất là thực hiện lệnh sau:

/usr/sbin/asterisk

Để vào chế độ dòng lệnh của asterisk ta dùng một trong hai cách sau

/user/sbin/asterisk –cvvvv

Nếu asterisk chưa chạy hoặc

/user/sbin/asterisk –rvvvv

Nếu asterisk đang hoạt động

Để tạo các script khởi động asterisk khi boot hệ thống, sử dụng lệnh sau khi

make install make config

3.3. Cấu trúc hệ thống Asterisk 3.3.1. Cấu trúc thư mục của Asterisk

Asterisk sử dụng một số thư mục trong hệ thống file Linux để lưu trữ các lệnh thực thi, dữ liệu và các tham số cấu hình. Vị trí và tên các thư mục này có thể thay đổi khi ta biên dịch hệ thống (khi chạy lệnh configure trước khi make – gõ ./configure –help để xem chi tiết). Theo mặc định, Asterisk sử dụng các thư mục sau:

/etc/asterisk: Chứa các file cấu hình của Asterisk (trừ file zaptel.conf được đặt tại thư mục /etc)

/usr/lib/asterisk/modules: Chứa các module động của Asterisk server. Các module này sẽ được nạp khi chạy hoặc khởi động lại dịch vụ

/var/lib/asterisk: Chứa các file và một số thư mục dữ liệu phục vụ cho hoạt động của Asterisk như các file sound, các file thực thi kịch bản cuộc gọi, khóa mã hóa dữ liệu…

/var/spool/asterisk/: Chứa một số file và thư mục liên quan đến hoạt động của Asterisk server như lưu trữ voice mail, ghi nhớ cuộc gọi…

/var/run/: Chứa file ghi process ID của Asterisk server phục vụ việc quản lý tiến trình

/var/log/asterisk/: Chứa các file log hoạt động của Asterisk server trong đó có thư mục /var/log/asterisk/cdr-csv chứa dữ liệu phục vụ việc ghi cước sử dụng

Ngoài ra, các lệnh thực thi của Asterisk server được lưu trữ trong các thư mục của hệ thống như /usr/sbin, /user/lib …

3.3.2. Các file cấu hình của Asterisk

Ngoại trừ file cấu hình thiết bị zaptel.conf, các file chứa các tham số cấu hình của Asterisk server đều được đặt trong thư mục /etc/asterisk (theo mặc định). Asterisk sử dụng rất nhiều tham số cấu hình trong các file khác nhau để thiết lập các tham số hoạt động của dịch vụ như tham số trả lời tự động (amd.conf), tham số phục vụ ghi cước (cdr.conf), tham số mã hóa (codecs.conf). Ở đây tôi chỉ xin tập trung vào một số file cấu hình chính quyết định đến hoạt động của Asterisk server như kịch bản cuộc gọi, dữ liệu người dùng, kết nối PSTN… Các tham số khác có thể thiết lập mặc định nhờ lệnh make samples như hướng dẫn ở phần trên.

Chúng ta sẽ cần xem xét các tham số cấu hình trong các file sau: • zaptel.conf : Các tham số cấu hình cho trình điều khiển card giao tiếp • zapata.conf : Cấu hình cho asterisk giao tiếp với phần cứng

• extensions.conf : Thiết lập các kịch bản cuộc gọi

• sip.conf : Thông tin cấu hình người dùng và giao thức báo hiệu SIP • iax.conf : Thông tin cấu hình người dùng và cuộc gọi theo kênh IAX

Chú ý khi thay đổi các tham số trong các file cấu hình trên, cần khởi động lại Asterisk server để dịch vụ hoạt động với các tham số mới.

3.4. Dịch vụ tính cước phí A2billing trên Asterisk3.4.1. Giới thiệu 3.4.1. Giới thiệu

A2billing là một mã nguồn mở được dùng để triển khai thanh toán cước phí viễn thông (voip) và hỗ trợ tính cước phí cho tổng đài asterisk.

A2billing là cần cài đặt ứng dụng LAMP (yêu cầu hệ thống phải có : linux, Apache, Mysql (PostgreSQL), PHP),cấu hình thông qua giao diện web.

3.4.2. Tìm hiểu a2billing

Mô hình bao gồm 2 phần chính là hệ thống tổng đài asterisk và phần quản lý các chức năng sử dụng A2Billing.

• Phần hệ thống tổng đài Asterisk: là phần thể hiện việc quản lý các thuê bao người dùng(Extensions). Các thuê bao này có thể nạp tiền vào tài khoản của mình và thực hiện cuộc gọi cho đến khi hết tiền hoặc hết thời gian sử dụng dịch vụ.

• Phần A2Billing: được chia ra làm 2 phần nhỏ là phía người quản trị và phía giao diện người dùng. Ở phía người quản trị ta có thể quản lý mọi họat động của các thuê bao với quyền cao nhất. Phần này cũng cho phép chúng ta tạo ra và quản lý các loại thẻ, bảng giá dịch vụ, hóa đơn,... Còn ở phía giao diện người dùng cho phép người dùng có cách nhìn tổng quan nhất về dịch vụ mà mình đang sử dụng như thông tin tài khoản, lịch sử cuộc gọi, hóa đơn liên quan....

Trong mô hình minh họa các thực thể chính ảnh hưởng và tương tác với nhau đó là:

• Cuộc gọi sẽ được cài đặt trên nền tảng asterisk

• Sự xác thực thông qua các trường chính là cardnumber, callerID,Sip/iAX friends với tài khoản mà bạn đăng nhập.

• Các loại card có thuộc tính khác nhau nhưng phần chính là tariffgroup(nhóm bảng giá) luôn liên kết với nhau. Tariffgroup sẽ được xác định rõ trong quy trình tính cước.Tariffgroup có thể hiểu là một hoặc nhiều loại card. Mỗi loại card đều bao gồm thông tin về một hoặc nhiều nơi đến(và có nhiều mức cho các nơi đến khác nhau).

• Quy tắc chính của Tariffgroup là tất cả các thực thể sẽ quyết định tới mức giá cho người sử dụng nếu có nhiều mức giá cho một nơi đến(chúng ta sẽ thấy sự cần thiết trong mỗi loại thẻ).

• LCR/LCD(chi phí tối thiểu cho 1 lộ trình/một nhóm) là 2 thuộc tính có thể định nghĩa và cùng nhau đưa ra tính xác thực cho sự hoàn thành thích hợp.

3.4.3. Cài đặt A2billing

A2Billing, kết hợp với Asterisk, tạo nên hệ thống VoIP có tính cước tuyệt vời, mà lại hoàn toàn miễn phí. Bản A2Billing 1.7.1 có nhiều cải tiến, và một trong số đó là script đơn giản hóa quá trình cài đặt (tạo database,cài đặt file âm thanh cho a2billing). 3.4.3.1. Yêu cầu hệ thống: • Trixbox 2.8.0.4 (Asterisk 1.6 • A2billing 1.7.1 source. • Database: MySQL. • Linux: CentOS 5. • PHP 5.

• Web server (apache).

3.4.3.2. Hướng dẫn cài đặt:

• Cài các gói phụ thuộc:

# yum -y install perl-DBD-Pg subversion php

• Tải A2Billing

# mkdir /usr/local/src/a2billing # cd /usr/local/src/a2billing

• Chép và giải nén a2billing vào thư mục /usr/local/src/a2billing

# tar xvzf A2Billing_1.7.1.tar.gz

• Sao chép a2billing.conf trong /usr/local/src/a2billing/a2billing.conf vào thư mục

/etc/a2billing.conf cp a2billing.conf /etc

• Tạo database & user cho a2billing

# cd /usr/local/src/a2billing/DataBase/mysql-5.x # bash install-db.sh

Install A2Billing DataBase --- Enter Database Name : mya2billing Enter Hostname : localhost Enter UserName : root Enter Password : passw0rd

mysql --user=root --password=passw0rd --host=localhost mya2billing

Kiểm tra lại bằng phpMyAdmin, bạn sẽ thấy database mya2billing bây giờ đã có 97 tables hay tương tự.

• Chỉnh sửa file /etc/a2billing.conf : phù hợp với bước trên như sau: [database]

hostname = localhost

; port for postgres is 5432 by default port = 3306

user = a2billinguser password = a2billing dbname = mya2billing

; dbtype setting can either be mysql or postgres dbtype = mysql

• Cài đặt AGI và file âm thanh.

# cp /usr/local/src/a2billing/AGI/a2billing.php /var/lib/asterisk/agi- bin/a2billing.php

# /usr/local/src/a2billing/addons/sounds/install_a2b_sounds.sh

Thiết lập ownership cho các file:

# chown -R asterisk:asterisk /var/lib/asterisk/ # chmod 777 /etc/asterisk

# chown -R asterisk.asterisk /usr/local/src/a2billing # chmod +x /usr/share/asterisk/agi-bin/a2billing.php

• Asterisk Manager

Thêm các dòng sau vào file /etc/asterisk/manager_custom.conf (hay manager.conf nếu không dùngFreePBX)

[myasterisk] secret = mycode deny=0.0.0.0/0.0.0.0 permit=127.0.0.1/255.255.255.0 read=system,call,log,verbose,command,agent,user write=system,call,log,verbose,command,agent,user

• Tạo giao diện web

# mkdir /var/www/html/a2billing

# chown asterisk.asterisk /var/www/html/a2billing

# ln -s /usr/local/src/a2billing/admin /var/www/html/a2billing/admin # ln -s /usr/local/src/a2billing/agent /var/www/html/a2billing/agent # ln -s /usr/local/src/a2billing/customer /var/www/html/a2billing/customer # ln -s /usr/local/src/a2billing/common /var/www/html/a2billing/common # chmod 755 /usr/local/src/a2billing/admin/templates_c # chmod 755 /usr/local/src/a2billing/customer/templates_c # chmod 755 /usr/local/src/a2billing/agent/templates_c

# chown -Rf asterisk.asterisk /usr/local/src/a2billing/admin/templates_c # chown -Rf asterisk.asterisk /usr/local/src/a2billing/customer/templates_c

# chown -Rf asterisk.asc

Bây giờ ta có thể truy cập a2billing thông qua trình duyệt web () và login với quyền admin. User và Password mặc định là

user: root pass: changepassword • Tạo tác vụ Cron # vi /etc/crontab Và thêm các dòng sau : 0 6 * * * php /usr/local/src/a2billing/Cronjobs/currencies_update_yahoo.php 0 6 1 * * php /usr/local/src/a2billing/Cronjobs/a2billing_subscription_fee.php 0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_notify_account.php 0 2 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_bill_diduse.php 0 12 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_process.php 0 6 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_billing.php */5 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_autodialer.php 0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_alarm.php

• Tạo các thư mục và file cần thiết # mkdir -p /var/lib/a2billing/script # mkdir -p /var/run/a2billing # touch /var/log/asterisk/a2billing-daemon-callback.log # touch /var/log/a2billing-daemon-callback.log # touch /var/log/cront_a2b_alarm.log # touch /var/log/cront_a2b_autorefill.log # touch /var/log/cront_a2b_batch_process.log # touch /var/log/cront_a2b_bill_diduse.log # touch /var/log/cront_a2b_subscription_fee.log # touch /var/log/cront_a2b_currency_update.log

# touch /var/log/cront_a2b_invoice.log # touch /var/log/a2billing_paypal.log # touch /var/log/a2billing_epayment.log # touch /var/log/api_ecommerce_request.log # touch /var/log/api_callback_request.log # touch /var/log/a2billing_agi.log • Cài Callback

Sau đây là đoạn script cài đặt call-back cho a2billing. Thay thế LOAD_LOC cho phù hợp với thư mụcchứa source a2billing.

# LOAD_LOC=/usr/local/src/a2billing Cài đặt các gói phụ thuộc :

# yum -y install python-setuptools.noarch # yum -y install MySQL-python

# easy_install sqlalchemy # cd $LOAD_LOC/Callback/callback-daemon-py # cp $LOAD_LOC/CallBack/callback-daemon-py/build/lib/callback_daemon/a2b- callback-daemon.rc /etc/init.d/a2b-callback-daemon # chmod +x /etc/init.d/a2b-callback-daemon # cd $LOAD_LOC/CallBack/callback-daemon-py/ # python setup.py build

# python setup.py bdist_egg

# easy_install dist/callback_daemon-1.0.prod_r1528-py2.4.egg # chkconfig –add a2b-callback-daemon

# service a2b-callback-daemon start # chkconfig a2b-callback-daemon on

• Tạo Dialplan

Một phần của tài liệu nghiên cứu triển khai hệ thống voip cho doanh nghiệp (Trang 39 - 101)

Tải bản đầy đủ (DOC)

(101 trang)
w