You are on page 1of 72

Chương 1 TỔNG QUAN VỀ ASTERISK 5

1.1 GIỚI THIỆU ASTERISK 5

1.2 KIẾN TRÚC ASTERISK 8

1.3 MỘT SỐ TÍNH NĂNG CƠ BẢN 10

1.3.1 Voicemail (hộp thư thoại) 10

1.3.2 Call Forwarding(chuyển cuộc gọi) 10

1.3.3 Caller ID (hiển thị số gọi) 10

1.3.4 Automated attendant (chức năng IVR) 11

1.3.5 Time and Date 11

1.3.6 Call Parking 11

1.3.7 Remote call pickupe 11

1.3.8 Privacy Manager 12

1.3.9 Backlist 12

1.4 Các ngữ cảnh ứng dụng 12

1.4.1 Tổng đài voip IP PBX 12

1.4.2 Kết nối IP PBX với PBX 14

1.4.3 Kết nối giữa các server Asterisk 15

1.4.4 Các ứng dụng IVR, VoiceMail, Điện Thoại Hội Nghị 16

1.4.5 Chức năng Phân phối cuộc gọi tự động ACD 17


Sách Asterisk – http://my.opera.com/asteriskvn

Chương 2 Các KHÁI NIỆM TRONG HỆ THỐNG ASTERISK 18

2.1 GIỚI THIỆU 18

2.2 PBX - Private Branch Exchange 18

2.3 VOIP - Voice Over Internet Protocol 19

2.4 PSTN – Public Switched Telephone Network 20

2.5 TDM – Time Division Multiplexing 20

2.6 Các hình thức báo hiệu giao tiếp TDM. 21

2.6.1 FXO và FXS 21

2.6.2 Báo hiệu Analog giữa đầu cuối và tổng đài 22

2.6.3 Báo hiệu giữa các tổng đài 23

2.7 Báo Hiệu trên mạng điện thoại VoIP 23

2.7.1 SIP Session Initiation Prorocol 23

2.7.2 Proxy server 23

2.7.3 RTP vá NAT 24

2.7.4 IAX – Inter Asterisk eXchange 25

2.8 Thiết Bị VoIP 26

2.8.1 Voip Phone 26

2.8.2 Softphone 26

Tác Giả Lê Quốc Toàn

2
Sách Asterisk – http://my.opera.com/asteriskvn

2.8.3 Card giao tiếp với PSTN 27

2.8.4 ATA Analog Telephone Adaptors 27

2.9 Codecs 28

2.10 QoS – Quality of Service 28

2.10.1 Độ trễ 29

2.10.2 Độ trượt(Jitter) 29

Chương 3 CÀI ĐẶT ASTERISK 31

3.1 Cài đặt Asterisk 31

3.1.1 Download và bung nén 31

3.1.2 Cài đặt gói Zaptel 32

3.1.3 Cài đặt gói libpri 33

3.2 Cài đặt gói Asterisk 33

3.3 Cài đặt TrixBox 34

3.3.1 Giới thiệu 34

3.3.2 DOWNLOAD VÀ LẮP ĐẶT TRIXBOX 35

3.3.3 Cấu hình địa chỉ IP cho card mạng: 35

3.4 Tổ Chức Thư Mục của Asterisk 36

3.4.1 /etc/asterisk/ 36

Tác Giả Lê Quốc Toàn

3
Sách Asterisk – http://my.opera.com/asteriskvn

3.4.2 /usr/lib/asterisk/modules/ 36

3.4.3 /var/lib/asterisk 37

3.4.4 /var/spool/asterisk/ 38

3.4.5 /var/run/ 39

3.4.6 /var/log/asterisk/ 39

3.4.7 /var/log/asterisk/cdr-csv 40

3.5 Một số lệnh thao tác trên hệ thống asterisk 40

Chương 4 CẤU HÌNH HỆ THỐNG ASTERISK 42

4.1 GIỚI THIỆU 42

4.2 Tập Tin cấu hình 42

4.3 Các kiểu ảnh hưởng trong tập cấu hình 43

4.3.1 Simple Group 44

4.3.2 Option inheritance 44

4.3.3 Complex Entity 45

4.4 Cấu hình giao tiếp với mạng PSTN 46

4.4.1 Ngữ cảnh kết nối 46

4.4.2 Lắp đặt card TDM01B và cấu hình. 46

4.5 Cấu hình Điện thoại IP SIP phone. 47

Tác Giả Lê Quốc Toàn

4
Sách Asterisk – http://my.opera.com/asteriskvn

4.5.1 Phần khai báo Chung 48

4.5.2 Khai báo kênh SIP 49

4.6 Giới Thiệu DialPlan 50

4.6.1 Extentions 51

4.6.2 Priorities – Thứ tự thực hiện 52

4.6.3 Aplications – Các hàm ứng dụng 53

4.6.4 Contexts - Ngữ cảnh 53

4.7 Ngữ cảnh thực hành ứng dụng 55

4.7.1 Bước 1: Cấu hình cho hai sip phone X-lite 8051 và 8052 bằng
cách cấu hình trên file sip.conf như sau: 56

4.7.2 Bước 2: Cấu hình softphone x-lite phía client cho máy 8051 57

4.7.3 Bước 3 : Lập lại bước hai để khai báo máy điện thoại softphone
8052 58

4.8 Tạo diaplan. 58

4.8.1 Thực hiện một ví dụ cơ bản. 58

4.8.2 Các ứng dụng dial(), background() và goto(). 59

Tác Giả Lê Quốc Toàn

5
Sách Asterisk – http://my.opera.com/asteriskvn

1 TỔNG QUAN VỀ ASTERISK

1 GIỚI THIỆU ASTERISK

Hân hạnh chào mừng đến với thế giới diệu kỳ của Astetisk. Asterisk đem đến
cho người sử dụng tất cả các tính năng và ứng dụng của hệ thống tổng đài PBX và
cung cấp nhiều tính năng mà tổng đài PBX thông thường không có được, đó là sự
kết hợp giữa chuyển mạch VOIP và chuyển mạch TDM, đó là khả năng mở rộng
đáp ứng nhu cầu cho từng ứng dụng…

Asterisk là hệ thống chuyển mạch mềm, là phần mềm nguồn mở được viết
bằng ngôn ngữ C chạy trên hệ điều hành linux thực hiện tất cả các tính năng của
tổng đài PBX và hơn thế nữa. Asterisk ra đời vào năm 1999 bởi một chàng trai sinh

Tác Giả Lê Quốc Toàn

6
Sách Asterisk – http://my.opera.com/asteriskvn

năm 1977 tên là Mark Spencer, Anh ta viết phần mềm này ban đầu không ngoài
mục đích hỗ trợ cho công ty của mình trong việc liên lạc đàm thoại hỗ trợ cộng
đồng người sử dụng và phát triển Linux.

Asterisk là một PBX và nhiều hơn thế. Asterisk là một phần mềm mang tính
cách mạng, tin cậy, mã nguồn mở và miễn phí mà biến một PC rẻ tiền thông thường
chạy Linux thành một hệ thống điện thoại doanh nghiệp mạnh mẽ. Asterisk là một
bộ công cụ mã nguồn mở cho các ứng dụng thoại và là một server xử lý cuộc gọi
đầy đủ chức năng. Asterisk là một nền tảng tích hợp điện thoại vi tính hoá kiến trúc
mở. Nhiều hệ thống Asterisk đã được cài đặt thành công trên khắp thế giới. Công
nghệ Asterisk đang phục vụ cho nhiều doanh nghiệp.

Hiện nay Asterisk trên đà phát triển nhanh được rất nhiều doanh nghiệp triển
khai ứng dụng cho công ty của mình. Đây là xu thế tất yếu của người sử dụng điện
thoại, vì các công ty đều có mạng máy tính và cần liên lạc với nhau trong công việc
giữa các phòng ban hoặc chi nhánh và cần một chi phí thấp thậm chí không phải tốn
chi phí khi thực hiện các cuộc gọi trên mạng nội bộ của công ty.

Không gói gọn thông tin liên lạc trong công ty mà các ứng dụng giao tiếp với
mạng PSTN hoặc mạng VOIP (như voice777) cho phép gọi ra bất cứ số điện thoại
nào có trên mạng PSTN.

Ngoài ra việc tích hợp vào các ứng dụng như CRM và hệ thống Outlook làm
cho khả năng ứng dụng của Asterisk linh hoạt hơn đáp ứng nhu cầu cần thiết cho
người sử dụng điện thoại.

Asterisk thoạt đầu được phát triển trên GNU/Linux nền x86 (Intel), nhưng giờ
đây nó cũng có thể biên dịch và chạy trên OpenBSD, FreeBSD và Mac OS X và
Microsoft Windows.

Tác Giả Lê Quốc Toàn

7
Sách Asterisk – http://my.opera.com/asteriskvn

Sơ đồ Tổng quát

Asterisk là hệ thống chuyển mạch tích hợp vừa là công nghệ truyền thống
TDM vừa là chguyển mạch voip. Hình trên cũng cho thấy khả năng giao tiếp của hệ
thống. Giao tiếp với điện thoại analog thông thường, giao tiếp với thiết bị điện thoại
voip, ngoài ra còn có thể giao tiếp với mạng PSTN và các nhà cung cấp voip khác.

2 KIẾN TRÚC ASTERISK

Tác Giả Lê Quốc Toàn

8
Sách Asterisk – http://my.opera.com/asteriskvn

Về cơ bản kiến trúc của Asterisk là sự kết hộp giữa nền tảng công nghệ điện
thoại và ứng dụng điện thoại. công nghệ điện thoại cho VOIP như SIP, H323, IAX,
MGCP... các công nghệ điện thoại cho hệ thống chuyển mạch mạch TDM như T1,
E1, ISDN và các giao tiếp đường truyền thoại Analog. Các ứng dụng thoại như
chuyển mạch cuộc gọi, tương tác thoại, caller ID, voicemail, chuyển cuộc gọi…

Asterisk có một số chức năng chính đóng vai trò quan trọng trong hệ thống
chuyển mạch cuộc gọi. Khi khởi động hệ thống Asterisk thì chức năng Dynamic
Module Loader thực hiện nạp driver của thiết bị, nạp các kênh giao tiếp, các
format, codec và các ứng dụng liên quan, đồng thời các hàm API cũng được liên kết
nạp vào hệ thống.

Tác Giả Lê Quốc Toàn

9
Sách Asterisk – http://my.opera.com/asteriskvn

Sau đó hệ thống PBX Switching Core của Asterisk chuyển sang trạng thái sẵn
sàng hoạt động chuyển mạch cuộc gọi, các cuộc gọi được chuyển mạch tuỳ vào kế
hoạch quay số (Dialplan) được thực hiện cấu hình trong file extension.conf.

Chức năng Application Launchar để rung chuông thuê bao, quay số, định
hướng cuộc gọi, kết nối với hộp thư thoại…

Scheduler and I/O Manager đảm nhiệm các ứng dụng nâng cao, các chức năng
được phát triển bởi cộng đồng phát triển asterisk.

Codec Translator xác nhận các kênh nén dữ liệu ứng với các chuẩn khác nhau
có thể kết hợp liên lạc được với nhau.

Tất cả các cuộc gọi định hướng qua hệ thống Asterisk đều thông qua các giao
tiếp như SIP, Zaptel, IAX. Nên hệ thống Asterisk phải đảm trách nhiệm vụ liên kết
các giao tiếp khác nhau đó để xử lý cuộc gọi.

Hệ thống cũng bao gồm 4 chức năng API chính:

Codec translator API: các hàm đảm nhiệm thực thi và giải nén các chuẩn khác
nhau như G711, GMS, G729…

Asterisk Channel API : Giao tiếp với các kênh liên lạc khác nhau, đây là đầu
mối cho việc kết nối các cuộc gọi tương thích với nhiều chuần khác nhau như SIP,
IAX, H323. Zaptel…

