22
Hướng dẫn xây dựng hệ thống Asterisk server 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 2. Cài đặt Asterisk 2.1. 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

Hướng dẫn xây dựng hệ thống Asterisk server

Embed Size (px)

Citation preview

Page 1: Hướng dẫn xây dựng hệ thống Asterisk server

Hướng dẫn xây dựng hệ thống Asterisk server

 

1.   Yêu cầu phần cứngTù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ểuThử nghiệm, học tập 1-5 400-MHz x86, 256 MB

RAMHệ 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

 

2. Cài đặt Asterisk

2.1. 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

Page 2: Hướng dẫn xây dựng hệ thống Asterisk server

Hình 1:                       Mô hình kết nối phần cứng Asterisk server

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

Hiện tại tôi sử dụng hai card để nghiên cứu và xây dựng tài liệu này đó là card TDM400P. (01 card 4 port FXO –TDM04B và 01 card 4 port FXS – TDM40B)

2.2. 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 Redhat linux 9.0

     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:

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

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

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

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

     Thư viện libnewt và gói devel liên quan để biên dịch zaptel driver

Tóm lại: Các gói phần mềm cần thiết ở thời điểm hiện tại bao gồm

Page 3: Hướng dẫn xây dựng hệ thống Asterisk server

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 RedhatLinux 9.0 (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.

2.3. 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

2.3.1. 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:

Page 4: Hướng dẫn xây dựng hệ thống Asterisk server

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

Trước khi biên dịch, ta có thể thay đổi một số tham số trong file zconfig.h. Các tham số này sẽ ảnh hưởng đến hoạt động của trình điều khiển sau khi biên dịch. Một số tham số có thể thay đổi và tính năng của chúng được mô tả trong bảng sau:

Tính năng Cấu hình mặc địnhBoost ringer /* #define BOOST_RINGER */

Disable m-law/A-law precomputation /* #define CONFIG_CALC_XLAW */

Enable MMX optimization /* #define CONFIG_ZAPTEL_MMX */

Choose echo cancellation method /* #define ECHO_CAN_STEVE */

/* #define ECHO_CAN_STEVE2 */

/* #define ECHO_CAN_MARK */

#define ECHO_CAN_MARK2

/* #define ECHO_CAN_MARK3 */Enable aggressive suppression /* #define AGGRESSIVE_SUPPRESSOR */

Disable echo cancellation /* #define NO_ECHOCAN_DISABLE */

Enable HDLC /* #define CONFIG_ZAPATA_NET */

Enable ZapRAS /* #define CONFIG_ZAPATA_PPP */

Enable Zaptel’s watchdog /* #define CONFIG_ZAPTEL_WATCHDOG */

Set default tone zone #define DEFAULT_TONE_ZONE 0

Enable CAC ground start signaling /* #define CONFIG_CAC_GROUNDSTART */

TDM400P Revision H PCI ID workaround

/* #define TDM_REVH_MATCHALL */

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

Page 5: Hướng dẫn xây dựng hệ thống Asterisk server

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

Để kiểm tra module zaptel đã được nạp vào bộ nhớ chưa, ta dùng lệnh lsmod. Kết quả lệnh thực lsmod của tôi như sau:

Chú ý các dòng gạch chân chính là module điều khiển thiết bị zaptel

Ta có thể thay đổi tham số của module wctdm bằng lệnh modprobe để tối ưu hóa hoạt động của module này. Vấn đề này sẽ được tìm hiểu và trình bày sau.

2.3.2. 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

cd /usr/src/asterisk-version

make distclean

./configure

make

make install

Page 6: Hướng dẫn xây dựng hệ thống Asterisk server

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. Thiết lập cấu hình Asterisk server

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…

Page 7: Hướng dẫn xây dựng hệ thống Asterisk server

/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.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/conf (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.3. Cấu hình card giao tiếp zaptel

Trong thí nghiệm này, tôi sử dụng hai server để lắp đặt hai card zaptel khác nhau đó là card 4 cổng FXO TDM04B và card 4 cổng FXS TDM40B. Như đã trình bày ở trên, cổng FXO được sử dụng để kết nối với đường dây của nhà cung cấp dịch vụ điện thoại, cổng FXS được sử dụng để kết nối các điện thoại analog thông thường với Asterisk server. Điểm khác biệt dễ nhận biết nhất giữa hai loại cổng này đó là cổng FXS cung cấp âm quay số (dial tone) trong khi cổng FXO thì không có. Do vậy khi ta kết nối một điện thoại analog vào cổng FXS, ta sẽ thấy âm chờ quay số ở điện thoại trong khi nếu nối vào cổng FXS thì sẽ không có âm này. Chính vì vậy, khi gắn card có cổng FXS vào máy tính, cần phải cấp nguồn cho các cổng FXS để card này có thể phát âm quay số và phát báo hiệu chuông tới điện thoại. Trên module FXS có cổng để kết nối nguồn điện từ máy tính vì vậy cần chú ý kết nối nguồn cho module này.

Page 8: Hướng dẫn xây dựng hệ thống Asterisk server

Các cổng giao tiếp sẽ được định nghĩa và xác định dựa vào kiểu báo hiệu nó sử dụng trong file cấu hình zaptel.conf. Cổng FXO sẽ được khai báo sử dụng kiểu báo hiệu FXS và tương ứng cổng FXS sẽ được khai báo sử dụng kiểu báo hiệu FXO.

Dưới đây, tôi xin trình bày việc cấu hình với từng loại cổng giao tiếp và thử nghiệm chúng theo từng bước

Cấu hình file zaptel.conf

Cấu hình file zapata.conf

Đặt kịch bản cuộc gọi

Kiểm tra hoạt động

3.3.1. Cấu hình cổng FXO

Các tham số tối thiểu cần đặt trong file /etc/zaptel.conf như sau:

fxsks=1,2,3,4

loadzone=us

defaultzone=us

Dòng đầu tiên chỉ ra báo hiệu sử dụng là fxsks cho các cổng từ 1 đến 4 (do toàn bộ 4 cổng của card đều là FXO). FXS chỉ ra kiểu báo hiệu còn KS là loại giao thức. Có ba loại giao thức như sau:

Loop start (ls):

Ground start (gs):

Kewlstart (ks): Tối ưu loop start với khả năng nhận biết kết nối xa hơn và thường được lựa chọn làm giao thức báo hiệu mạch analog cho asterisk

Tham số loadzone chỉ ra tập các tham số như nhạc chuông, báo bận… được sử dụng cho các cổng tương ứng. Tham số defaultzone sẽ được sử dụng nếu không đặt loadzone cho cổng này.

Sau khi thiết lập cấu hình zaptel, nạp lại module cho thiết bị bằng lệnh sau:

/etc/init.d/zaptel restart

Hoặc nạp trực tiếp module vào nhân

modprobe wctdm

Page 9: Hướng dẫn xây dựng hệ thống Asterisk server

Chú ý: Có thể lệnh khởi động trên sẽ gặp thông báo bận do module đang được sử dụng bởi Asterisk. Nếu gặp thông báo này, ta tắt chương trình asterisk bằng lệnh sau:

killall -9 asterisk

Rồi thực thi lại các lệnh ở trên

Sau khi nạp được module, kiểm tra lại hệ thống bằng lệnh ztcfg:

ztcfg –vv

Sau đây là kết quả của tôi:

Tiếp theo, ta sẽ cấu hình cho Asterisk giao tiếp với card zaptel bằng các tham số trong file zapata.conf như sau:

[trunkgroups]

; Định nghĩa các nhóm trung kế tại đây. Mặc định có thể bỏ qua

 

[channels]

 

; Các giá trị mặc định

usecallerid=yes

hidecallerid=no

callwaiting=no

threewaycalling=yes

transfer=yes

Page 10: Hướng dẫn xây dựng hệ thống Asterisk server

echocancel=yes

echotraining=yes

 

; Định nghĩa các cổng

context=incoming ; Cuộc gọi đến sẽ ứng với context [incoming]

signalling=fxs_ks ; Dùng kiểu báo hiệu FXS cho cổng FXO

channel => 1 ; Đường thoại PSTN gắn tại cổng số 1

callerid=incoming <123> ; Định nghĩa ID cho cuộc gọi đến

 

Khi có cuộc gọi đến cổng số 1, Asterisk server sẽ phải thực thi các tác vụ để đáp ứng cuộc gọi. Như cấu hình ở trên, Asterisk server sẽ tìm đến kịch bản cuộc gọi tại context [incoming] trong file extension.conf. Để tạo kịch bản test, trong file extension.conf ta thêm một kịch bản như sau:

[incoming]

; incoming calls from the FXO port are directed to this context

from zapata.conf

exten => s,1,Answer( )

exten => s,2,Echo( )

Với kịch bản trên, các cuộc gọi đến sẽ được kết nối với một bộ lặp để nhắc lại lời người gọi.

Để kiểm tra card, sử dụng lệnh zttool để theo dõi hoạt động của thiết bị, khi kết nối line thoại vào cổng số 1 thì thông tin hiển thị tại zttool hình dưới đây:

Chú ý số 1 được gạch chân hiển thị 01 đường kết nối.

Page 11: Hướng dẫn xây dựng hệ thống Asterisk server

Sử dụng một điện thoại khác (di động hoặc cố định) gọi đến số thuê bao của line thoại gắn vào card thì Asterisk server sẽ nhấc máy và khởi động bộ lặp hoạt động.

3.3.2. Cấu hình cổng FXS

Cũng giống như với cổng FXO, cấu hình cổng FXS được thực hiện với tham số cấu hình tại các file như sau

File zaptel.conf

fxoks=1-4 ; Chú ý fxoks cho cổng FXS

loadzone=us

defaultzone=us

Load lại module bằng lệnh /etc/init.d/zaptel restart rồi dùng lệnh ztcfg –vv cho kết quả như sau

Trong file zapata.conf

[trunkgroups]

; Mặc định bỏ qua

 

[channels]

; Các giá trị cấu hình mặc định

usecallerid=yes

hidecallerid=no

callwaiting=no

threewaycalling=yes

transfer=yes

Page 12: Hướng dẫn xây dựng hệ thống Asterisk server

echocancel=yes

echotraining=yes

immediate=no

 

; Tham số khai báo cho cổng FXS

context=internal ; Sử dụng context [internel] cho cuộc gọi đi

signalling=fxo_ks ; Dùng báo hiệu FXO cho cổng FXS

channel => 1 ; Điện thoại nối với cổng 1

Để kiểm tra thiết bị, tôi tạo một kịch bản gọi lặp với số gọi đến là 1080 trong file cấu hình extension.conf như sau

[internal]

exten => 1080,1,Answer( )

exten => 1080,2,Echo( )

Gắn đường thoại từ một điện thoại analog vào cổng số 1 trên card, sử dụng công cụ zttool để kiểm tra thiết bị tôi được kết quả như sau:

Khi chưa nhấc máy điện thoại

Khi nhấc máy

Page 13: Hướng dẫn xây dựng hệ thống Asterisk server

Máy điện thoại phát âm mời quay số, quay 1080 để khởi động bộ lặp của Asterisk server. (Chú ý chỉ khi khởi động Asterisk server thì mới có âm mời quay số tại máy điện thoại, khi Asterisk chưa khởi động thì chỉ có tín hiệu báo tới máy điện thoại chứ không có âm mời quay số).

3.4. Cấu hình người dùng và sử dụng softphone sử dụng

Trong phần này, tôi sẽ trình bày về cách cấu hình để thêm người dùng sử dụng dịch vụ VoIP cho Asterisk server. Có nhiều loại người dùng tương ứng với các giao thức báo hiệu khác nhau được sử dụng trong Asterisk server tuy nhiên có hai dạng thường được sử dụng nhất đó là SIP và IAX. SIP là giao thức báo hiệu có tính mở cao, được sử dụng phổ biến trong nhiều thiết bị VoIP hiện tại. Tuy nhiên nó có một điểm yếu đó là khả năng hoạt động bị giới hạn khi NAT giữa các lớp mạng khác nhau. Thông tin cụ thể về giao thức báo hiệu này sẽ được trình bày trong một phần khác.

Giao thức báo hiệu thứ hai thường được sử dụng với Asterisk đó là IAX (Inter-Asterisk-eXchange). Đây là một giao thức thường được sử dụng để kết nối giữa các Asterisk server với nhau. Ngoài ra IAX còn được sử dụng cho các server dạng FWD (Free World Dialup) khi người dùng không cần quan tâm đến hệ thống mạng của server cũng như client. Tuy nhiên, không nhiều các thiết bị VoIP hỗ trợ giao thức này.

3.4.1. Cấu hình SIP

Thông tin về SIP được đặt trong file cấu hình sip.conf với các tham số được chia làm hai phần:

- Phần tham số chung: Chứa các tham số chung cho toàn bộ Asterisk server

- Phần người dùng: Chứa thông tin về từng người dùng

File sip.conf chứa các tham số đơn giản nhất sẽ như sau:

[general]

context=default

srvlookup=yes

 

;Phần sau khai báo người dùng huydd với mật khẩu là “matkhau”

[huydd]

type=friend

secret=matkhau

Page 14: Hướng dẫn xây dựng hệ thống Asterisk server

qualify=yes

nat=no ; Không sử dụng NAT

host=dynamic ; Địa chỉ sẽ được xác định khi đăng ký SIP

canreinvite=no

context=internal ; Sử dụng context internal cho huydd

 

3.4.2. Cấu hình IAX

Tương tự như với SIP, các tham số IAX đặt trong file iax.conf cũng bao gồm hai phần chính đó là phần chứa tham số chung [general] và phần cho từng người dùng. File cấu hình đơn giản iax sẽ chứa thông tin như sau:

[general]

bandwidth=low

disallow=lpc10

jitterbuffer=no

forcejitterbuffer=no

tos=lowdelay

autokill=yes

 

; Khai báo người dùng huydd_iax với mật khẩu “matkhau”

[huydd_iax]

type=friend

callerid=huydd_iax ;Thông tin hiển thị khi gọi đến

username=huydd_iax

secret=matkhau

Page 15: Hướng dẫn xây dựng hệ thống Asterisk server

context=internal

host=dynamic

 

3.4.3. Cấu hình và sử dụng softphone

Có nhiều softphone hỗ trợ SIP có thể sử dụng với Asterisk server mà thông dụng nhất đó là sản phẩm Xlite và EyeBeam của CounterPath Solutions. Có thể download bản dùng thử với các tính năng cơ bản tại http://www.counterpath.com/xlitedownload.html

Để cấu hình tài khoản SIP cho Xlite, ta nhập các thông số như hình dưới đây:

Ở đây, máy chủ Asterisk có địa chỉ tương ứng với tên miền sip1.cdit.com.vn

Sau khi nhập thông tin về người dùng, Xlite sẽ tiến hành đăng ký với Asterisk server. Trong trường hợp đăng ký thành công, server sẽ hiện thị thông tin log (gõi lệnh asterisk –rvvvvvv trước khi chạy Xlite trên máy trạm để hiển thị thông tin) như sau

Còn trên cửa sổ Xlite sẽ hiển thị người dùng đang đăng ký hiện tại

Page 16: Hướng dẫn xây dựng hệ thống Asterisk server

Với giao thức IAX, do được thiết kế riêng cho báo hiệu liên server nên không nhiều softphone hỗ trợ giao thức này. Ở đây tôi sử dụng sản phẩm softphone Firefly của hãng Frehstel. Các tham số cấu hình được thiết lập cho người dùng IAX được mô tả như hình dưới đây:

Sau khi nhập thông tin, trên Asterisk server sẽ hiển thị thông tin như hình dưới đây cho biết đăng ký thành công

Ta có thể dùng các softphone ở trên để quay đến số 1080 đã thiết lập ở các phần trước để kiểm tra.

3.5. Kịch bản cuộc gọi (dial plan)

Có thể coi dialplan chính là trái tim của hệ thống Asterisk. Nó sẽ quyết định Asterisk server làm gì với các cuộc gọi đến, các số gọi đi. Thực chất, dialplan chính là một dãy các chỉ thị mà Asterisk server thực hiện theo ứng với một điều kiện đầu vào tương ứng với số gọi đi hoặc đến.

Page 17: Hướng dẫn xây dựng hệ thống Asterisk server

Các chỉ thị này được đặt trong file cấu hình extension.conf và các file include liên quan được chỉ ra trong file extension.conf.

Kịch bản cuộc gọi trong Asterisk server được phân thành các vùng khác nhau được gọi là context. Mỗi người dùng hoặc các phần tử hệ thống thuộc các context khác nhau thực hiện theo các chỉ thị của context đó. Theo như hướng dẫn cấu hình ở các phần trên, hiện tại chúng ta cần cấu hình 2 context:

-         Internal: Cho các thiết bị nối vào cổng FXS và các thuê bao SIP, IAX gọi lẫn nhau và gọi qua PSTN

-         Incoming: Cho kết nối gọi vào từ mạng PSTN

Ngoài ra, hệ thống còn một context chung chứa các tham số tổng quát đó là general. Mỗi context sẽ được đặt trong một vùng bắt đầu bằng ký hiệu tên context trong cặp ngoặc [], ví dụ [incoming]. Dưới đây tôi sẽ khai báo kịch bản cuộc gọi phục vụ mục tiêu sau:

-         Cuộc gọi đến từ mạng PSTN sẽ được chuyển đến địa chỉ thuê bao SIP huydd

-         Cuộc gọi đến các thuê bao SIP sẽ chuyển tới đia chỉ tương ứng

-         Cuộc gọi đến các thuê bao mạng PSTN sẽ bắt đầu với đầu số 9

File cấu hình extension.conf như sau:

[general]

static=yes

writeprotect=no

clearglobalvars=no

userscontext=internal

 

[incoming]

exten => s,1,Dial(SIP/huydd)

 

[internal]

exten => _[a-z].,1,Dial(SIP/${EXTERN},30)

Page 18: Hướng dẫn xây dựng hệ thống Asterisk server

exten => _[a-z].,1,Hangup()

 

exten => _9.,1,Dial(Zap/g1/${EXTERN:1})

exten => _9.,2,Hangup()

 

Đến đây ta có thể sử dụng softphone cũng như điện thoại để kiểm tra và thử nghiệm hệ thống

4. Kết luậnChỉ với một số thiết bị phần cứng đơn giản kết hợp với asterisk, chúng ta hoàn toàn có thể tổ chức một tổng đài hoàn chỉnh để thử nghiệm dịch vụ VoIP cũng như kết nối giữa mạng IP và PSTN. Hướng dẫn trên đây mới chỉ là một số bước cơ bản để thiết lập hệ thống. Còn rất nhiều chủ đề liên quan để có thể tối ưu cũng như làm phong phú thêm kịch bản dịch vụ mà tôi chưa có đủ thời gian nghiên cứu và trình bày ở đây. Tuy nhiên tôi hi vọng sẽ có dịp để nghiên cứu và trình bày thêm về hệ thống rất thú vị này. Mọi thông tin trao đổi xin gửi đến [email protected]