Asterisk file format API : Asterisk tương thích với việc xử lý các loại file có
định dạng khác nhau như Mp3, wav, gsm…

Asterisk Aplication API : Bao gồm tất cả các ứng dụng được thực thi trong hệ
thống Asterisk như voicemail, callerID…

Tác Giả Lê Quốc Toàn

10
Sách Asterisk – http://my.opera.com/asteriskvn

Ngoài ra, Asterisk còn có thư viện Asterisk Gateway Interface (AGI, tương tự
như CGI) - cơ chế kích hoạt ứng dụng bên ngoài, cho phép viết kịch bản phức tạp
với một số ngôn ngữ như PHP hay Perl. Nói chung, khả năng viết các ứng dụng tùy
biến rất lớn.

3 MỘT SỐ TÍNH NĂNG CƠ BẢN

Asterisk có rất nhiều tính năng đã được giới thiệu ở trên nhưng để hiểu rõ hết
tất cả các tính năng trên thật sự là thách thức đối với chúng ta. Trong phần này
chúng tôi sẽ giới thiệu một số tính năng với các ứng dụng cụ thể để hiểu hơn về hệ
thống asterisk.

1 Voicemail (hộp thư thoại)

Đây là tính năng cho phép hệ thống nhận các thông điệp tin nhắn thoại, mỗi
máy điện thoại được khai báo trong hệ thống Asterisk cho phép khai báo thêm chức
năng hộp thư thoại.

Mỗi khi số điện thoại bận hay ngoài “vùng phủ sóng” thì hệ thống asterisk
định hướng trực tiếp các cuộc gọi đến hộp thư thoại tương ứng đã khai báo trước.

Voicemail cung cấp cho người sử dụng nhiều tính năng lựa chọn như :
password xác nhận khi truy cập vào hộp thư thoại, gửi mail báo khi có thông điệp
mới.

2 Call Forwarding(chuyển cuộc gọi)

Khi không ở nhà, hoặc đi công tác mà người sử dụng không muốn bỏ lỡ tất cả
các cuộc gọi đến thì hãy nghĩ ngay đến tính năng chuyển cuộc gọi.

Đây là tính năng thường được sử dụng trong hệ thống Asterisk. Chức năng cho
phép chuyển một cuộc gọi đến một hay nhiều số máy điện thoại được định trước.

Tác Giả Lê Quốc Toàn

11
Sách Asterisk – http://my.opera.com/asteriskvn

Một số trường hợp cần chuyển cuộc gọi như : Chuyển cuộc gọi khi bận,
chuyển cuộc gọi khi không trả lời, chuyển cuộc gọi tức thời, chuyển cuộc gọi với
thời gian định trước.

3 Caller ID (hiển thị số gọi)

Chức năng này rất hữu dụng khi một ai đó gọi đến và ta muốn biết chính xác
là gọi từ đâu và trong một số trường hợp biết chắc họ là ai.

Ngoài ra Caller ID còn là chức năng cho phép chúng ta xác nhận số thuê bao
gọi đến có nghĩa là dựa vào caller ID chúng ta có tiếp nhận hay không tiếp nhận
cuộc gọi từ phía hệ thống Asterisk. Ngăn một số cuộc gọi ngoài ý muốn.

4 Automated attendant (chức năng IVR)

Chức năng tương tác thoại có rất nhiều ứng dụng trong thực tế, khi gọi điện
thoại đến một cơ quan hay xí nghiệp thuê bao thường nghe thông điệp như “Xin
chào mừng bạn đã gọi đến công ty chúng Tôi hãy nhấn phím 1 để gặp phòng kinh
doanh, phím 2 gặp phòng kỹ thuật…” sau đó tuỳ vào sự tương tác của thuê bao gọi
đến, hệ thống Asteisk sẽ định hướng cuộc gọi theo mong muốn.

Khi muốn xem điểm thi, muốn biết tiền cước điện thoại của thuê bao, muốn
biết tỉ giá Đôla hiện nay như thế nào, hay kết quả sổ số … tất các những mong
muốn trên đều có thể thực hiện qua chức năng tương tác thoại.

5 Time and Date

Vào từng thời gian cụ thể cuộc gọi sẽ định hướng đến một số điện thoại hay
một chức năng cụ thể khác, ví dụ trong công ty giám đốc muốn chỉ cho phép nhân
viên sử dụng máy điện thoại trong giờ hành chánh còn ngoài giờ thì sẽ hạn chế hay
không cho phép gọi ra bên ngoài.

Tác Giả Lê Quốc Toàn

12
Sách Asterisk – http://my.opera.com/asteriskvn

6 Call Parking

Đây là chức năng chuyển cuộc gọi có quản lý. Có một số điện thoại trung gian
và hai thuê bao có thể gặp nhau khi thuê bao được gọi nhấn vào số điện thoại mà
thuê bao chủ gọi đang chờ trên đó và từ đây có thể gặp nhau và đàm thoại.

7 Remote call pickupe

Đây là tính năng cho phép chúng ta từ máy điện thoại này có thể nhận cuộc
gọi từ máy điện thoại khác đang rung chuông

8 Privacy Manager

Khi một người chủ doanh nghiệp triển khai Asterisk cho hệ thống điện thoại
của công ty mình nhưng lại không muốn nhân viên trong công ty gọi đi ra ngoài trò
chuyện với bạn bè, khi đó Asterisk cung cấp 1 tính năng tiện dụng là chỉ cho phép
số điện thoại được lập trình được phép gọi đến những số máy cố định nào đó thôi,
còn những số không có trong danh sách định sẵn sẽ không thực hiện cuộc gọi được

9 Backlist

Backlist cũng giống như Privacy Manager nhưng có một sự khác biệt là những
máy điện thoại nằm trong danh sách sẽ không gọi được đến máy của mình (sử dụng
trong tình trạng hay bị quấy rối điện thoại)

Và còn rất nhiều tính năng nữa mà hệ thống asterisk có thể cung cấp cho người
sử dụng, trên đây chỉ là một số tính năng thường được sử dụng mà thôi, Để biết
nhiều hơn chi tiết hơn các tính năng còn lại xin hãy tham quan website
www.asterisk.org.

4 Các ngữ cảnh ứng dụng

Tác Giả Lê Quốc Toàn

13
Sách Asterisk – http://my.opera.com/asteriskvn

Asterisk thực hiện rất nhiều ngữ cảnh ứng dụng khác nhau tuỳ vào nhu cầu sử
dụng, dưới dây là những ngữ cảnh ứng dụng thường được sử dụng trong thực tế
triển khai hệ thống asterisk.

1 Tổng đài voip IP PBX

IP BPX

Tác Giả Lê Quốc Toàn

14
Sách Asterisk – http://my.opera.com/asteriskvn

Đây là hệ thống chuyển mạch voip được xây dựng phục vụ các công ty có nhu
cầu thực hiện trên nền tảng mạng nội bộ đã triển khai. Thay vì lắp đặt một hệ thống
PBX cho nhu cầu liên lạc nội bộ thì nên lắp đặt hệ thống voip điều này sẽ làm giảm
chi phí đáng kể. Hệ thống có thể liên lạc với mạng PSTN qua giao tiếp TDM.

2 Kết nối IP PBX với PBX

Kết nối IP PBX với PBX

Một ngữ cảnh đặt ra ở đây là hiện tại Công ty đã trang bị hệ thống PBX bây
giờ cần trang bị thêm để đáp ứng nhu cầu liên lạc trong công ty sao cho với chi phí
thấp nhất, giải pháp để thực hiện đó là trang bị hệ thống asterisk và kết nối với hệ

Tác Giả Lê Quốc Toàn

15
Sách Asterisk – http://my.opera.com/asteriskvn

thống PBX đang tồn tại qua luồng E1. Ngoài ra để tăng khả năng liên lạc với mạng
PSTN và VOIP khác, Công Ty có thể thực hiện kết nối với nhà cung cấp dịch vụ
voip.

3 Kết nối giữa các server Asterisk

Kết nối giữa các server asterisk

Phương pháp trên ứng dụng rất hiệu quả cho các công ty nằm rãi rác ở các vị
trị địa lý khác nhau nhằm giảm chi phí đường dài. Ví dụ Công ty Mẹ có trụ sở đặt
tại nước Mỹ và các Chi nhánh đặt tại Việt Nam với các địa điểm Thành phố Hồ Chí
Minh và Hà Nội. Thông qua mạng WAN của Công Ty các cuộc gọi nội bộ giữa các

Tác Giả Lê Quốc Toàn

16
Sách Asterisk – http://my.opera.com/asteriskvn

vị trí khác nhau sẽ làm giảm chi phí đáng kể. Ngữ cảnh này về mặt pháp luật không
cho cuộc gọi từ Mỹ vào Việt Nam.

4 Các ứng dụng IVR, VoiceMail, Điện Thoại Hội Nghị

Triển khai server IVR, VoiceMail, Hội Thoại

Ứng dụng thực hiện các server kết nối với hệ thống PSTN hay tổng đài PBX
để triển khai các ứng dụng như tương tác thoại IVR. Một ví dụ cho ứng dụng tương
tác thoại đó là cho biết kết quả sổ số hay kiểm tra cước cuộc gọi giống dịch vụ
19001260 vậy. Ứng dụng VoiceMail thu nhận những tin nhắn thoại từ phía thuê
bao giống như chức năng hộp thư thoại của Bưu Điện Thành phố triển khai. Còn

Tác Giả Lê Quốc Toàn

17
Sách Asterisk – http://my.opera.com/asteriskvn

chức năng điện thoại hội nghị thiết lập cho nhiều máy điện thoại cùng nói chuyện
với nhau.

5 Chức năng Phân phối cuộc gọi tự động ACD

Phân phối cuộc gọi với hàng đợi

ACD(Automatic Call Distribution): Phân phối cuộc gọi tự động.

Đây là chức năng ứng dụng cho nhu cầu chăm sóc khách hàng hay nhận phản
hổi từ phía khách hàng.

Tác Giả Lê Quốc Toàn

18
Sách Asterisk – http://my.opera.com/asteriskvn

Công ty có khả năng tiếp nhận cùng một lúc 10 cuộc gọi như thế cuộc gọi thứ
11 gọi đến thì hệ thống giải quyết như thế nào?. Bình thường thì sẽ nghe tín hiệu
bận nhưng với chức năng phân phối cuộc gọi sẽ đưa thuê bao đó vào hàng đợi để
chờ trả lời, trong khi chờ trả lời cuộc gọi thuê bao có thể nghe những bài hát hay do
asterisk cung cấp, trong lúc này nếu 1 trong mười số điện thoại trở về trạng thái rỗi
thì cuộc gọi đang chờ sẽ được trả lời. Giống như chức năng của dịch vụ 1080 hay
116 của Bưu Điện Thành Phố vậy.

2 CÁC KHÁI NIỆM TRONG HỆ THỐNG ASTERISK

1 GIỚI THIỆU

Trong chương này sẽ giải thích rõ các khái niệm cơ bản liên quan đến hệ thống
asterisk, cung cấp những kiến thức nền tảng, những khái niệm cần thiết để thiết kế
triển khai xây dựng hệ thống điện thoại với Asterisk.

2 PBX - Private Branch Exchange

PBX hay còn gọi là PABX - Private Automatic Branch Exchange là hệ thống
tổng đài nội bộ được đặt tại nhà thuê bao, từ Automatic ở đây muốn nói đến là hệ
thống tổng đài điện tử tự động nhưng hiện nay đa số là tổng đài PBX điện tử tự
động nên từ trên thực sự không còn cần thiết nữa.

PBX với mục tiêu chia sẻ nhiều thuê bao nội bộ gọi ra thế giới bên ngoài
thông qua một vài đường trung kế hay nói một cách khác PBX là hệ thống trung
chuyển giữa các đường dây điện thoại bên ngoài từ công ty điện thoại và máy điện
thoại nội bộ trong tổng đài PBX. Vì thế nên số lượng máy điện thoại nội bộ luôn
nhiều hơn số đường dây nối đến PBX từ bên ngoài.

Tác Giả Lê Quốc Toàn

19
Sách Asterisk – http://my.opera.com/asteriskvn

PBX thực hiện chuyển mạch cuộc gọi các máy điện thoại nội bộ với nhau và
với các máy điện thoại bên ngoài thông qua đường trung kế. Đồng thời thực hiện
chuyển mạch các cuộc gọi điện thoại từ bên ngoài vào các máy điện thoại nội bộ.

Ngoài việc chuyển mạch cuộc gọi PBX cung cấp nhiều tính năng sử dụng
cho nhiều mục đích khác nhau của khách hàng mà bản thân các đường dây điện
thoại từ công ty điện thoại kết nối đến không thể thực hiện được, các tính năng như
tương tác thoại(IVR), Voicemail, phân phối cuộc gọi tự động(ADC)…

Hiện nay với việc phát triển mạnh mẽ của công nghệ VoIP, chúng ta còn có
thêm thuật ngữ IP PBX. Đây là hệ thống chuyển mạch PBX với công nghệ Voip.

3 VOIP - Voice Over Internet Protocol

Voice over Internet Protocol (VoIP) là một công nghệ cho phép truyền thoại
sử dụng giao thức mạng IP, trên cơ sở hạ tầng sẵn có của mạng internet. Voip là một
trong những công nghệ viễn thông đang được quan tâm nhất hiện nay không chỉ đối
với nhà khai thác, các nhà sản xuất mà còn cả với người sử dụng dịch vụ.

Voip có thể vừa thực hiện mọi loại cuộc gọi như trên mạng điện thoại kênh
truyền thống (PSTN) đồng thời truyền dữ liệu trên cơ sở mạng truyền dữ liệu. Do
các ưu điểm về giá thành dịch vụ và sự tích hợp nhiều loại hình dịch vụ nên voip
hiện nay được triển khai một các rộng rãi.

Dịch vụ điện thoại voip là dịch vụ ứng dụng giao thức IP, nguyên tắc của
VoIP bao gồm việc số hoá tín hiệu tiếng nói, thực hiện việc nén tín hiệu số, chia nhỏ
các gói nếu cần và truyền gói tin này qua mạng, tới nơi nhận các gói tin này được
ráp lại theo đúng thứ tự của bản tin, giải mã tín hiệu tương tự phục hồi lại tiếng nói
ban đầu.

Tác Giả Lê Quốc Toàn

20
Sách Asterisk – http://my.opera.com/asteriskvn

Các cuộc gọi trong VoIP dựa trên cơ sở sử dụng kết hợp cả chuyển mạch
kênh và chuyển mạch gói. Trong mỗi loại chuyển mạch đều có ưu, nhược điểm
riêng của nó. Trong kỹ thuật chuyển mạch kênh giành riêng cho một kênh truyền
giữa hai thiết bị đầu cuối thông qua các node chuyển mạch trung gian. Trong
chuyển mạch kênh tốc độ truyền dẫn luôn luôn cố định(nghĩa là băng thông không
đổi) , với mạng điện thoại PSTN tốc độ này là 64kbps, truyền dẫn trong chuyển
mạch kênh có độ trễ nhỏ.

Trong chuyển mạch gói các bản tin được chia thành các gói nhỏ gọi là các
gói, nguyên tắc hoạt động của nó là sử dụng hệ thống lưu trữ và chuyển tiếp các gói
tin trong nút mạng. Đối với chuyển mạch gói không tồn tại khái niệm kênh riêng,
băng thông không cố định có nghĩa là có thể thay đổi tốc độ truyền, kỹ thuật chuyển
mạch gói phải chịu độ trễ lớn vì trong chuyển mạch gói không quy định thời gian
cho mỗi gói dữ liệu tới đích, mỗi gói có thể đi bằng nhiều con đường khác nhau để
tới đích, chuyển mạch gói thích hợp cho việc truyền dữ liệu vì trong mạng truyền dữ
liệu không đòi hỏi về thời gian thực như thoại, để sử dụng ưu điểm của mỗi loại
chuyển mạch trên thì trong voip kết hợp sử dụng cả hai loại chuyển mạch kênh và
chuyển mạch gói.

4 PSTN – Public Switched Telephone Network

PSTN là mạng chuyển mạch điện thoại công cộng hay nói cách khác là mạng
kết nối tất cả các hệ thống tổng đài chuyển mạch-mạch.

Để hiểu rõ hơn hãy xem xét mạng PSTN với mạng Internet về khía cạnh
chuyển thoại trên đó. Chuyển mạch mạch muốn thực hiện cuộc gọi giữa hai thuê
bao thì hệ thống phải giành riêng một kênh truyền 64kbps để chuyển tải tín hiệu
thoại trên đó, Còn cuộc gọi điện thoại trên mạng Internet thì tín hiệu thoại được
đóng gói và chuyển đi trên cùng kênh truyền với nhiều dịch vụ khác. Vì lẽ đó chất
lượng cuộc gọi trên mạng PSTN bao giờ cũng tốt hơn trên mạng Internet nhưng đổi

Tác Giả Lê Quốc Toàn

21
Sách Asterisk – http://my.opera.com/asteriskvn

lại chi phí lại đắc hơn rất nhiều, đặc biệt là các cuộc gọi quốc tế, nên phải cần cân
nhắc kỹ khi sử dụng.

PSTN được phát triển trên chuẩn ITU(International Telecommunication


Union) còn mạng Internet được phát triển trên chuẩn IETF(Internet Engineering
Task Force) cả hai mạng trên đều sử dụng địa chỉ để định tuyến cuộc gọi, PSTN sử
dụng các con số điện thoại để chuyển mạch cuộc gọi giữa các tổng đài điện thoại
trong khi đó trên mạng Internet, địa chỉ IP sẽ được sử dụng để định tuyến các gói
thoại.

5 TDM – Time Division Multiplexing

Là kỹ thuật ghép kênh phân chia thời gian nhiều tín hiệu có thể truyền đồng
thời trên một đường truyền, TDM được sử dụng chuyển thoại trong hệ thống mạng
PSTN. Có hai chuẩn ghép kênh TDM cơ bản là E1 với 30 kênh thoại trên một
khung tốc độ 2Mbps và T1 với 24 kênh thoại tốc độ 1.5Mbps.

Tác Giả Lê Quốc Toàn

22
Sách Asterisk – http://my.opera.com/asteriskvn

Hình Minh họa ghép kênh phân chia theo thời gian

6 Các hình thức báo hiệu giao tiếp TDM.

1 FXO và FXS

FXO (Foreign Exchange Office) là thiết bị nhận tín hiệu từ tổng đài gửi đến
như dòng chuông, tín hiệu nhấc gác máy, tín hiệu mời quay số, gửi và nhận tín hiệu
thoại… FXO giống như máy Fax hay modem dial-up 56k vậy. Dùng để kết nối với
đường dây điện thoại.

FXS (Foreign Exchange Station) là thiết bị tại nơi cung cấp đường dây điện
thoại, thiết bị FXS sẽ cung cấp tín hiệu mời quay số(dialtone), dòng chuông, hồi âm
chuông(ring tone). Trong đường dây Analog FXS cung cấp dòng chuông và điện áp
cho điện thoại hoạt động ví dụ FXS cung cấp điện áp -48VDC đến máy điện thoại

Tác Giả Lê Quốc Toàn

23
Sách Asterisk – http://my.opera.com/asteriskvn

Analog trong suốt thời gian đàm thoại và cung cấp 90VAC(20hz) để phát điện áp
rung chuông. Thiết bị FXS phát còn thiết bị FXO nhận.

Card TDM sử dụng trong hệ thống asterisk thường tích hợp vừa thiết bị FXO
vừa là thiết bị FXS(Giống bộ ATA) FXO để kết nối với đường dây điện thoại còn
FXS dùng để kết nối với máy điện thoại analog thông thường dùng để chuyển mạch
cuộc gọi TDM qua hệ thống asterisk(Xem thêm trong phần cấu hình cho kênh
TDM).

Tóm lại cần nắm:

· FXS được kết nối với FXO giống với đường dây điện thoại nối với máy
điện thoại.

· FXS cung cấp nguồn cho điện thoại FXO(điện thoại Analog)

Hình a) Máy điện thoại vai trò FXO kết nối với FXS(PSTN), Hình b) PBX
kết nối với FXO và FXS, Hình c) ATA đóng vai trò như FXS để kết nối với máy
điện thoại vai trò FXO.

Tác Giả Lê Quốc Toàn

24
Sách Asterisk – http://my.opera.com/asteriskvn

2 Báo hiệu Analog giữa đầu cuối và tổng đài

Khi chúng ta nhấc mấy điện thoại để gọi thì nghe tín hiệu mời quay số, khi
cuộc gọi gọi đầu bên kia bị bận thì chúng ta nghe tín hiệu bận(busy tone) các loại
tín hiệu như vậy gọi là các tín hiệu báo hiệu analog. Các tín hiệu như: Mời quay số,
tín hiệu bận, rung chuông, trạng thái nhấc gác máy. Các loại tín hiệu trên được trao
đổi giữa thiết bị FXO và FXS.

Có nhiều phương thức báo hiệu khác nhau ứng với từng nơi sử dụng, vì thế
tại nơi kết nối với đường dây điện thoại cần xem xét họ đang sử dụng phương thức
báo hiệu gì, từ đó chúng ta khai thác loại tín hiệu báo hiệu cho thích hợp, các
phương thức báo hiệu như Loop Start, Ground Start. Một minh họa cho việc sử
dụng sai phương thức báo hiệu là khi chúng ta khai báo phương thức báo hiệu giữa
hệ thống Asterisk và đường dây điện thoại khác nhau thì dẫn đến Asterisk sẽ không
nhận biết được tín hiệu gác máy, điều này sẽ làm cho asterisk không báo giờ giải tỏa
được cuộc gọi để thực hiện cuộc gọi mới.

3 Báo hiệu giữa các tổng đài

SS7 hệ thống báo hiệu số 7 được phát triển bởi AT&T và ITU là hệ thống
báo hiệu chuyển các cuộc gọi giữa các tổng đài trong mạng PSTN. Trong hệ thống
báo hiệu số 7 tín hiệu chuyển tải trên đường trung kế kết nối giữa hai tổng đài gồm
có hai mạch riêng, một cho thoại và một cho báo hiệu, như vậy thoại và báo hiệu có
thể chuyển trên hai kênh vật lý khác nhau.

7 Báo Hiệu trên mạng điện thoại VoIP

1 SIP Session Initiation Prorocol

Sip là giao thức Internet dành cho báo hiệu VoIP được phát triển bởi IETF
cung cấp vài chức năng giống hệ thống báo hiệu số 7 nhưng dựa trên nền IP. Một
chức năng giống báo hiệu số 7 đó là báo hiệu và thoại chuyển tải trên hai kênh

Tác Giả Lê Quốc Toàn

25
Sách Asterisk – http://my.opera.com/asteriskvn

riêng. Giao thức SIP thực hiện chức năng thiết lập và báo hiệu cuộc gọi, khi nói đến
báo hiệu cuộc gọi là chỉ định các tín hiệu báo hiệu như: tín hiệu mời quay số, tín
hiệu bận…

2 Proxy server

Mặc dầu hai thiết bị SIP có thể liên lạc trực tiếp với nhau để khởi tạo cuộc
gọi nhưng trong giao thức SIP còn có chức năng Proxy để linh hoạt hơn trong thiết
lập cuộc gọi. Proxy Server sẽ làm nhiệm vụ ghi nhận tất cả các số điện thoại được
phía client đăng ký đến qua bản tin “Registration”. Khi một client khác thực hiện
cuộc gọi thì thực sự Client đó không biết số điện thoại cần gọi đang ở đâu nên thông
qua Proxy server để tìm kiếm thiết lập cuộc gọi.

Hình Đăng ký từ Client đến SIP Proxy, Với Giao thức SIP đường báo hiệu và
thoại riêng.

3 RTP vá NAT

Các cuộc gọi trên Internet với giao thức SIP được chia thành các gói thoại và
được chuyển qua giao thức RTP(Real Time Protocol) . RTP là giao thức không chỉ
thực hiện chuyển các gói thoại qua Internet mà còn có cả video nữa. Một cuộc gọi

Tác Giả Lê Quốc Toàn

26
Sách Asterisk – http://my.opera.com/asteriskvn

thông thường có hai hướng thông tin là nhận và phát, RTP làm việc chuyển các gói
dữ liệu thoại cũng trên hai hướng.

NAT Network Address Translators là một trở ngại lớn trong giao thức RTP.
Mạng sử dụng NAT là một mạng chia sẻ nhiều địa chỉ IP nội bộ với một địa chỉ IP
Công cộng để kết nối với thế giới bên ngoài. NAT dùng để chia sẻ nhiều máy tính
trong mạng LAN nội bộ sử dụng được Internet, nhưng cũng chính vì thế mà các máy
tính nội bộ gặp khó khăn trong việc thực hiện cuộc gọi VoIP qua Internet. Đó chính
là vấn để trở ngại khi truyền thoại qua giao thức RTP.

Hình Minh họa hoạt động của NAT

Trong Giao thức RTP như chúng ta đã biết đó là thoại được chuyển trên hai
đường khác nhau là đường phát và đường thu, Vấn đề NAT nằm ở chỗ tín hiệu
thoại từ bên ngoài vào bên trong qua giao thức RTP không thực hiện được còn chiều
ngược lại thì thực hiện tốt. Hay nói cách khác vấn đề NAT làm cho các cuộc gọi từ

Tác Giả Lê Quốc Toàn

27
Sách Asterisk – http://my.opera.com/asteriskvn

Internet đàm thoại vào các máy nội bộ qua NAT thì không nghe được, còn trong
trường hợp các cuộc gọi từ các máy nội bộ ra các máy internet thì nghe tốt.

Vấn đề NAT trên được giải quyết trong Asterisk bằng việc khai báo thông số
NAT=yes trong cấu hình kênh giao thức SIP.

4 IAX – Inter Asterisk eXchange

IAX là giao thức báo hiệu Voip được phát triển bởi tác giả của phần mềm
Asterisk để khắc phục những hạn chế trong giao thức SIP. Không giống như giao
thức SIP chuyển tải thoại và báo hiệu trên hai kênh khác nhau (out of band), IAX
chuyển tải thoại và báo hiệu trên cùng một kênh(in band). IAX giải quyết được vấn
đề NAT đề cập trên phần giao thức SIP. Mặc khác IAX là giao thức tối ưu trong
việc sử dụng băng thông, cho phép nhiều gói dữ liệu thoại trên cùng một IP header,
cơ chế chuyển tải nhiều cuộc gọi trên cùng một gói IP được gọi là trung kế(Trunk).

Có thể giải thích thêm cơ chế trung kế như sau: Giả sử Tôi cần gửi 5 bức thư
tới người bạn của Tôi, Tôi sẽ có hai hình thức để thực hiện, thứ nhất là mỗi bức thư
Tôi bỏ vào một phong bì vậy tổng cộng tôi phải sử dụng 5 phong bì để gửi đi 5 bức
thư, Cách thứ hai là Tôi bỏ 5 bức thư vào 1 phong bì và gửi đi vậy tổng cộng Tôi
chỉ tốn 1 phong bì, Qua phân tích trên rõ ràng việc 5 bức thư vào một phong bì sẽ
tiết kiệm hơn so với 5 bức thư với 5 phong bí. Cơ chế trên cũng giống như nhiều
cuộc gọi được đóng thành gói và chuyển đi trên đường trung kế.

Tóm lại: IAX là giao thức dành cho VoIP mới nhất cho đến thời điểm này với
nhiều ưu điểm hấp dẫn như:

+ Tối thiểu sử dụng băng thông.

+ Trong suốt với NAT.

+ Hiệu quả với cơ chế trung kế.

Tác Giả Lê Quốc Toàn

28
Sách Asterisk – http://my.opera.com/asteriskvn

8 Thiết Bị VoIP

1 Voip Phone

Đây là thiết bị phần cứng kết nối với mạng VoIP giống như máy điện thoại để
bàn thông thường nhưng dành cho VoIP, cần phải thực hiện cấu hình trước khi sử
dụng.

Lưu ý một số tính năng khi thực hiện mua thiết bị điện thoại VoIP:

+ Low bandwidth : hỗ trợ Codec nào, G729 là tốt nhất hiện nay.

+ Web Interface : Phải có giao tiếp thiết lập cấu hình thân thiện dễ sử dụng.

+ Audio Interface : Có speaker phone hay không?

Giá thành của điện thoại voip IP đắc hơn điện thoại thông thường, giá khoảng
trên dưới 100$ một cái.

Hình Máy Điện Thoại VoIP

Tác Giả Lê Quốc Toàn

29
Sách Asterisk – http://my.opera.com/asteriskvn

2 Softphone

Là một phần mềm được cài trên máy tính thực hiện tất cả các chức năng giống
như thiết bị điện thoại Voip, cần lưu ý khi sử dụng softphone là máy tính phải có
card âm thanh, headphone và firewall không bị khóa.

Sử dụng softphone với hệ thống Asterisk nên dùng softphone với công nghệ
giao thức mới dành cho Asterisk đó là IAX.

Hình Điện Thoại Softphone

3 Card giao tiếp với PSTN

Muốn cho phép các máy điện thoại nội bộ trong hệ thống Asterisk kết nối và
thực hiện cuộc gọi với mạng PSTN chúng ta cần phải có thiết bị phần cứng tương
thích. Thiết bị phần cứng sử dụng cho hệ thống Asterisk do chính tác giả lập công ty
Digium phân phối, đây cũng chính là ý tưởng lớn trong việc phân phối phần mềm
Asterisk là hệ thống nguồn mở sử dụng miễn phí.

Thiết bị phần cứng thường ký hiệu bắt đầu bằng cụm từ TDMxyB trong đó x
là số lượng port FXS, y là số lượng port FXO giá trị tối đa của x và y là 4, ví dụ
card TDM22B có nghĩa là có 2 fort FXS và 2 port FXO.

Tác Giả Lê Quốc Toàn

30
Sách Asterisk – http://my.opera.com/asteriskvn

Hình Card TDM22B gồm 4 port 2 FXS và 2 FXO

4 ATA Analog Telephone Adaptors

ATA là thiết bị kết nối với điện thoại Analog thông thường đến mạng VoIP,
một thiết bị ATA gồm có hai loại port: RJ-11 để kết nối với máy điện thoại analog
thông thường còn RJ-45 để kết nối với mạng VoIP.

ATA thực sự là thiết bị FXS chuyển đổi tín hiệu Analog sang tín hiệu số sử
dụng cho mạng VoIP, để tận dụng máy điện thoại Analog nên trang bị thiết bị ATA
thay vì phải trang bị điện thoại VoIP.

Thiết bị ATA sử dụng với giao thức IAX được Digium phân phối là thiết bị
ATA được sử dụng rộng rãi với Asterisk có tên gọi là IAXy.

Tác Giả Lê Quốc Toàn

31
Sách Asterisk – http://my.opera.com/asteriskvn

Hình Thiết bị ATA

9 Codecs

Thuật Toán codecs(Compressor/De-compressor) là một tập các quy luật được


sử dụng để chuyển đổi các tín hiệu thoại dạng Analog sang tín hiệu số và ngược lại.

Có nhiều thuật toán codec để thực hiện chuyển đổi tín hiệu analog sang tín
hiệu số dạng nhị phân (0,1) như G711, GSM, G729…Ứng với mỗi thuật toán có
những ưu điểm riêng, đặc biệt là việc tối ưu sử dụng băng thông trên đường truyền.
Mục tiêu cuối cùng là các thuật toán đưa ra phải đảm bảo chất lượng cuộc gọi nhất
và tiết kiệm băng thông nhất.

G729 là thuật toán codec tốt nhất hiện nay trong hệ thống VoIP. Với hệ
thống Asterisk để sử dụng thuật toán này cần phải mua bản quyền sử dụng vì đây là
codec không miễn phí sử dụng.

10 QoS – Quality of Service

Các yếu tố ảnh hưởng đến chất lượng của dịch vụ, đối với VoIP đó là các
yếu ảnh hưởng đến chất lượng tín hiệu thoại.

1 Độ trễ

Tác Giả Lê Quốc Toàn

32
Sách Asterisk – http://my.opera.com/asteriskvn

Thoại là dịch vụ mang tính thời gian thực rất cao vì thế trễ là yếu tố ảnh
hưởng rất lớn đến chất lượng dịch vụ. Trễ được định nghĩa là khoảng thời gian tính
từ lúc tín hiệu thoại đi từ miệng người nói tới tai người nghe. Trễ là yếu tố không
thể tránh khỏi, độ trễ đối với mạng điện thoại truyền thống (mạng PSTN) khoảng từ
50ms đến 70ms, theo khiến nghị của ITU-T để đảm bảo chất lượng cho hệ thống
VoIP thì độ trễ từ đầu phát tới đầu thu hoặc ngược lại không được vượt quá 150ms,
khi mà độ trễ vượt quá 400ms đến 500ms thì không thể chấp nhận được.

Các nguyên nhân gây ra trễ bao gồm : Trễ trên mạng lưới, trễ trên bộ mả hóa
giải mã, trễ trong quá trình đóng gói, trễ bộ đệm, trễ xử lý tiếng nói…

2 Độ trượt(Jitter)

Nguyên nhân gây ra trượt là gói tín hiệu thoại trong quá trình truyền từ
nguồn đến đích sẽ gặp phải những điều kiện khác nhau trên mạng lưới do đó thường
đến đích với những khoảng trễ khác nhau. Đây là tính không đồng nhất của trễ. Một
nguyên nhân khác của trượt đối với ứng dụng PC to PC là do việc sử dụng hệ điều
hành phi thời gian thực, các gói tin thoại phải đợi hệ điều hành xử lý trong những
khoảng thời gian khác nhau khi mà hệ điều hành đang phải xử lý đối với các ứng
dụng khác.

Tác Giả Lê Quốc Toàn

33
Sách Asterisk – http://my.opera.com/asteriskvn

Hình Nguyên nhân xảy ra trượt

Để loại bỏ tính không đồng nhất của trễ, người ta thiết kế các bộ đệm trễ
(Jitter Buffer) tại nơi đến của các gói tin, các gói tin đến với các khoảng cách khác
nhau về thời gian được lưu tại bộ đệm rồi phát khỏi bộ đệm với khoảng trễ như

Tác Giả Lê Quốc Toàn

34
Sách Asterisk – http://my.opera.com/asteriskvn

nhau. Khi bộ đếm có kích thước càng lớn thì khả năng loại bỏ tính không đồng nhất
càng lớn, tuy nhiên việc sử dụng bộ đệm sẽ gây ra hiện tượng trễ trong ứng dụng
thoại, do đó cần có bài toán cân đối giữa độ trễ và độ trượt.

Ngoài 2 nguyên nhân trên còn một số nguyên nhân nữa ảnh hưởng đến chất
lượng thoại như độ mất gói, giới hạn băng thông, tiếng vọng.

3 CÀI ĐẶT ASTERISK

1 Cài đặt Asterisk

1 Download và bung nén

Để cài đặt Asterisk, đầu tiên chúng ta cần phải cài đặt hệ điều hành linux trên
máy tính của mình. Có thể cài hệ điều hành Linux Fedora , CentOS, Redhat, hoặc
Debian. Các gói phần mềm phụ thuộc phải có trong hệ điều hành Linux trước khi
cài Asterisk bao gồm:

· bison

· gcc

· kernel-source

· libtermcap-devel

· ncurses-devel

· openssl096b

· openssl-devel

Tác Giả Lê Quốc Toàn

35
Sách Asterisk – http://my.opera.com/asteriskvn

Sau khi hoàn tất các bước trên chúng ta tiến hành download phần mềm
asterisk với phiên bản mới nhất.

# cd /usr/src

# wget ftp://ftp.digium.com/pub/asterisk/asterisk-1.4.0.tar.gz

# wget ftp://ftp.digium.com/pub/asterisk/asterisk-addons-1.4.0.tar.gz

# wget ftp://ftp.digium.com/pub/asterisk/asterisk-sounds-1.4.0.tar.gz

# wget http://ftp.digium.com/pub/zaptel/zaptel-1.4.0.tar.gz

# wget http://ftp.digium.com/pub/libpri/libpri-1.4.0.tar.gz

Việc download có thể nhanh hay chậm tùy vào tốc độ trên đường internet , sau
khi download hoàn thành chúng ta tiến hành bung nén các gói ra thư mục chỉ định

# tar –xzvf asterisk-1.4.0.tar.gz

# tar –xzvf asterisk-addons-1.4.0.tar.gz

# tar –xzvf asterisk-sounds-1.4.0.tar.gz

# tar –xzvf zaptel-1.4.0.tar.gz

# tar –xzvf libpri-1.4.0.tar.gz

Giải nén xong chúng ta nhớ thực hiện lệnh

#ln –s /usr/src/asterisk-1.4.0 /usr/src/asterisk lệnh này để bảo đảm gói


“addons” được biên dịch đúng

Tác Giả Lê Quốc Toàn

36
Sách Asterisk – http://my.opera.com/asteriskvn

Bây giờ tới phần chúng ta biên dịch các gói đã giải nén ở trên, trước tiên là gói
zaptel kế đến là libpri sau cùng là gói Asterisk.

2 Cài đặt gói Zaptel

Gói zaptel sẽ chứa tại thư mục /usr/src/zaptel. Đánh lệnh như dưới đây để cài
đặt:

# cd /usr/src/zaptel

# make clean; make install

Lệnh này thực hiện khoảng 2 phút, tùy vào tốc độ máy tính cài đặt. sau khi
cài đặt xong sẽ trở lại dấu nhắc lệnh và hiển thị một loạt các thông báo trong đó có
một số bản tin lỗi mà chủ yếu là yêu cầu cài đặt các gói phụ thuộc đã liệt kê ở trên,
nếu các gói trên chưa được cài đặt.

Gói zaptel này chứa các driver cho các phần cứng kết giao tiếp với asterisk
do Digium phân phối, và một số thư viện cho việc có thực hiện giao tiếp với phần
cứng hay không.

Để Asterisk có thể chạy cùng với khởi động của máy tính chúng ta cần thực
hiện lệnh

# make config

Lệnh này sẽ tạo ra script chèn module zaptel vào kernel và chạy ztconfig vào
lúc khởi động máy. Trong Redhat script này sẽ được chép vào /etc/init.d chạy ở
mức 3.

3 Cài đặt gói libpri

Kế đến chúng ta biên dịch gói libpri tại thư mục /usr/src/libpri bằng lệnh:

Tác Giả Lê Quốc Toàn

37
Sách Asterisk – http://my.opera.com/asteriskvn

# cd /usr/src/libpri

# make clean; make install

Đoạn biên dịch này khá nhau khoảng 1 phút, sau khi thực hiện xong sẽ trở
về dấu nhắc lệnh.

Thư viện libpri cung cấp các driver cho các card giao tiếp trung kế PRI và một
số phần cứng khác. Ngay cả Asterisk không giao tiếp với card PRI nào chúng ta
cũng nên cài đặt gói này bởi một số module của Asterisk yêu cầu thư viện này.

2 Cài đặt gói Asterisk

Sau khi thực hiện cài đặt các gói phụ thuộc bây giờ chúng ta thực sự cài đặt
Asterisk. Phần này chứa trong thư mục /usr/src/asterisk nên thực hiện gõ lệnh như
sau:

# cd /usr/src/asterisk

# make clean; make install

Kết thúc việc thực hiện cài đặt chúng ta sẽ có một hệ thống PBX hoàn chỉnh
và các tính năng trên đó. Tại thời điểm này chúng ta sẽ tiến hành thực hiện cấu hình
hệ thống đáp ứng với từng nhu cầu ứng dụng.

Để hiểu hơn về cách cấu hình chúng ta sẽ xem các tập tin cấu hình mẫu bằng
lệnh sau:

# make samples

Các tập tin cấu hình mẫu được đặt trong thư mục /etc/asterisk ngoại trừ tập
tin zaptel.conf được đặt trong thư mục /etc/

Để Asterisk khởi động mỗi khi mở máy tính chúng ta dùng lệnh:

Tác Giả Lê Quốc Toàn

38
Sách Asterisk – http://my.opera.com/asteriskvn

# make config

3 Cài đặt TrixBox

1 Giới thiệu

TRIXBOX được phát triển từ nhân của ứng dụng Asterisk, được tổng hợp từ
một số thành phần chính được phát triển bởi cộng đồng phát triển nguồn mở
Asterisk dưới bản quyền GPL. Trixbox bao gồm những thành phần chính cho việc
cấu hình ứng dụng, thống kê tình trạng hoạt động hệ thống, lưu trữ dự phòng, và
nhân là hệ điều hành CentOS một phiên bản khác của Redhat, tất cả kết hợp với
nhau tạo thành một gói hoàn chỉnh. Khi cài gói này vào máy tính thì có thể sử dụng
như một tổng đài PBX.

Các thành phần chính trong gói TRIXBOX là

· Asterisk PBX: Thành phần chính của hệ thống Trixbox

· CentOS: Một phiên bản Linux khác của Redhat hoàn toàn miển phí sử
dụng. Là nhân chính cho Trixbox.

· SugarCRM: Hệ thống quan hệ khách hàng CRM

· A2Billing – Là thành phần dành cho việc xây dựng hệ thống điện thoại
trả trước hay còn gọi là điện thọai thẻ (Calling Card).

· Flash Operator Panel, Bảng điều khiển giám sát tình trạng hoạt động
của các máy điện thoại trong hệ thống.

· Web MeetMe Control: Quản lý triển khai hệ thống điện thoại hội nghị.

· FreePBX: Đây là công cụ với giao diện web dành cho việc cấu hình hệ
thống Asterisk.

Tác Giả Lê Quốc Toàn

39
Sách Asterisk – http://my.opera.com/asteriskvn

· Hệ thống Lưu trữ dự phòng và thống kê: Là thành phần của TRIXBOX,
cung cấp các công cụ cần thiết cho việc bảo trì bảo dưỡng hệ thống.

· Hệ thống Apache-Php-Mysql dành cho giải pháp Webserver của hệ


thống.

2 DOWNLOAD VÀ LẮP ĐẶT TRIXBOX

Địa chỉ download http://sourceforge.net/projects/asteriskathome

Khi download xong file Trixbox.iso. Hãy dùng file này Burn vào CD (xin
lưu ý là dùng Nero hoặc chương trình chép đĩa ưa thích rồi burn vào cd_rom
chứ không phải chép file đó vào cd_rom.)

Sau khi có CD, Hãy boot từ CD này để cài đặt trixbox.

Chú ý : dữ liệu trên đĩa cứng sẽ bị xóa sạch để cài đặt trixbox. Nếu trong
đĩa cứng còn dữ liệu hãy backup tất cả trước khi tiến hành lắp đặt trixbox.

Tới đây lần lượt các màn hình chỉ dẫn sẽ hiện ra và cứ theo hướng dẫn mà cài
đặt. Sau khi cài đặt xong chúng ta dùng Username: root và password: password để
đăng nhập hệ thống.

3 Cấu hình địa chỉ IP cho card mạng:

Thiết lập địa chỉ IP bằng cách gõ lệnh:

#netconfig

Chọn OK để thiếp lập

Nếu trong mạng có hỗ trợ DHCP thì hãy chọn mục này còn nếu không hãy
nhập địa chỉ IP tĩnh.

Tác Giả Lê Quốc Toàn

40
Sách Asterisk – http://my.opera.com/asteriskvn

· IP: 192.168.0.1

· Netmask: 255.255.255.0

· Gateway: 192.168.93.254 //ngõ ra bên ngoài

· Primary nameserver: 192.168.93.200 // thiết lập nếu có

Chọn OK để chấp nhận các thiết lập trên.

Sau khi hoàn tất hãy làm cho thiết lập có hiệu lực bằng cách reset lại
máy tính hoặc dùng lệnh sau:

#Service network stop

#Service network start

Đến đây xem như cài đặt hoàn tất bây giờ để cấu hình được Asterisk chúng
ta vào một mày khác và mở Internet Explorer hoặc một trình duyệt web bất kỳ,
nhập vào http://192.168.0.1 đã cấu hình ở trên, và tiến hành cấu hình hệ thống
với tài khoảng username: maint và password: password

4 Tổ Chức Thư Mục của Asterisk

Asterisk sử dụng nhiều thư mục trên hệ thống linux để quản lý các khía cạnh
khác nhau của hệ thống, như nghi nhận bản tin thoại, các bản tin nhắc thoại, hoặc
các tập tin cấu hình. Phần này sẽ trình bày các thư mục chính yếu được tạo ra trong
quá trình lắp đặt và được cấu hình trong tập tin Asterisk.conf.

1 /etc/asterisk/

Thư mục /etc/asterisk/ chứa tất cả các tập tin cấu hình của hệ thống
Asterisk ngoại trừ tập tin Zaptel.conf được đặt tại thư mục /etc/. Phần cứng
Zaptel đầu tiên được phát triển bởi Jim Dixon thuộc nhóm Zapata Telephony

Tác Giả Lê Quốc Toàn

41
Sách Asterisk – http://my.opera.com/asteriskvn

Group để giao tiếp giữa máy tính với mạng điện thoại, mà Asterisk lại sử
dụng phần cứng này, với lý do đó mà file cấu hình zaptel.conf không nằm
trong thư mục /etc/asterisk/.

2 /usr/lib/asterisk/modules/

Thư mục /usr/lib/asterisk/modules/ chứa tất cả các module cần thiết để


asterisk hoạt động. Bên trong thư mục là các ứng dụng khác nhau, các codec,
các định dạng âm thanh(format) và các kênh thông tin(channel). Theo mặc định
Asterisk sẽ nạp tất cả các module vào lúc khởi động. Chúng ta có thể không cho
nạp một module bất kỳ bằng cách không khai báo sử dụng trong tập tin
modules.conf. Lưu ý khi không cho nạp module thì phải biết chắc module đó
không làm ảnh hưởng hoạt động của asterisk nếu không lỗi sẽ xuất hiện.

3 /var/lib/asterisk

Thư mục /var/lib/asterisk/ chứa tập tin astdb và một số thư mục con. Tập tin
astdb định vị thông tin cơ sở dữ liệu của Asterisk giống như Microsoft Windows
Registry.

Các thư mục con của thư mục /var/lib/asterisk/ bao gồm:

agi-bin/

Thư mục agi-bin/ chứa các script của người dùng mà Asterisk có thể
định vị sử dụng qua các ứng dụng AGI.

AGI là phần giao tiếp với ngôn ngữ lập trình script để thực hiện một
số công việc của Asterisk từ bên ngoài.

firmware/

Tác Giả Lê Quốc Toàn

42
Sách Asterisk – http://my.opera.com/asteriskvn

Thư mục firmware/ chứa một số phần dẻo(firmware) cho các thiết bị
khác nhau tương thích với Asterisk. Hiện tại chỉ có thư mục con /iax chứa
firmware cho thiếy bị IAXy của Digium. IAXy là thiết bị ATA sử dụng giao
thức IAX.

images/

Các ứng dụng thông tin với các kênh hỗ trợ ảnh images thì sử dụng thư mục
này. Nhưng hiện tại các kênh thông tin hầu như không hỗ trợ truyền ảnh images nên
thư mục này cũng hiếm khi được sử dụng. Tuy nhiên nếu các thiết bị có hỗ trợ thì
thư mục này trở nên hiệu dụng.

keys/

Asterisk có thể sử dụng hệ thống khoá public/private để xác minh các kết nối
giữa các server Asterisk thông qua chữ ký điện tử RSA. Nếu đặt một khoá public
vào thư mục /keys thì kết nối của server đầu bên kia có thể được xác minh bằng
kênh thông tin có hỗ trợ, đối với Asterisk thì kênh giao thức IAX hỗ trợ loại xác
minh này. Một khoá private không bao giờ công bố, chúng ta chỉ công bố khoá
public đến với server cần nối đến, sau đó sẽ được xác minh với khoá private này. Cả
hai khoá public và private được lưu với đuôi .pub và .key đặt tại thư mục keys/.

mohmp3/

Khi cấu hình Asterisk sử dụng tính năng Music on Hold, tính năng hoạt động
sẽ thực hiện lấy các tập tin mp3 tại thư mục mohmp3/. Tập tin định dạng theo chuẩn
của Asterisk nên khi sử dụng các file Mp3 thông thường cần có sự chuyển đổi thích
hợp trước khi chép vào thư mục trên để sử dụng.

sounds/

Tác Giả Lê Quốc Toàn

43
Sách Asterisk – http://my.opera.com/asteriskvn

Tất cả các tập tin âm thanh liên quan đến nhắc thoại của Asterisk được đặt tại
thư mục sounds/. Nội dung của các tập tin chứa trong thư mục được liệt kê qua tập
tin sounds.txt đặt tại thư mục mã nguồn của Asterisk. Còn nội dung của các tập tin
âm thanh được mở rộng thêm được liệt kê trong tập tin sounds-extra.txt đặt trong
thư mục được trích ra khi bung gói asterisk-sounds.

4 /var/spool/asterisk/

Thư mục /var/spool/asterisk/ Chứa nhiều thư mục con bao gồm outgoing/,
qcall, tmp/, voicemail/. Asterisk luôn kiểm qua thư mục outgoing và qcall vì đây
là hai thư mục chứa các tập tin dạng text chứa thông tin yêu cầu cuộc gọi. Các
tập tin đó cho phép tạo ra cuộc gọi đơn giản bằng cách chép tập tin đúng cấu
trúc quy định vào thư mục outgoing/. Sau đây là cấu trúc cây thư mục:

1 Hình Cây thư mục /var/spool/asterisk/

Tác Giả Lê Quốc Toàn

44
Sách Asterisk – http://my.opera.com/asteriskvn

Thư mục tmp/ sử dụng để lưu trữ những thông tin tạm, để luôn bảo đảm không
xảy ra tình trạng đọc và viết tập tin cùng một lúc. Khi yêu cầu xử lý tập tin chúng ta
thao tác trên thư mục tmp/ trước khi lưu vào tập tin đích.

Tất cả các lời nhắc thoại từ phía người sử dụng và các lời nhắc thoại sử dụng
cho thao tác hộp voicemail đều được chứa trong thư mục voicemail/. Một hộp thư
thoại được tạo ra ứng với một máy nội bộ trong tập tin voicemail.conf, sẽ được tạo
ra một thư mục con tương ứng cho máy nội bộ đó tại thư mục voicemail/.

Tác Giả Lê Quốc Toàn

45
Sách Asterisk – http://my.opera.com/asteriskvn

5 /var/run/

Thư mục /var/run/ chứa thông tin process ID(pid) cho tất cả các tiến trình đang
hoạt động trong hệ thống, bao gồm cả Asterisk. Lưu ý là ứng với mỗi hệ điều hành
thư mục /var/run/ có thể khác.

6 /var/log/asterisk/

Thư mục /var/log/asterisk/ là nơi Asterisk chứa tất cả các tập tin nhật ký hay
còn gọi là tập tin log. Chúng ta có thể tuỳ biến các loại thông tin được lưu trong các
tập tin log khác nhau qua tập tin cấu hình logger.conf đặt tại thư mục /etc/asterisk.

7 /var/log/asterisk/cdr-csv

Thư mục /var/log/asterisk/cdr-csv được sử dụng để lưu chi tiết cuộc gọi CDR,
Thông tin mặc định về chi tiết thông tin cuộc gọi lưu trữ trong tập tin Master.CVS,
nhưng thường thì ứng với mỗi mã accountcode sẽ tạo một thư mục riêng để lưu chi
tiết cuộc gọi cho máy đó.

5 Một số lệnh thao tác trên hệ thống asterisk

Asterisk có hai thành phần được xây dụng tích hợp với nhau và chạy song
song nhau:

Asterisk Server bình thường chạy ở chế độ nền(background) giống các sevices
trong window.

Asterisk Client ở chế độ dòng lệnh CLI giao tiếp với Asterisk Server, thực thi
các lệnh để kiểm tra, hay xem các thông tin của server.

Để Chạy và dừng Asterisk ở chế độ nền chúng ta thực hiện lệnh sau:

#/etc/init.d/asterisk (start|stop)

Tác Giả Lê Quốc Toàn

46
Sách Asterisk – http://my.opera.com/asteriskvn

Một khi Asterisk đã chạy chúng ta có thể chuyển qua chế độ CLI từ dấu nhắc
lệnh của linux như sau:

#asterisk –r

Khi vào chế độ lệnh nếu muốn thoát về lại dấu nhắc linux chúng ta dùng lệnh:

CLI>exit

Các lệnh cơ bản thực hiện tại CLI>

Bất cứ khi nào chỉnh sửa các tập tin cấu hình chúng ta đều cần phải nạp lại để
các thay đổi có hiệu lực, điều đó thực hiện bằng lệnh:

#CLI>reload

Bậc chế độ debug cho kênh thông tin SIP hoặc IAX2

#CLI> IAX2 debug

#CLI> SIP debug

Tắt chế độ debug cho kênh thông tin SIP hoặc IAX2

#CLI> IAX2 no debug

#CLI> SIP no debug

Hiển thị các trạng thái thông tin của users, peers và
channels của SIP hoặc IAX2

#CLI> sip show users

#CLI> sip show peers

Tác Giả Lê Quốc Toàn

47
Sách Asterisk – http://my.opera.com/asteriskvn

#CLI> sip show channels

#CLI> iax2 show peers

#CLI> iax2 show users

#CLI> iax2 show channels

Đến thời điểm này có thể nói chúng ta đã hoàn thành cài đặt hệ thống
Asterisk, cài đặt xong mới là bước mở đầu, để cho hệ thống Asterisk hoạt động với
từng ứng dụng cụ thể chúng sẽ tiếp tục thực hiện các giai đoạn được xem là quan
trọng nhất trong việc triển khai hệ thống Asterisk, đó là giai đoạn cấu hình hệ thống,
lên kế hoạch Diaplan. chương còn lại đều nhắm đến mục tiêu này.

4 CẤU HÌNH HỆ THỐNG ASTERISK

1 GIỚI THIỆU

Sau khi hoàn tất phần cài đặt hệ thống asterisk, một bước quan trọng tiếp theo
là cấu hình hệ thống, có thể nói đây là bước quan trọng nhất của việc khiển khai hệ
thống đến với từng ứng dụng cụ thể. Trong chương này xin giới thiệu cái nhìn đầu
tiên về việc cấu hình trước khi đi sâu hơn ở những chương sau, những gì giới thiệu

Tác Giả Lê Quốc Toàn

48
Sách Asterisk – http://my.opera.com/asteriskvn

trong chương này là nền móng cơ bản nhưng đủ để hiểu làm thế nào hệ thống có thể
hoạt động được, nội dung chính bao gồm:

+ Thao tác cấu hình trên hệ thống tập tin của asterisk.

+ Cách cài đặt phần mềm softphone trên công nghệ sip.

+ Cấu hình cho hai máy softphone liên lạc với nhau.

+ Cấu hình phát thông điệp.

+ Quay số qua Sip và mạng PSTN.

2 Tập Tin cấu hình

Tất cả các file cấu hình cho hệ thống asterisk đều nằm tại thư mục /etc/asterisk
ngoại trừ file zaptel.conf cấu hình cho phần cứng TDM nằm tại thư mục /etc, cách
thức cấu hình giống như tập tin .ini của window vậy. Các nội dung sau dấu chấm
phảy ; là nội dung chú thích trong file cấu hình giống như chú thích trong ngôn ngữ
lập trình C là dấu //. Tất cả các khoảng trắng trong tập tin đều được bỏ qua không có
ý nghĩa trong file cấu hình.

Trong file cấu hình còn có hai phép gán rất thường xuyên được sử dụng,
phép gán “=” là dùng cho việc gán các biến, còn phép gán “=>” dùng cho việc gán
các đối tượng sau đây là một ví dụ cho file cấu hình:

Extention.conf

Tác Giả Lê Quốc Toàn

49
Sách Asterisk – http://my.opera.com/asteriskvn

;Đây là các dòng chú thích

[section]

Key=value ; gán giá trị cho biến

[section2]

Key=>object ; Gán giá trị cho đối tượng

Cú pháp thực hiện giống nhau cho tất cả các file cấu hình nhưng có vài kiểu
khác nhau cho mỗi file cầu hình dựa vào thức cách hoạt động của chúng.

3 Các kiểu ảnh hưởng trong tập cấu hình

Có ba kiểu cách thức hoạt động của tập tin cấu hình như sau:

Kiểu Cách hoạt động File cầu hình Ví dụ

S i m p l e Có hiệu lực trên Extension.con Exten=>400,1,dial(sip/40


Group từng dòng trong f 0)
file

O p t i o n Dòng khai báo Zapata..conf [channels]


inheritance sau thừa kế
những thông số Context=From_PSTN
khai báo trước
Signalling=fxs_ks

Group=1

Channel=>1

C o m p l e x Mỗi entity nhận sip.conf [cisco]


Entity một ngữ cảnh
iax.conf Type=friend

Secret=12345

Tác Giả Lê Quốc Toàn

50
Sách Asterisk – http://my.opera.com/asteriskvn

Host=192.168.16.5

Context=NoiBo

[xten]

Type=friend

Secret=6789

Host=dynamic

Context=NoiBo

1 Simple Group

Đây là kiểu cấu hình đơn giản nhất thường sử dụng trong các file
extention.conf, meetme.conf, voicemail.conf tương ứng với mỗi dòng khai báo là
một đối tượng có ý nghĩa trên dòng đó.

Ví dụ :

Extention.conf

[section]

object1=> op1,op2,op3

object2=> op1b,op2b,op3b

Trong ví dụ trên mỗi dòng tương ứng với các toán tử khác nhau object1 có các
toán từ op1, op2, op3 trong khi đó object2 lại có các toán từ op1b, op2b, op3b.

2 Option inheritance

Đây là cấu hình kiểu thừa kế thường được cấu hình trong các file zapata.conf,
agent.conf. với kiểu cấu hình này thì các dòng phía dưới có thể thừa kế các thông số
dòng phía trên, tương ứng với mỗi section các dòng phía dưới có thể thay đổi các
thông số cho tương ứng.

Tác Giả Lê Quốc Toàn

51
Sách Asterisk – http://my.opera.com/asteriskvn

Ví dụ:

Extention.conf

[section]

Op1=bas

Op2=adv

Object1=>1

Op1=int

Object1=>2

Với cấu hình trên có thể giải thích như sau object1=>1 thừa hưởng hai thông
số ở phía trên đó là op1=bas và op2=adv trong khi đó đối với object1=>2 với thông
số op1=int được khai báo lại nên object1=>2 được thừa kế từ hai thông số op1=int
và op2=adv.

3 Complex Entity

Với cấu kiểu này được tổ chức thành nhiều entity, ứng với mỗi entity có nhiều
thông số được khai báo, mỗi entity ở đây chính là các section để khai báo các kênh
thông tin. Cấu hình thường được sử dụng trong các file iax.conf, sip.conf.

Ví dụ:

Extention.conf

Tác Giả Lê Quốc Toàn

52
Sách Asterisk – http://my.opera.com/asteriskvn

[entity1]

Op1=value1

Op2=value2

[entity2]

Op1=value3

Op2=value4

Entity1 có các giá trị value1 và value2 cho thông số op1 và op2, trong khi đó
cũng là thông số op1 và op 2 nhưng có các giá trị khác là value3 và value4 cho
entity2.

4 Cấu hình giao tiếp với mạng PSTN

1 Ngữ cảnh kết nối

Để kết nối với mạng PSTN chúng ta cần phải có một card TDM với Cổng
FXO và một đường dây điện thoại hoặc có thể là một tổng đài nội bộ PBX. Có
nhiều nhà sản xuất phần cứng khác nhau nhưng trong phần cấu hình dưới dây là cấu
hình cho card zapata TDM01B của digium (card này hiện nay giá bán khoảng
175$).

Tác Giả Lê Quốc Toàn

53
Sách Asterisk – http://my.opera.com/asteriskvn

Hình Giao tiếp với FXO và FXS

Ở hình trên chúng ta đang tiến hành cấu hình cho port FXO.

2 Lắp đặt card TDM01B và cấu hình.

Trước khi lắp đặt card TDM01B hãy tắt nguồn máy tính và kiểm tra cổng
PCI có tương thích để gắn vào hay không. Sau khi hoàn tất hãy bật máy tính trở lại
và chuẩn bị cấu hình cho card hoạt động.

Cấu hình cho card hoạt động thông qua hai file cấu hình đó là file zaptel.conf
nằm trong thư mục /etc và file zapata.conf tại thư mục /etc/asterisk, cấu hình trong
file zapata.conf để cho kênh FXO hoạt động.

Tại thời điểm này chỉ ở mức cơ bản nên không giải thích kỹ các thông số cấu
hình một cách chi tiết, nếu muốn tham khảo thêm kỹ hơn xin mời xem chương Cấu
Hình Kết Nối Với Mạng PSTN

Tác Giả Lê Quốc Toàn

54
Sách Asterisk – http://my.opera.com/asteriskvn

Để giữ lại các cấu hình cũ nên lưu lại để đề phòng bất trắc cần khôi phục lại
về sau bằng lệnh:

#cp /etc/zaptel.conf /etc/zaptel.conf.old

#cp /etc/asterisk/zapata.conf /etc/asterisk/zapata.conf.old

/etc/zaptel.conf

fxsks=1

loadzone=us

defaultzone=us

channels=1

/etc/asterisk/zapata.conf

[channels]

Group=1

context=default ;cuộc gọi vào sẽ đến [default] qua


file extensions.conf

signalling=fxs_ks ;Sử dụng tín hiệu FXS cho kênh FXO

channel => 1 ;Đường dây điện thoại được gắn với port 1

Sau khi cấu hình xong tiến hành nạp driver và nạp lại file cấu hình cho card
hoạt động như sau.

Modprode zaptel

Modprode wcfxo

Ztcfg –vvvvv

Asterisk -vvvvvgc

5 Cấu hình Điện thoại IP SIP phone.

Tác Giả Lê Quốc Toàn

55
Sách Asterisk – http://my.opera.com/asteriskvn

Trong phần này cũng sẽ giới thiệu cấu hình khai báo đơn giản điện thoại IP
SIP phone, để có thông tin chi tiết hơn xin mời tham khảo chương Cấu Hình Giao
Thức SIP và IAX

Thực hiện cấu hình trong file /etc/asterisk/sip.conf. Các máy điện thoại sẽ cấu
hình trong file này trước khi quay số hay nhận cuộc gọi.

1 Phần khai báo Chung

Trong file sip.conf có section [general] dùng để khai báo các thông số chung
cho tất cả các kênh sip trong toàn bộ tập tin này, nhưng các thông số đó có thể mang
giá trị khác trong phần khai báo trên các kênh riêng để phù hợp với kênh đó.

Sau đây là các thông số chính:

Allow/disallow: Định nghĩa sử dụng các codec.

Bindaddr: Địa chỉ IP mà client kết nối đến kênh này, nếu thông số này được
khai báo là 0.0.0.0 cho phép tất cả các địa chỉ IP có thể kết nối đến kênh này.

Context : Tất cả các cuộc gọi mặc định sẽ được chuyển đến ngữ cảnh này
ngoại trừ phần dưới file cấu hình có khai báo ngữ cảnh khác.

Bindport: Cổng SIP UDP mà client cần kết nối đến.

Maxexpirey: Thời gian tối đa để đăng ký, đơn vị tính bằng giây.

Defaultexpirey: Thời gian mặc định để đăng ký, đơn vị tính bằng giây.

Register: Để kết nối giao tiếp với server khác.

Ví dụ:

Tác Giả Lê Quốc Toàn

56
Sách Asterisk – http://my.opera.com/asteriskvn

/etc/asterisk/sip.conf

[general]

Bindport=5060

Bindaddr=0.0.0.0

Context=default

Disallow=all

Allow=ulaw

Maxexpirey=120

Defaultexpirey=80

2 Khai báo kênh SIP

Trong phần này sẽ khai báo các kênh sip riêng cho từng điện thoại ip sip
phone, tất nhiên các thông số trong phần [general] sẽ có hiệu lực trên các kênh này
ngoại trừ tại phần khai báo các kênh này khai báo lại thông số ở phần trên.

Sau đây là các thông số dành khai báo riêng cho từng kênh SIP:

[name]: đây là phần khai báo máy điện thoại extention ip sip, có thể là ký tự
nhưng thường là các con số quay vì trên các phím điện thoại thường là các con số
mà thôi.

Type: Kiểu kết nối thông tin user, peer hay friend

Host : Địa chỉ IP hay tên miền mà client kết nối với kênh này thường dùng giá
trị là “dynamic” cho tất cả client kết nối đến.

Tác Giả Lê Quốc Toàn

57
Sách Asterisk – http://my.opera.com/asteriskvn

Secret : mật khẩu để sử dụng kênh này. Máy điện thoại phía client phải khai
báo trùng với thông số này thì mới sử dụng được.

Ví dụ:

/etc/asterisk/sip.conf

[8000]

Type=friend

Secret=123456

Context=NoiBo

Host=dynamic

[8001]

Type=friend

Secret=2222

Context=NoiBo

Host=192.168.5.16

6 Giới Thiệu DialPlan

Dialplan là trái tim của hệ thống asterisk. Dialplan cho biết các cuộc gọi sẽ
được xử lý như thế nào qua hệ thống asterisk. Dialplan bao gồm tập hợp các dòng
lệnh hay các ứng dụng theo một trình tự nào đó mà hệ thống phải thực hiện để đáp
ứng nhu cầu chuyển mạch cuộc gọi. Để hiểu rõ và cấu hình thành công hệ thống
asterisk thì điều kiện tiên quyết là phải biết như thế nào dialplan hoạt động.

Dialplan là công việc thiết lập cho hoạt động của hệ thống như định hướng các
cuộc gọi vào và ra hệ thống, đó là một danh sách các bước hay các lệnh liên tục
nhau để thực hiện một tác vụ nào đó mà hệ thống phải thực hiện theo. Khác biệt

Tác Giả Lê Quốc Toàn

58
Sách Asterisk – http://my.opera.com/asteriskvn

với các hệ thống điện thoại truyền thống tất cả các công việc cấu hình hệ thống đều
là từ phía người sử dụng.

Hệ thống chúng ta có hoàn chỉnh tốt hay không phụ thuộc rất nhiều vào việc
chúng ta hiểu rõ vào dialplan hay không?.

Trong phần này sẽ tập trung đi vào thực hiện diaplan ở mức nền tảng thực hiện
cuộc gọi trước khi đi sâu tìm hiểu kỹ ở những chương sau.

Dialplan được cấu hình qua tập tin extension.conf, liên quan đến việc cấu hình
dialplan có những khái niệm cần nắm đó là:

Extentions: Điện thoại nội bộ

Priorities: Thứ tự thực hiện

Applications: Các ứng dụng

Contexts: Các ngữ cảnh

Ở đây chỉ đề cập đến những khái niệm cơ bản, để hiểu sâu hơn về dialplan xin
mời tham khảo hai chương Dialplan. Trước khi cấu hình hãy lưu lại tập tin
extention.conf gốc và thực hiện trên file extention.conf rỗng.

1 Extentions

Dialplan là một tập gồm nhiều extention, khi một cuộc gọi tương ứng với
extention nào thì ứng dụng cho cuộc gọi đó sẽ được thực hiện. extention có thể đơn
giản với một đích danh cụ thể như 8051, letoan hay là một chuỗi so mẫu được thực
hiện như _9xxx.

Tác Giả Lê Quốc Toàn

59
Sách Asterisk – http://my.opera.com/asteriskvn

Các dạng của extention.

Ví dụ :

/etc/asterisk/extention.conf

exten=>8051,1,dial(sip/8051,20)

exten=>8051,2,hangup()

“exten=>” giống nhau cho mỗi dòng thực hiện trong dialplan, 8051 là số điện
thoại mà thuê bao quay hay là extention, còn các con số 1 và 2 là các priorites tức
là thứ tự thực hiện các lệnh. Khi thuê bao quay số 8051 thì đỗ chuông máy ip sip
8051 nếu trong vòng 20 giây mà thuê bao không nhấc máy thì kết thúc cuộc gọi.

Extension là thành phần mà asterisk thực hiện theo, được kích hoạt khi có
cuộc gọi vào extension chính là con số mà thuê bao đó cần gọi. Trong mỗi ngữ cảnh

Tác Giả Lê Quốc Toàn

60
Sách Asterisk – http://my.opera.com/asteriskvn

sẽ có thể có nhiều extension. Extenstion chính là hạt nhân để hệ thống xác định
cuộc gọi cần thực hiện. Extenstion hoàn chỉnh gồm có các phần :

exten => Name,priority,application( )

· Name (Tên ký tự hoặc con số) của extension

· Priority (Mỗi extension có thể bao gồm nhiều bước mỗi bước được gọi là
“priority”)

· Application (or command) Thực hiện một ứng dụng cụ thể nào đó cho cuộc
gọi

Một ví dụ cụ thể như sau:

/etc/asterisk/extention.conf

exten => 7325010,1,Dial(Zap/1,20)

exten => 7325010,2,Voicemail(u7325010)

exten => Tương ứng với mỗi ứng dụng thực hiện

7325010 Con số nhận được khi thuê bao chủ gọi quay số.

1, 2 là các “priority” thứ tự được thực hiện 1 rồi tới 2…

Trong ví dụ của chúng ta con số 7325010 sẽ được gửi đến kênh zap/1 rung
chuông tối đa 20 giây. Nếu sau 20 giây không trả lời thì cuộc gọi sẽ được định
hướng đến hộp thư thoại u7325010 chữ u ở đây có nghĩa là “ 'u'navailable
message”.

2 Priorities – Thứ tự thực hiện

Tác Giả Lê Quốc Toàn

61
Sách Asterisk – http://my.opera.com/asteriskvn

Priorities là thứ tự thực hiện các ứng dụng trong dialplan, khi thứ tự “1” được
thực hiện thì kế tiếp là ứng dụng tại thứ tự số “2” được thực hiện, kể từ vertion 1.2
của Asterisk thay vì sử dụng gán một con số cụ thể cho thứ tự thực hiện như trên thì
ở đây có thể gán ký tự “n” cho mọi dòng “exten=>” điều này sẽ nói với asterisk là
ứng dụng với thứ tự tiếp theo sẽ thực hiện.

Ví dụ:

/etc/asterisk/extention.conf

exten=>8051,2,hangup()

exten=>8051,1,dial(sip/8051,20)

Ở ví dụ trên dòng có thứ tự “2” đứng trước dòng có thứ tự “1”, nhưng khi thực hiện
diaplan thì dòng có thứ tự Priorities “1” ưu tiên thực hiện trước bất kể thứ tự sắp xếp như
thế nào.

Ví dụ :

/etc/asterisk/extention.conf

exten=>8051,n,dial(sip/8051,20)

exten=>8051,n,hangup()

Thứ tự thực hiện từng dòng 1 từ trên xuống dưới.

3 Aplications – Các hàm ứng dụng

Đây là phần quan trọng trong diaplan tức là ứng dụng nào sẽ được thực hiện
trên mỗi dòng, các ứng dụng như thực hiện quay số,trả lời cuộc gọi hay đơn giản là
nhấc gác máy để biết thêm thông tin về các ứng dụng cũng như các thông số kèm
theo thì hãy dùng lệnh show Aplications trên giao tiếp dòng lệnh của asterisk:

Tác Giả Lê Quốc Toàn

62
Sách Asterisk – http://my.opera.com/asteriskvn

CLI> show Aplications

4 Contexts - Ngữ cảnh

Đầu tiên hãy hình dung như thế này, khi Cô Giáo và Sinh Viên trao đổi về
môn cơ sở tin học viễn thông có nghĩa là ngữ cảnh(context) lúc này chỉ tập trung
vào lĩnh vực viễn thông mà thôi. Như vậy ngữ cảnh (context) đã được giới hạn
trong một tình huống cụ thể, đối với Asterisk ở đây cũng thế khi nói đến ngữ cảnh
(context) thì thường quan tâm đến trường hợp cụ thể nào đó, điều này rõ ràng rằng
trong hệ thống sẽ có rất nhiều ngữ cảnh(context) khác nhau.

Ví dụ khi gọi đến tổng đài Asterisk có một thông điệp thông báo như sau
“Chào mừng các Bạn gọi đến công ty chúng tôi hãy nhấn phím 1 để gặp phòng kinh
doanh phím 2 gặp phòng kỹ thuật…” khi người gọi chọn phím 1 thì hệ thống sẽ
chuyển đến một ngữ cảnh (context) là [PhongKinhDoanh] khi người gọi nhấn phím
2 thì hệ thống sẽ định hướng cuộc gọi qua ngữ cảnh (context) [PhongKyThuat] như
vậy ứng với mỗi trường hợp hệ thống sẽ có ngữ cảnh khác nhau, ngữ cảnh được đặt
trong dấu [] .

/etc/asterisk/extention.conf

[PhongKinhDoanh]

exten => 7325010,1,Dial(SIP/${EXTEN}),20)

exten => 7325010,2,Voicemail(u${EXTEN})

[PhongKyThuat]

exten => _9.,1,Dial(SIP/${EXTEN})

Ngoài ta đối với việc cấu hình cho các kênh thoại thì ngữ cảnh ở đây là việc
xử lý các cuộc gọi tương ứng với kênh đó qua kế hoạch diaplan.

Tác Giả Lê Quốc Toàn

63
Sách Asterisk – http://my.opera.com/asteriskvn

ví dụ:

/etc/asterisk/sip.conf

[8051]

Type=friend

Context=Tu_SIP

………………

[8052]

Type=friend

Context=noibo

………………

/etc/asterisk/extention.conf

[noibo]

exten=>8051,1,dial(sip/8051,20)

exten=>8051,2,hangup()

[Tu_SIP]

exten=>8052,1,dial(sip/8052,20)

exten=>8052,2,hangup()

Khi thuê bao 8052 nhấc máy thì Asterisk chuyển cuộc gọi này đến ngữ cảnh
[noibo] và chờ nhận con số quay, nếu thuê bao 8052 quay số 8051 thì số máy 8051

Tác Giả Lê Quốc Toàn

64
Sách Asterisk – http://my.opera.com/asteriskvn

sẽ rung chuông trong vòng 20 giây, nếu qua 20 giây mà thuê bao 8051 không nhấc
máy thì cuộc gọi sẽ kết thúc.

Khi thuê bao 8051 nhấc máy thì Asterisk chuyển cuộc gọi này đến ngữ cảnh
[Tu_SIP] và chờ nhận con số quay, nếu thuê bao 8051 quay số 8052 thì số máy
8052 sẽ rung chuông trong vòng 20 giây, nếu qua 20 giây mà thuê bao 8052 không
nhấc máy thì cuộc gọi sẽ kết thúc.

7 Ngữ cảnh thực hành ứng dụng

Hình Ngữ cảnh thực hành ứng dụng

Trong phần thực hành này chúng ta cần trang bị những thiết bị sau:

+ Máy tính server asterisk.

Tác Giả Lê Quốc Toàn

65
Sách Asterisk – http://my.opera.com/asteriskvn

+ Hai máy tính client cài đặt hai softphone X-lite nối mạng với máy tính
server asterisk.

+ Để giao tiếp với PSTN cần trang bị card FXO hoặc nhà cung cấp dịch vụ
VoIP.

1 Bước 1: Cấu hình cho hai sip phone X-lite 8051 và 8052 bằng
cách cấu hình trên file sip.conf như sau:

/etc/asterisk/sip.conf

Tác Giả Lê Quốc Toàn

66
Sách Asterisk – http://my.opera.com/asteriskvn

[general]

Bindport=5060

Bindaddr=0.0.0.0

Context=default

Disallow=all

Allow=ulaw

Maxexpirey=120

Defaultexpirey=80

[8051]

Type=friend

Secret=123456

Context=NoiBo

Host=dynamic

Canreinvite=no

[8052]

Type=friend

Secret=2222

Context=NoiBo

Host=dynamic

Canreinvite=no

2 Bước 2: Cấu hình softphone x-lite phía client cho máy 8051

Tác Giả Lê Quốc Toàn

67
Sách Asterisk – http://my.opera.com/asteriskvn

1. Chọn settings trên menu

2. Thực hiện khai báo cấu hình như sau:

3. Chọn apply hoặc ok để xác nhận thông tin.

4. Tại đây softphone có thể kết nối với server asterisk

3 Bước 3 : Lập lại bước hai để khai báo máy điện thoại softphone
8052

8 Tạo diaplan.

Tác Giả Lê Quốc Toàn

68
Sách Asterisk – http://my.opera.com/asteriskvn

Bây giờ tới phần để cho các máy điện thoại đã khai báo trên có thể thực hiện
các cuộc gọi với nhau thì chúng ta tiến hành thực hiện dialplan, việc này được cấu
hình trong file extention.conf

1 Thực hiện một ví dụ cơ bản.

/etc/asterisk/extention.conf

[incoming]

Exten=>s,1,answer()

Exten=>s,2,playback(hello_world)

Exten=>s,3,hangup()

Thứ tự Priority 1 thực hiện ứng dụng trả lời cuộc gọi cho tất cả các cuộc gọi
đến sau đó chuyển qua thứ tự Priority kế tiếp.

Thứ tự Priority 2 hệ thống sẽ phát ra thông điệp thoại từ file âm thanh


helloworld.gsm.

Cuối cùng Priority 3 kết thúc cuộc gọi.

Giải thích đoạn lệnh trên:

Một cuộc gọi nhận từ cổng giao tiếp FXO được gửi đến ngữ cảnh
[incoming], ngữ cảnh này được định nghĩa trong file cấu hình zapata.conf, các cuộc
gọi vào được xử lý qua extention “s”, trong ví dụ trên có 3 priorities, ứng với mỗi
priorities là một ứng dụng được gọi thực hiện.

Extention “s” là một extention đặc biệt thực hiện xử lý các cuộc gọi vào khi
con số được quay của thuê bao đến hệ thống asterisk là không biết trước. (ví dụ các
cuộc gọi vào từ giao tiếp FXO)

Tác Giả Lê Quốc Toàn

69
Sách Asterisk – http://my.opera.com/asteriskvn

Answer() Application thực hiện trả lời cuộc gọi trong trạng thái cuộc gọi
đang rung chuông hoặc một số ứng dụng trả lời cuộc gọi trước khi xử lý cuộc gọi.

Playback() Application ứng dụng này để phát một file âm thanh được thu
sẵn. Khi ứng dụng playback() thực thi thì tất cả các con số được gửi đến từ điện
thoại ấn phím đều bị loại bỏ. cú pháp playback(Tenfile). Tên file có thể là dạng
.gsm hoặc .wav, file âm thanh được lấy từ thư mục mặc định là
(/var/lib/asterisk/sounds).

Hangup() application ứng dụng kết thúc cuộc gọi.

2 Các ứng dụng dial(), background() và goto().

Để thực hiện dialplan thêm phần uyển chuyển hơn xin giới thiệu thêm 3 ứng
dụng cơ bản nữa trong thực hiện dialplan.

Background() : Ứng dụng này thực hiện phát một file âm thanh và chờ nhận
con số từ phím nhấn của máy điện thoại, sau khi nhận con số từ phím nhấn máy
điện thoại, asterisk sẽ ngắt phát thông điệp và xử lý chuyển đến số thứ tự priority
tương ứng với con số nhận được. cú pháp của ứng dụng:

exten=>extention,priority,background(TênFile)

goto() : Là ứng dụng thực hiện nhảy từ context, extention, priority hiện hành
đến context, extention, priority được chỉ định trong ứng dụng goto().

Cú pháp của ứng dụng goto():

/etc/asterisk/extention.conf

exten=>extention,priority,goto(context,extention,priority)

exten=>extention,priority,goto(extention,priority)

exten=>extention,priority,goto(priority)

Tác Giả Lê Quốc Toàn

70
Sách Asterisk – http://my.opera.com/asteriskvn

Sau đây là một đoạn lệnh minh họa cho ứng dụng của một công ty gồm 3
phòng ban đó là phòng kỹ thuật, phòng hành chánh và phòng tiếp thị bán hàng. Khi
cuộc gọi đến công ty thì hệ thống asterisk sẽ phát thông điệp mời nhấn số để chọn
phòng ban cần liên lạc. Thông điệp “Chào mừng gọi đến công ty ABC của chúng tôi
mời nhấn phím 1 để chuyển đến phòng Kỹ thuật, phím 2 đến phòng hành chánh và
phím 3 đến phòng tiếp thị bán hàng” sau khi người gọi nhấn phím tương ứng với
1,2,3 thì sẽ được thông báo và chuyển đến phòng ban tương ứng.

/etc/asterisk/extention.conf

[incoming]

Exten=>s,1,answer()

Exten=>s,2,background(LoiChao)

Exten=>s,3,hangup()

Exten=>1,1,playback(KyThuat)

Exten=>1,2,goto(kythuat,s,1)

Exten=>2,1,playback(HanhChanh)

Exten=>2,2,goto(HanhChanh,s,1)

Exten=>3,1,playback(TiepThiBanHang)

Exten=>3,2,goto(TiepThiBanHang,s,1)

Dial() : Ứng dụng thực hiện quay số điện thoại, để minh họa cho ứng dụng
dial() chúng ta cải thiện đoạn dialplan trên, thay vì chuyển đến ngữ cảnh tương ứng
thì thực hiện quay trực tiếp đến số điện thoại của phòng ban đó. Ví dụ thực hiện
quay số SIP/8051 cho phòng kỹ thuật, iax2/8000 cho phòng Hành Chánh và gọi đến
zap/1 cho phòng tiếp thị bán hàng.

Tác Giả Lê Quốc Toàn

71
Sách Asterisk – http://my.opera.com/asteriskvn

/etc/asterisk/extention.conf

[incoming]

Exten=>s,1,answer()

Exten=>s,2,background(LoiChao)

Exten=>s,3,hangup()

Exten=>1,1,playback(KyThuat)

Exten=>1,2,dial(sip/8051)

Exten=>2,1,playback(HanhChanh)

Exten=>2,2,dial(iax2/8000)

Exten=>3,1,playback(TiepThiBanHang)

Exten=>3,2,dial(zap/1)

Tác Giả Lê Quốc Toàn

72

You might also like