You are on page 1of 163

ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

LỜI CẢM ƠN

Để hoàn thành đồ đề tài tốt nghiệp này, chúng em đã được sự giúp đỡ của rất
nhiều người. Việc cám ơn sau khi hoàn thành đề tài tốt nghiệp là một điều tất yếu.
Trước hết chúng em xin được cảm ơn các thầy cô giáo trong bộ môn Viễn Thông và
nhất là cô Phạm Thị Xuân Phương, người đã chịu trách nhiệm hướng dẫn đề tài này.
Cô đã tạo hướng đi, hướng dẫn, giúp đỡ và tạo điều kiện tốt nhất để chúng em có
thể hoàn thành tốt công việc được giao. Những kiến thức mà chúng em có được
trong quá trình hoàn thành luận văn chắc chắn sẽ giúp ích rất nhiều cho chúng em
sau này.
Kế đến, chúng em xin cảm ơn gia đình, bạn bè, những người đã khích lệ tinh
thần, hỗ trợ kinh phí trong quá trình thực hiện luận văn. Xin cảm ơn các thành viên
cộng đồng mã nguồn mở, những người tiên phong luôn muốn làm cho thế giới hoàn
thiện hơn về công nghệ, đã không ngần ngại chia sẽ kỹ thuật cũng như công nghệ.
Một lần nữa xin cảm ơn tất cả mọi người!

TPHCM, tháng 8 năm 2008


Nguyễn Thanh Hiếu
Nguyễn Thanh Phước

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -1-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

MỤC LỤC:
MỤC TIÊU, YÊU CẦU VÀ HƯỚNG GIẢI QUYẾT ĐỀ TÀI..............................10
Chương 1: CÁC GIAO THỨC TRUYỀN TẢI VÀ BÁO HIỆU TRONG .............12
MẠNG VoIP .........................................................................................................12
1.1 VoIP là gì? ...................................................................................................12
1.2 Giao thức TCP/IP.........................................................................................13
1.2.1 Giới thiệu về mạng IP............................................................................13
1.2.2 Giao thức IP (Internet Protocol).............................................................15
1.2.3 Địa chỉ IP ..............................................................................................17
1.2.4 Định tuyến - Routing .............................................................................18
1.2.5 Giao thức TCP (Transport Control Protocol) .........................................18
1.2.6 UDP (User Data Protocol) ....................................................................19
1.3 RTP (Real Time Protocol)............................................................................20
1.4 RTCP (Real-time Transport Control Protocol) .............................................23
1.5 RSVP (Resource Reservation Protocol) .......................................................24
1.6 Bộ giao thức H.323 ......................................................................................26
1.7 SIP (Session Initation Protocol) ...................................................................29
1.8 MGCP ( Media Gateway Control Protocol)..................................................32
1.9 NAT (Network address translator) ...............................................................35
1.10 Giao thức IAX (Inter Asterisk eXchange) ..................................................35
Chương 2: TỔNG QUAN VỀ ASTERISK ............................................................37
2.1 Giới thiệu .....................................................................................................37
2.2 Kiến trúc asterisk .........................................................................................38
2.3 Một số tính năng cơ bản ..............................................................................40
2.3.1 Voicemail (hộp thư thoại) ......................................................................41
2.3.2 Call Forwarding(chuyển cuộc gọi).........................................................41
2.3.3 Caller ID (hiển thị số gọi) ......................................................................42
2.3.4 Automated attendant (chức năng IVR)...................................................42
2.3.5 Time and Date .......................................................................................42

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -2-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

2.3.6 Call Parking...........................................................................................43


2.3.7 Remote call pickupe ..............................................................................43
2.3.8 Privacy Manager....................................................................................43
2.3.9 Backlist .................................................................................................43
2.4 Các ngữ cảnh ứng dụng................................................................................43
2.4.1 Tổng đài voip IP PBX............................................................................43
2.4.2 Kết nối IP PBX với PBX .......................................................................43
2.4.3 Kết nối giữa các server Asterisk ............................................................44
2.4.4 Các ứng dụng IVR, VoiceMail, Điện Thoại Hội Nghị ...........................44
2.4.5 Chức năng Phân phối cuộc gọi tự động ACD (Automatic Call
Distribution)...................................................................................................44
Chương 3: MỘT SỐ KHÁI NIỆM TRONG HỆ THỐNG ASTERISK ..................45
3.1 PBX - Private Branch Exchange...................................................................45
3.1.1 Âm hiệu mời quay số (Dial tone):.........................................................45
3.1.2 Âm hiệu báo bận (Busy tone): ...............................................................46
3.1.3.Âm hiệu hồi âm chuông (Ring back tone):.............................................47
3.1.4.Tín hiệu chuông (Ring tone): .................................................................47
3.1.5 Tín hiệu số quay: ...................................................................................48
3.2 PSTN – Public Switched Telephone Network ..............................................49
3.3 TDM – Time Division Multiplexing.............................................................50
3.4 Các hình thức báo hiệu giao tiếp TDM.........................................................50
3.4.1 FXO và FXS..........................................................................................50
3.4.2 Báo hiệu Analog giữa đầu cuối và tổng đài............................................51
3.4.3 Báo hiệu giữa các tổng đài.....................................................................51
3.5 Thiết Bị VoIP...............................................................................................52
3.5.1 Voip Phone............................................................................................52
3.5.2 Softphone ..............................................................................................52
3.5.3 Card giao tiếp với PSTN........................................................................53
3.5.4 ATA Analog Telephone Adaptors .........................................................54

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -3-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

3.6 Codecs .........................................................................................................54


3.7 QoS – Quality of Service .............................................................................55
3.7.1 Độ trễ ....................................................................................................55
3.7.2 Độ trượt(Jitter).......................................................................................56
Chương 4: CÀI ĐẶT VÀ CẤU HÌNH ASTERISK ...............................................60
4.1 Cài đặt asterisk.............................................................................................60
4.2 Tổ Chức Thư Mục của Asterisk ...................................................................62
4.2.1 /etc/asterisk/...........................................................................................62
4.2.2 /usr/lib/asterisk/modules/ ......................................................................63
4.2.3 /var/lib/asterisk .....................................................................................63
4.2.4 /var/spool/asterisk/................................................................................64
4.2.5 /var/run/.................................................................................................65
4.2.6 /var/log/asterisk/ ....................................................................................65
4.2.7 /var/log/asterisk/cdr-csv........................................................................66
4.3 Một số lệnh thao tác trên hệ thống asterisk...................................................66
4.4 Tập tin cấu hình ...........................................................................................67
4.5 Các kiểu ảnh hưởng trong tập cấu hình ........................................................68
4.5.1 Simple Group .......................................................................................69
4.5.2 Option inheritance ................................................................................69
4.5.3 Complex Entity......................................................................................70
4.6 Giới Thiệu DialPlan .....................................................................................70
4.6.1 Extentions..............................................................................................71
4.6.2 Priorities – Thứ tự thực hiện ..................................................................72
4.6.3 Aplications – Các hàm ứng dụng ...........................................................73
4.6.3.1 Ứng dụng Playback() và Goto() ......................................................73
4.6.3.2 Ứng dụng GotoIf( ) ........................................................................75
4.6.4 Contexts - Ngữ cảnh ..............................................................................76
4.6.5 Chỉ định Pattern.....................................................................................78
4.6.6 Include...................................................................................................79

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -4-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

4.6.7 Sử dụng Database Asterisk ....................................................................81


4.6.8 Các biểu thức căn bản:...........................................................................82
Chương 5: MÔ HÌNH THỰC HIỆN......................................................................86
5.1 Một số mô hình sử dụng trong thực tế ..........................................................86
5.1.1 Mô hình đơn site....................................................................................86
5.1.2 Mô hình đa site xử lý cuộc gọi phân tán.................................................87
5.1.3 Mô hình đa site xử lí cuộc gọi tập trung.................................................88
5.1.4 Mô hình đa site xử lý cuộc gọi kết hợp ..................................................89
5.2 Mô hình triển khai hệ thống Asterisk ...........................................................91
5.3 Cấu hình phần cứng .....................................................................................92
5.3.1 Cấu hình thiết bị Grandstream 488.........................................................92
5.3.2 Lắp đặt Card X100P và cấu hình ...........................................................95
5.4 Khai báo kênh SIP .......................................................................................97
5.5 Khai báo kênh IAX .................................................................................... 100
5.6 Cấu hình Softphone.................................................................................... 101
5.6.1 Cấu hình Softphone Xlite..................................................................... 101
5.6.2 Cấu hình Softphone Zoiper .................................................................. 102
5.7 Xây dựng IP-PBX ...................................................................................... 103
5.7.1 Cuộc gọi nội bộ giữa hai thuê bao sử dùng cùng giao thức báo hiệu .... 104
5.7.2 Cuộc gọi nội bộ giữa hai thuê bao sử dùng khác giao thức báo hiệu..... 106
5.7.3 Cuộc gọi ra ngoài PSTN ...................................................................... 107
5.8 Xây dựng các dịch vụ................................................................................. 108
5.8.1 IVR (Interactive voice response).......................................................... 108
5.8.2 Voicemail (hộp thư thoại) .................................................................... 110
5.8.3 Call Forwarding (chuyển cuộc gọi)...................................................... 112
5.8.3.1 Chuyển cuộc gọi tức thời .............................................................. 112
5.8.3.2 Chuyển cuộc gọi khi bận ............................................................... 113
5.8.3.3 Chuyển cuộc gọi khi không trả lời................................................. 115
5.8.4 Call Transfer........................................................................................ 116

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -5-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

5.8.5 Call Parking......................................................................................... 117


5.8.6 Call Pickup .......................................................................................... 120
5.8.7 Meetme (chức năng hội nghị) .............................................................. 121
5.8.8 DND (Do not Disturb - Dịch vụ chống làm phiền ).............................. 127
5.8.9 DISA (Direct Inward System Access).................................................. 128
5.8.10 Asterisk RealTime Architecture......................................................... 131
5.8.11 CDR (Call Detail Record).................................................................. 135
5.9 Dial Plan-Liên kết các dịch vụ ................................................................... 139
PHỤ LỤC............................................................................................................ 149
PHỤ LỤC 1: CÀI ĐẶT FEDORA CORE 5..................................................... 149
PHỤ LỤC 2: MỘT SỐ CÂU LỆNH SỬ DỤNG TRONG MYSQL VÀ PHP .. 158
PHỤ LỤC 3: HƯỚNG DẪN PHẦN MỀM BẮT GÓI ETHEREAL ................ 159
PHỤ LỤC 4: CÁC THUẬT NGỮ VIẾT TẮT: ................................................ 162

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -6-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

BẢNG CÁC HÌNH VẼ


Hình 1: Mô hình tổng quan....................................................................................11
Hình 1.1 Mô hình tham chiếu OSI và mô hình TCP/IP .........................................14
Hình 1.2: Đóng gói dữ liệu của user thành khung Ethernet ....................................14
Hình 1.3: Tiêu đề gói dữ liệu IP.............................................................................15
Hình 1.4: Các lớp của địa chỉ IP ............................................................................17
Hình 1.5: Ví dụ về điều khiển luồng dùng cửa sổ trượt ..........................................19
Hình 1.6: Định dạng gói tin UDP ..........................................................................20
Hình 1.7: Cấu trúc gói tin RTP ..............................................................................21
Hình 1.8: Cấu trúc gói tin RTCP............................................................................24
Hình 1.9: Mối quan hệ giữa Flowspec và Fliterspec ..............................................26
Hình 1.10: Các giao thức sử dụng trong H.323 ......................................................26
Hình 1.11: Một số bản tin RAS thông dụng ...........................................................27
Hình 1.12: Các thông điệp Q.931 thông dụng ........................................................27
Hình 1.13: Các thành phần của H.323...................................................................28
Hình 1.14: Tiến hành cuộc gọi trong H.323 ...........................................................28
Hình 1.15: Các thành phần trong SIP....................................................................29
Hình 1.16: Tiến hành cuộc gọi trong SIP với proxy server.....................................31
Hình 1.17: Các thành phần cơ bản trong MGCP ....................................................32
Hình 1.18: Tiến hành cuộc gọi trong MGCP.........................................................33
Hình 1.19: Minh họa hoạt động của NAT..............................................................35
Hình 2.1: Sơ đồ tổng quát ......................................................................................38
Hình 2.2: Sơ đồ khối của asterisk ..........................................................................39
Hình 3.1: Âm hiệu Dial tone..................................................................................46
Hình 3.2: Âm hiệu báo bận....................................................................................46
Hình 3.3: Âm hiệu ring back tone..........................................................................47
Hình 3.4: Âm hiệu rung chuông.............................................................................47
Hình 3.5: Ma trận nút nhấn ...................................................................................49

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -7-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 3.6 a) Máy điện thoại vai trò FXO kết nối với FXS (PSTN), Hình b) PBXkế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...................................................................................................51
Hình 3.7: Điện thoại VoIP .....................................................................................52
Hình 3.8: Điện Thoại Softphone ............................................................................53
Hình 3.9 Card TDM22B gồm 4 port 2 FXS và 2 FXO...........................................53
Hình 3.10: Thiết bị ATA .......................................................................................54
Hình 3.11: Các thuật toán codec ............................................................................55
Hình 3.12: Nguyên nhân gây ra jitter .....................................................................57
Hình 4.1: Cấu trúc thư mục ...................................................................................65
Hình 4.2: Một ví dụ về file cấu hình ......................................................................68
Hình 4.3: Các kiểu ảnh hưởng trong tập tin cấu hình .............................................68
Hình 5.1: mô hình đơn site ....................................................................................86
Hình 5.2: Mô hình đa site phân tán ........................................................................88
Hình 5.3: Mô hình đa site tập trung .......................................................................89
Hình 5.4: Mô hình đa site kết hợp..........................................................................90
Hinh 5.5: Mô hình triển khai hệ thống asterisk ......................................................91
Hình 5.6: Grandstream 488....................................................................................93
Hình 5.7: Giao diện cổng phone của Grandstream 488 ..........................................94
Hình 5.8: Giao diện cổng line của Grandstream 488 ..............................................95
Hình 5.9 : Card X100P ..........................................................................................95
Hình 5.10: Cấu hình điện thoại x-lite ................................................................... 101
Hình 5.11: Khai báo user điện thoại x-lite............................................................ 102
Hình 5.12: Cấu hình điện thoại zoiper ................................................................. 102
Hình 5.13: Khai báo user điện thoại zoiper .......................................................... 103
Hình 5.14: Mô hình thực hiện cuộc gọi nội bộ cùng giao thức ............................. 104
Hình 5.15: Các bản tin trong cuộc gọi nội bộ....................................................... 105
Hình 5.16: Mô hình thực hiện cuộc gọi nội bộ khác giao thức ............................. 106
Hình 5.18: Các bản tin cuộc gọi ra ngoài PSTN.................................................. 108

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -8-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.19: Mô hình minh họa thực hiện dịch vụ IVR .......................................... 109
Hình 5.20: Các bản tin khi thực hiện chuyển cuộc gọi tức thời ............................ 113
Hình 5.21: Các bản tin khi thực hiện chuyển cuộc gọi khi bận............................. 114
Hình 5.22: Các bản tin thực hiện chuyển cuộc gọi khi không trả lời .................... 116
Hình 5.23: Các bản tin khi thực hiện dịch vụ transfer .......................................... 117
Hình 5.24: Các bản tin khi thực hiện dịch vụ call parking.................................... 120
Hình 5.25: Các bản tin khi thực hiện dịch vụ call pickup ..................................... 121
Hình 5.26: Mô hình thực hiện hội nghị ................................................................ 122
Hình 5.27: Các bản tin khi thực hiện chức năng hội nghị..................................... 127
Hình 5.28: Mô hình thực hiện dịch vụ DISA ....................................................... 129
Hình 5.29:Các gói tin khi thực hiện dịch vụ DISA............................................... 131
Hình 5.30: Giao diện web chi tiết cuộc gọi .......................................................... 139

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC -9-
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

MỤC TIÊU, YÊU CẦU VÀ HƯỚNG GIẢI QUYẾT ĐỀ TÀI

Ngày nay với việc phát triển bùng nổ của công nghệ mạng. Hầu hết các công
ty đều xây dựng một mạng LAN hay một mạng WAN riêng cho mình. Việc tích
hợp mạng thoại dựa trên hạ tầng mạng sẵn có sẽ làm giảm chi phí lắp đặt cũng như
sử dụng khi gọi nội bộ. Việc nghiên cứu một vài mô hình ứng dụng mạng điện thoại
trên cơ sở đã có mạng hạ tầng sẵn có để áp dụng triển khai cho các doanh nghiệp
vừa và nhỏ là một điều cần thiết. Hiện nay, trên thực tế đã có rất nhiều doanh
nghiệp trong và ngoài nước đã xây dựng mạng điện thoại trên nền tảng IP cho riêng
mình sử dụng các server tổng đài của các hãng khác nhau. Đề tài sẽ xây dựng và
thiết kế một hệ thống thoại đáp ứng trong thực tế cho các doanh nghiệp nhỏ.
*Mục tiêu
Mục tiêu đặt ra là hệ thống thoại thực hiện sẽ có một server tổng đài thực
hiện xử lí các cuộc gọi trong mạng nội bộ và đi ra ngoài. Các thuê bao nội bộ trong
mạng gọi cho nhau mà doanh nghiệp không phải tốn một chi phí về cước viễn thông
nào. Hơn nữa, hệ thống sẽ được xây dựng các dịch vụ như voicemail, chuyển cuộc
gọi, hội nghị v.v. mà chỉ có ở những tổng đài số đắt tiền.
*Yêu cầu
Các điện thoại trong mạng LAN có thể gọi cho nhau, cũng như gọi ra ngoài
PSTN, gọi ra ngoài internet thông qua một nhà cung cấp dịch vụ VoIP. Tất cả đều
được xử lí thông qua một server. Các thuê bao ở ngoài gọi vào sẽ nghe được lời
chào của doanh nghiệp đã được định trước. Các thuê bao nội bộ có thể sử dụng
được nhiều dịch vụ như mong muốn. Xây dựng một trang web hiển thị chi tiết các
cuộc gọi đã gọi. Sử dụng một cơ sở dữ liệu cần thiết để hệ thống có thể đáp ứng
theo thời gian thực.
* Hướng giải quyết đề tài:
Chọn lựa server là phần mềm mã nguồn mở chuyển mạch asterisk được cài
trên cơ sở hệ điều hành linux. Hai PC sử dụng hai softphone có hai giao thức báo
hiệu khác nhau. Một analogphone thông qua ATA tham gia vào hệ thống. Hai

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 10 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

gateway trong đó một là gắn trong khe PCI và một là gắn ngoài để kết nối hệ thống
ra ngoài PSTN. Tất cả việc xử lí cuộc gọi sẽ được lập trình trong phần mềm chuyển
mạch asterisk.

Hình 1: Mô hình tổng quan

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 11 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Chương 1
CÁC GIAO THỨC TRUYỀN TẢI VÀ BÁO HIỆU TRONG
MẠNG VoIP
1.1 VoIP là gì?
VoIP (Voice over Internet Protocol) 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.
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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 12 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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.
1.2 Giao thức TCP/IP
1.2.1 Giới thiệu về mạng IP
Mạng IP là các loại mạng dữ liệu sử dụng chồng giao thức TCP/IP trong đó
sử dụng giao thức IP cho lớp mạng (lớp 3) còn ở lớp truy nhập mạng (lớp 2) có thể
là giao thức của mạng LAN, x25, Frame Relay, PPP...IP là từ viết tắt của Internet
Protocol phiên bản 4 là phiên bản hiện được sử dụng nhiều nhất, ta thường viết IPv4
để chỉ ra phiên bản của giao thức này, ngoài ra còn có phiên bản 6 (IPv6).

Để thuận tiện cho việc thiết kế và cài đặt mạng thì người ta thường sử dụng
phương pháp thiết kế theo kiểu phân lớp. Mỗi thành phần hệ thống mạng được xem
như một kiến trúc đa tầng, trong đó các tầng ở trên thì được xây dựng trên cơ sở
tầng ngay dưới nó, mỗi lớp sẽ thực hiện một chức năng riêng nào đó và sẽ được các
lớp liền kề nó sử dụng. Bằng cách này sẽ tạo ra được rất nhiều lợi ích. Đầu tiên là
dễ dàng hơn cho việc thiết kế bởi vì sẽ rất khó khăn nếu như thực hiện toàn bộ chức
năng trên một lớp, bằng cách chia ra các lớp ta chỉ cần thực hiện chức năng của
từng lớp một có thể điều này không dễ dàng hơn nhưng ta giải quyết công việc một
cách hiệu quả hơn. Một lợi ích khác đó là khả năng thích ứng, giả sử như ta muốn
thay đổi phần mềm thì lúc đó ta chỉ cần thay đổi ở lớp có liên quan. Có hai mô hình
phân lớp tiêu biểu đó là mô hình tham chiếu mở OSI (Opening System
Interconnection) và mô hình TCP/IP.

Mô hình tham chiếu OSI là mô hình chuẩn có 7 lớp được thiết kế bởi tổ chức
tiêu chuẩn quốc tế ISO (International Standard Organization). Mô hình chỉ đưa ra
công việc mỗi lớp nên thực hiện ví dụ như việc sử dụng giao thức nào chứ không đi
vào chi tiết. Khi thực hiện trong thực tế dựa trên mô hình này có một số lớp gần như
trống rỗng nhưng có lớp rất phức tạp tuy nhiên đây là mô hình chuẩn và là mô hình
tiêu biểu cho phương pháp thiết kế phân lớp.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 13 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 1.1 Mô hình tham chiếu OSI Mô hình TCP/IP

Hình 1.2: Đóng gói dữ liệu của user thành khung Ethernet
Trong các mô hình phân lớp thì khi dữ liệu được truyền từ lớp trên xuống
các lớp dưới thì mỗi lớp đều thêm vào phần điều khiển của mình để đảm bảo việc
truyền dữ liệu được chính xác. Mỗi thông tin điều khiển này gọi là header và được
đặt ở phần trước dữ liệu. Việc thêm vào phần header ở mỗi lớp trong quá trình
truyền nhận tin gọi là sự đóng gói (encapsulation). Quá trình nhận dữ liệu diễn ra
theo thứ tự ngược lại mỗi lớp sẽ tách phần header của nó ra trước khi chuyển dữ
liệu lên lớp trên. Trên thực tế cấu trúc dữ liệu của mỗi lớp được cấu tạo tương thích
với lớp trên hay lớp dưới nó để cho việc truyền nhận dữ liệu được hiệu quả hơn.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 14 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

1.2.2 Giao thức IP (Internet Protocol)


Giao thức chính của của bộ TCP/IP là IP. Nó là sự thực thi của lớp mạng và
được chỉ định chính thức trong RFC 791. IP được thiết kế cho người sử dụng trong
các mạng máy tính liên kết với nhau. Nó cùng cấp dịch vụ giao nhận không tin cậy
host đến host dạng gói. Gói dữ liệu còn được gọi là IP datagram. Dạng không tin
cậy có nghĩa là không có một sự đảm bảo rằng IP datagram đến địa chỉ đích đúng
thứ tự. Cũng không chắc chắn rằng datagram trên thực tế đến đúng địa chỉ đích. IP
dựa vào giao thức tầng cao hơn để xử lý những vấn đề này
Hai tính chất chính của IP là địa chỉ IP và phân mãnh. Thông tin yêu cầu để
cung cấp các dịch vụ này chứa trong tiêu đề (header) của IP datagram. Phần tiêu đề
có chiều dài từ 20 đến 60 byte. Hình 2.5 chỉ cấu trúc của IP header.

Bit 0-3 Bit 4-7 Bit 8-10 Bit 11- Bit 16- Bit 20- Bit 24- Bit 28-
15 19 23 27 31
Phiên Chiều Độ ưu Loại Độ dài tổng
bản dài tiêu tiên dịch vụ
đề
Số liệu gói dữ liệu Phân mảnh
Thời gian sống Giao Thức Tổng kiểm tra
Địa chỉ nguồn
Địa chỉ đích
Tuỳ chọn

Hình 1.3: Tiêu đề gói dữ liệu IP


- Phiên bản (Version): Trường 4 bit này cho biết phiên bản IP tạo ra phần
tiêu đề này. Phiên bản hiện tại là 4. Tuy nhiên phiên bản IPv6 sẽ thay thế
IPv4 trong tương lai.
- Chiều dài tiêu đề (HL – Header Length): Trường 4 bit này cho biết chiều
dài của phần tiêu đề của gói dữ liệu IP, tính theo đơn vị từ (32 bit). Trường
này cần thiết vì chiều dài của phần tiêu đề thay đổi (từ 20 đến 60 byte). Khi
không có phần tuỳ chọn (option), chiều dài phần tiêu đề là 20 byte và giá trị
của trường này là 5 (5x4=20). Khi phần tuỳ chọn có kích thước tối đa thì
giá trị của trường là 15 (15x4=60).

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 15 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Độ ưu tiên ( Precedence): Trường này có chiều dài 3 bit, giá trị nằm trong
khoảng từ 0 (000) đến 7 (111). Nó chỉ rõ độ ưu tiên của gói trong trường
hợp mạng bị tắt nghẽn. Nếu bộ định tuyến bị tắt nghẽn và cần bỏ một số gói
dữ liệu, nó sẽ bỏ các gói dữ liệu có độ ưu tiên cao nhất.
- Loại dịch vụ (TOS): Trường 5 bit này đặc tả các tham số về dịch vụ, có
dạng cụ thể như sau:
- Loại dịch vụ
-D -T -R -C -X

Trong 5 bit này có một bit dự phòng (x). Cho dù các bit đều có thể lấy
giá trị 0 hoặc 1, nhưng trong một gói dữ liệu chỉ có một bit được đặt 1.
+ 00000: Bình thường
+ 00010: Giá nhỏ nhất
+ 00100: Độ tin cậy cao nhất
+ 10000: Độ trễ nhỏ nhất
- Độ dài tổng (Total Length IP): Trường 16 bit này cho biết chiều dài tính
theo byte của cả gói dữ liệu.
- Số hiệu gói dữ liệu (Datagram Identification): Trường 16 bit này cùng với
các trường khác (như địa chỉ nguồn và địa chỉ đích) dùng để định danh duy
nhất cho một gói dữ liệu trong khoảng thời gian nó vẫn tồn tại trên liên
mạng. Giá trị này được tăng lên một đơn vị mỗi khi có gói dữ liệu được
trạm gởi đi. Do vậy giá trị này sẽ quay lại không mỗi khi trạm đã gửi đi
65535 gói dữ liệu.
- Phân mãnh (Fragmentation): Trường dữ liệu này được sử dụng khi gói
phân mãnh.
- Thời gian sống (Time to live): Trường 8 bit này quy định thời gian tồn tại
(tính bằng giây) của gói dữ liệu trong liên mạng để tránh tình trạng gói dữ
liệu bị chuyển vòng quanh trên liên mạng. Thời gian này được trạm gửi đặt
và được giảm đi 1 khi gói dữ liệu qua bộ định tuyến trên mạng.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 16 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Giao thức (Protocol): Trường 8 bit này cho biết giao thức tầng trên sử
dụng dịch vụ của IP. Gói dữ liệu của IP có thể được đóng gói dữ liệu từ
nhiều giao thức tầng trên, chẳng hạn TCP, UDP và ICMP. Trường này chỉ
rõ giao thức đích cuối cùng mà gói dữ liệu IP phải chuyển.
- Tổng kiểm tra (checksum): Trường 16 bit này chứa mã kiểm tra lỗi CRC
(chỉ kiểm ta phần tiêu đề).
- Địa chỉ nguồn (Source Address): Trường 32 bit này chứa địa chỉ IP của
trạm nguồn.
- Địa chỉ đích (Destination Address): Trường 32 bit này chứa địa chỉ IP của
trạn đích.
1.2.3 Địa chỉ IP
Địa chỉ được sử dụng để giao nhận IP datagram từ nguồn đến đích. Mỗi
datagram đều cần phải có địa chỉ nguồn và địa chỉ đích. Các trường tương ứng trong
IP header phải mang tên tương tự. Các địa chỉ IP có độ dài 32 bit.

Hình 1.4: Các lớp của địa chỉ IP


Nó có thể định địa chỉ cho 4 triệu host với khoảng cách độ dài này. Một địa
chỉ IP được viết như là giá trị 4 byte và được ngăn bởi dấu chấm, ví dụ như là
10.1.13.5. Lý do của việc trình bày này là do sự phân cấp tổ chức trong Internet.
Mỗi địa chỉ IP bao gồm phần mạng và phần host. Một mạng có thể kết nối với một
hoặc nhiều mạng con. Tất cả các host thuộc quyền sở hữu của mạng (và cả mạng
con) phải có cùng một phần mạng của địa chỉ. Sự phân lớp của các mạng khác nhau

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 17 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

được miêu tả ở hình 1.4. Có tất cả 5 lớp khác nhau. Chúng được nhận dạng bởi 4 bit
quan trọng đầu tiên. Các lớp khác nhau định độ dài của phần mạng và phần host
khác nhau. Nó còn chỉ rõ số lượng của mạng con và host của mỗi mạng. Ví dụ trong
lớp A phần mạng có độ dài là 7 bit và phần host có độ dài là 24 bit.
1.2.4 Định tuyến - Routing
Định tuyến là chức năng của lớp 3 - Lớp mạng (Theo mô hình OSI). Nó thực
hiện việc này một cách phân tầng và có tổ chức cho phép nhiều địa chỉ riêng rẽ
được nhóm lại với nhau và được coi như là một đơn vị riêng lẻ cho đến lúc cần địa
chỉ cụ thể cho việc gửi dữ liệu cuối cùng. Định tuyến là một tiến trình thực hiện
việc tìm kiếm một đường đi tốt nhất từ một thiết bị tới một thiết bị khác. Thiết bị
chính thực hiện việc này là router, tuy nhiên ngoài router ra còn có một số các thiết
bị khác có thể thực hiện chức nâng này như là switch lớp 3, tường lửa.

Một router có chức năng duy trì và cập nhật bảng định tuyến khi có sự thay
đổi về cấu trúc vật lý mạng - topology (thực hiện bởi giao thức định tuyến). Khi một
gói tin đến router thì router phải sử dụng bảng định tuyến để quyết định gửi gói tin
đó đến đâu từ đó đưa gói tin đó ra cổng tương ứng. Router là thiết bị lớp mạng (lớp
3) sử dụng một hay nhiều tham số định tuyến để quyết định đường đi tốt nhất cho
gói tin tùy theo giao thức định tuyến mà nó sử dụng.

1.2.5 Giao thức TCP (Transport Control Protocol)


TCP là giao thức điều khiển truyền dẫn có độ tin cậy cao được thiết kế để
phục vụ việc liên lạc giữa hai host và chỉ hỗ trợ phương thức truyền “unicasting”.
Trong ứng dụng truyền thoại VoIP, giao thức TCP được sử dụng làm giao thức
truyền báo hiệu chứ không phục vụ việc truyền các tín hiệu thoại. Lý do vì header
của TCP lớn và vì đảm bảo tính chính xác cao của đường truyền nên giao thức TCP
gây ra thời gian trễ lớn ảnh hưởng đến chất lượng các ứng dụng thời gian thực. Và
để đảm bảo tính chính xác và thứ tự nên giao thức TCP được ứng dụng để truyền
báo hiệu. Giao thức TCP thực hiện các tính năng chính như sau:
- Thiết lập liên kết: Khi hai thực thể TCP muốn trao đổi dữ liệu với nhau
cần phải thiết lập một liên kết logic giữa chúng. Liên kết được thiết lập phải

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 18 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

được đảm bảo về tính chính xác và độ tin cậy, khi liên kết không còn đủ độ
tin cậy thì liên kết sẽ bị huỷ bỏ và thiết lập lại. Khi hoàn tất việc truyền
thông các liên kết sẽ được giải phóng. Để thực hiện việc thiết lập liên kết
các modul TCP sử dụng một cơ chế đặc biệt gọi là “bắt tay ba chiều” (three
way handshake).
- Bảo đảm tính chính xác: Giao thức TCP cung cấp các tham số để kiểm tra
cũng như sửa là sequence number, ACK (Acknowledge) và checksum. Các
segment được đánh số hiệu tuần tự do vậy dễ dàng loại bỏ các segment bị
thu được nhiều lần hoặc các segment không đạt yêu cầu. Các segment sau
khi thu được sẽ được kiểm tra nhờ trường checksum. Nếu chúng được thu
đúng thì sẽ phát lại tín hiệu ACK khẳng định. Nếu segment bị thu lỗi,
segment sẽ bị loại bỏ và nó sẽ được phát lại. Nhờ ACK mà các segment lỗi
hay bị mất sẽ được phát lại bảo đảm được tính chính xác của dữ liệu.
- Ngoài ra giao thức TCP còn cung cấp một số chức năng điều khiển luồng
và điều khiển tắc nghẽn (flow control và congestion control) cho phép kiểm
soát và tránh được sự tắc nghẽn trên mạng.

Hình 1.5: Ví dụ về điều khiển luồng dùng cửa sổ trượt


1.2.6 UDP (User Data Protocol)
UDP là một trong hai giao thức truyền dữ liệu được sử dụng trên cơ sở của
giao thức IP. Các đơn vị dữ liệu được trao đổi là các UDP datagram. Giao thức
UDP là giao thức không có liên kết và không có các cơ chế đảm bảo độ tin cậy.
Giao thức UDP không cung cấp các cơ chế kiểm tra, truyền lại cũng như các cơ chế
phản hồi để kiểm soát tốc độ luồng dữ liệu. Do đó các UDP datagram có thể bị thu
được nhiều lần hoặc thu không đúng. Tuy vậy UDP cũng cung cấp các cơ chế quản

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 19 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

lý số hiệu cổng để phân biệt giữa nhiều chương trình được chạy trên cùng một máy
tính. Hơn nữa cấu trúc của UDP datagarm đơn giản nên thời gian trễ truyền dẫn
cũng như thời gian xử lý cũng ngắn hơn do đó tốc độ truyền sẽ nhanh hơn. Các
chương trình dựa vào giao thức UDP thường được sử dụng trong phạm vi hẹp (local
environment) hơn là trong phạm vi rộng như Internet.

Bit 0-3 Bit 4-7 Bit 8-11 Bit 12- Bit 16- Bit 20- Bit 24- Bit 28-
15 19 23 27 31
Cổng nguồn Cổng đích
Độ dài tổng Tổng kiểm tra
Dữ liệu

Hình 1.6: Định dạng gói tin UDP


Trong đó:
Cổng nguồn (Source Port (16 bit)): số hiệu cổng của trạm nguồn.
Destination Port (16 bit): số hiệu cổng của trạm đích.

Message Length (16 bit): chỉ rõ độ dài phần UDP datagram (tính theo byte) bao
gồm cả phần header và phần data. Độ dài nhỏ nhất của UDP datagram là 8 byte khi
chỉ có phần header.
Checksum (16 bit): mã kiểm soát lỗi.
1.3 RTP (Real Time Protocol)
RTP được coi như một giao thứ truyền từ đầu cuối đến đầu cuối (end to end)
phục vụ truyền dữ liệu thời gian thực như audio và video. RTP thực hiện việc quản
lý về thời gian truyền dữ liệu và nhận dạng dữ liệu được truyền. Nhưng RTP không
cung cấp bất cứ một cơ chế nào đảm bảo thời gian truyền và cũng không cung cấp
bất cứ một cơ chế nào giám sát chất lượng dịch vụ. Sự giám sát và đảm bảo về thời
gian truyền dẫn cũng như chất lượng dịch vụ được thực hiện nhờ hai giao thức
RTCP và RSVP.
Tương tự như các giao thứ truyền dẫn khác, gói tin RTP (RTP packet) bao
gồm hai phần là header (phần mào đầu) và data (dữ liệu). Nhưng không giống như

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 20 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

các giao thức truyền dẫn khác là sử dụng các trường trong header để thực hiện các
chức năng điều khiển, RTP sử dụng một cơ chế điều khiển độc lập trong định dạng
của gói tin RTCP để thực hiện các chức năng này.
* Cấu trúc gói tin RTP:
VER P X CC M PT Sequence Number

Timestamp

Synchronysation source (SSCR) identifier

Contributing source (CCRC) identifier (optional)

Extension header (optional)

Hình 1.7: Cấu trúc gói tin RTP


- Version (2 bit): chỉ rõ version của RTP hiện tại đang được cài đặt. Hiện tại
các giao thức RTP được cài đặt là version 2.
- Padding (1 bit): có vai trò như bit cờ được sử dụng để đánh dấu khi có một
số byte được chèn vào trong gói. Bit này được thiết kế để thích nghi với
việc sử dụng của các thuật toán mã hoá mà yêu cầu các khối có độ dài cố
định và việc truyền những gói tin RTP ở các lớp giao thức thấp hơn.
- Extension (1 bit): cũng có vai trò như một bit cờ được sử dụng để đánh
dấu khi có header mở rộng tiếp theo header cố định. Header mở rộng cung
cấp các cơ chế cho phép những người phát triển thử nghiệm bằng cách
thêm các chức năng định dạng dữ liệu độc lập mà yêu cầu các thông tin
trong header thêm khi cho phép một hoạt động bổ sung bỏ qua phần mở
rộng.
- CSRC count (4 bit): chỉ rõ số lượng của CSRC (contributing source) có
trong RTP header.
- Marker (1 bit): có vai trò như một bit cờ, trạng thái của nó được phụ thuộc
vào trường payload type. Khi bit này được thiết lập nó sẽ chỉ ra rằng trường
payload type có mang những thông tin chi tiết được định nghĩa phù hợp với

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 21 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

các ứng dụng mà những thông tin này không được định nghĩa trong các chỉ
dẫn của giao thức RTP.
- Payload Type (7 bit): chỉ rõ loại thông tin được chứa trong các gói.
- Serquence Number (16 bit): cung cấp số thứ tự của các gói. Cách này như
một cơ chế giúp bên thu có thể thu đúng thứ tự các gói tin, nhận ra gói tin
bị mất. Các gói tin bị mất sẽ không được truyền lại, chúng sẽ được phía thu
khắc phục bằng cách sử dụng một thuật toán để tái tạo lại các gói tin bị mất.
Giá trị khởi đầu của trường sequence number là ngẫu nhiên để đảm bảo tính
an toàn thông tin.
- Time-stamp (32 bit): là tham số đánh dấu thời điểm byte đầu tiên được lấy
mẫu trong gói RTP. Giá trị time-stamp khởi đầu là ngẫu nhiên, các gói RTP
phát đi liên tiếp có thể có cũng giá trị time-stamp nếu chúng cùng được phát
đi một lúc. Ví dụ với một bức ảnh số, chúng thường được cắt ra làm nhiều
phần khác nhau và mỗi phần được chứa trong một gói. Những gói đó khác
nhau về thứ tự (sequence number) nhưng chúng có cùng một giá trị time-
stamp.
- Syschronisation source (SSRC) identifier: số nhận dạng nguồn của gói dữ
liệu. Nếu ứng dụng muốn truyền dữ liệu có nhiều dạng khác nhau trong
cùng một thời điểm (ví dụ là tín hiệu audio và video) thì sẽ có những phiên
truyền riêng cho mỗi dạng dữ liệu. Sau đó ứng dụng sẽ tập hợp các gói tin
có cùng nhận dạng SSRC. Số nhận dạng này được gán một cách ngẫu
nhiên.
- Contribute source (CSRC) identifer (độ dài thay đổi): ví dụ tại một điểm
đích nào đó mà những tín hiệu audio đến đích cần trộn lại với nhau thì giá
trị CSRC sẽ là tập hợp tất cả các giá trị SSRC của các nguồn mà gửi tín
hiệu đến điểm đích đó. Trường CSRC có thể chứa tối đa là 15 số nhận dạng
nguồn SSRC.
- Extension header (độ dài thay đổi): chứa các thông tin thêm của gói RTP.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 22 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

1.4 RTCP (Real-time Transport Control Protocol)


Mặc dù RTP là một giao thức độc lập nhưng thường được hỗ trợ bởi giao
thức RTCP. RTCP trả về nguồn các thông tin về sự truyền thông và các thành phần
đích. Giao thức điều khiển này cho phép gửi về các thông số về bên thu và tự thích
nghi với bên phát cho phù hợp vời bên phát. Mỗi người tham gia một phiên truyền
RTP phải gửi định kỳ các gói RTCP tới tất cả những người khác cũng tham gia
phiên truyền. Tuỳ theo mục đích mà RTCP thực hiện 4 chức năng:
- Chức năng chính của RTCP là cung cấp một sự phản hồi chất lượng của
dữ liệu. Các thông tin đó giúp cho ứng dụng thực hiện chức năng điều
khiển luồng và quản lý tắc nghẽn. Các thông tin còn được sử dụng để chẩn
đoán kết quả.
- RTCP cung cấp sự nhận dạng mà được sử dụng để tập hợp các kiểu dữ
liệu khác nhau (ví dụ audio và video). Điều này là cần thiết vì khả năng
ngày không được RTP cung cấp.
- Nhờ việc định kỳ gửi các gói tin RTCP mà mỗi phiên truyền có thể theo
dõi được số người tham gia. RTP không thể sử dụng được cho mục đích
này khi một ai đó không gửi dữ liệu mà chỉ nhận từ những người khác.
- Cuối cùng là một chức năng lựa chọn cho phép có thêm thông tin về
những người tham gia vào phiên truyền.
Tuỳ thuộc vào giao thức RTP được sử dụng cho loại dữ liệu nào mà RTCP cung
cấp các thông báo điều khiển khác nhau. Có 4 loại thông báo điều khiển chính được
giao thức RTCP cung cấp là:
- Sender report (SR): thông báo này chứa các thông tin thống kê liên quan
đến kết quả truyền như tỷ lệ tổn hao, số gói dữ liệu bị mất, khoảng trễ. Các
thông báo này phát ra từ phía phát trong một phiên truyền thông.
- Receiver report (RR): thông báo này chứa các thông tin thống kê liên quan
đến kết quả nhận giữa các điểm cuối. Các thông báo này được phát ra từ
phía thu trong một phiên truyền thông.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 23 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Source description (SDES): thông báo bao gồm các thông số mô tả nguồn
như tên, vị trí,...
- Application (APP): thông báo cho phép truyền các dữ liệu ứng dụng.
* Cấu trúc gói tin RTCP
VER P Report Packet Type Length
Conunter
Report

Hình 1.8: Cấu trúc gói tin RTCP

Trong đó:

 Version (2 bit): chỉ rõ version của giao thức RTP hiện tại đang cài đặt.
Hiện tại các giao thức RTP đang được sử dụng là version 2.
 Padding (1 bit): có chức năng như một bit cờ chỉ rõ xem trong gói có các
byte được chèn thêm hay không.
 Report counter (5 bit): chỉ rõ số thông báo chứa trong gói (mỗi nguồn có
một thông báo).
 Packet type (8 bit): xác định loại thông báo của gói (SR hoặc RR hoặc
APP).
 Length (16 bit): chỉ rõ độ dài của gói.
 Report (độ dài thay đổi): chứa các thông báo chi tiết.
1.5 RSVP (Resource Reservation Protocol)
Giao thức RSVP được sử dụng như một giao thức báo hiệu hỗ trợ cho RTP.
Mục đích của RSVP là cung cấp một cơ chế đảm bảo băng thông cho các hoạt động
của các ứng dụng. RSVP gửi tham số chất lượng dịch vụ QoS kết hợp với các dữ
liệu thời gian thực được truyền trên mạng TCP/IP. Hỗ trợ giao thức RTP, giao thức
RSVP có thể giải quyết các lỗi xảy ra trên đường truyền để đảm bảo các tham số
chất lượng. Thật vậy, giao thức RTP chỉ hỗ trợ việc truyền thông điểm – điểm và

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 24 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

không quản lý các tham số liên kết trên mạng. RSVP không những tác động ở máy
phát, máy thu mà còn tác động trên cả các router trong mạng.
RSVP thiết lập và duy trì kết nối duy nhất cho một luồng dữ liệu, xác lập một
hệ thống quản lý thứ tự các gói và tạo modun điều khiển để quản lý các nguồn tài
nguyên của các nút mạng khác nhau. RSVP đưa ra một mô hình tối ưu để liên kết
các dữ liệu từ một nguồn tới nhiều đích. RSVP đóng vai trò quản lý một cách lập
các host đích để tự thích nghi các tham số chất lượng giữa khả năng cung cấp và
nhu cầu đáp ứng.
Việc dành riêng các tài nguyên được yêu cầu bởi bên thu bằng cách phát một
yêu cầu chất lượng dưới dạng một bản tin RSVP tương thích với nhu cầu của
chúng. Thực tế sử dụng RSVP nhằm đảm bảo chất lượng trong việc truyền tin. Để
đảm bảo đường truyền thông suốt các điểm cuối phải hoạt động ở chế độ kết nối.
Máy thu phải thường xuyên gửi các bản tin RSVP đến các router để đảm bảo thông
suốt đường truyền.
RSVP hoạt động trên cơ sở xử lý các gói tin theo một yêu cầu chất lượng
dịch vụ QoS. Hai thành phần chính thực hiện chức năng này là flowspec và
filterspec. Flowspec có chức năng kiểm tra luồng dữ liệu được truyền như một yêu
cầu dịch vụ của các ứng dụng mà kết quả là đưa ra một yêu cầu về chất lượng dịch
vụ QoS. Flowspec đưa ra một yêu cầu chất lượng dịch vụ còn filterspec có nhiệm
vụ lọc bỏ các gói tin mà không đảm bảo yêu cầu về chất lượng dịch vụ, những gói
này sẽ được cung cấp một phương thức truyền tốt nhất có thể đáp ứng yêu cầu chất
lượng dịch vụ. Mối quan hệ của flowspec và filterspec được mô tả trên hình vẽ.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 25 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 1.9: Mối quan hệ giữa Flowspec và Fliterspec


1.6 Bộ giao thức H.323
H.323 là 1 khuyến nghị của ITU-T xác định phương thức luồng multimedia
được truyền qua mạng chuyển mạch gói. H323 là 1 khuyến nghị của ITU-T xác
định phương thức luồng multimedia được truyền qua mạng chuyển mạch gói. H323
đã sử dụng lại 1 số chuẩn sẵn có (ví dụ như là Q.931) để đạt được mục đích này.
Trong giao thức H323, việc truyền các luồng voice chỉ là 1 trong các ứng dụng của
nó, và phần chính của giao thức chính là việc chia sẻ dữ liệu và video.
* Các giao thức sử dụng trong H.323:
Tính năng Giao thức
Call Signalling H.225
Media Control H.245
Audio Codecs G.711, G.722, G.723, G.728, G.729
Video Codecs H261, H263
Data Sharing T.120
Media Transport RTP/RTCP

Hình 1.10: Các giao thức sử dụng trong H.323


* Một số bản tin RSA và Q.931 thường dùng trong giao thức H.225

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 26 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 1.11: Một số bản tin RAS thông dụng

Thông điệp Q.931 Miêu tả


Setup Thông điệp ban đầu để cài đặt cuộc gọi
CallProceeding Chỉ ra rằng không có nhiều hơn một thông tin thiết lập cuộc
gói sẽ được tiến hành
Alerting Chỉ ra rằng user biết được cuộc gọi (rung chuông)
Connecct Kết thúc quá trình thiết lập cuộc gọi
ReleaseComplete Bắt đầu hoàn thành cuộc gọi

Hình 1.12: Các thông điệp Q.931 thông dụng


* Các thành phần của H.323:

- Terminal: là các đầu cuối trong mạng, có thể là điện thoại IP hoặc là các
PC…
- Gateway: thực hiện chuyển đổi giữa các định dạng audio, video và dữ
liệu. Nó đồng thời thực hiện việc thiết lập và huỷ bỏ cuộc gọi trong mạng
IP và mạng chuyển mạch (Switched Circuit Network – SCN).
- Gatekeeper: cung cấp việc điều khiển cấp độ cuộc gọi đến các đầu cuối
của H323.
- MCU: hỗ trợ hội nghị với 3 hay nhiều đầu cuối H323.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 27 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 1.13: Các thành phần của H.323

* Tiến hành cuộc gọi trong H.323:

Hình 1.14: Tiến hành cuộc gọi trong H.323


- Gateway gởi một thông điệp ARQ đến gatekeeper để bắt đầu quá trình
gọi. Gateway này được cấu hình với vùng miền và địa chỉ của gatekeeper.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 28 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Gatekeeper trả lời đáp ứng thông điệp ARQ vừa gởi bằng thông điệp ACF
- Khi đầu cuối muốn gọi nhận diện được đầu cuối cần gọi, nó sẽ bắt đầu
thiết lập cuộc gọi căn bản.
- Trước khi đầu cuối được gọi đồng ý nhận cuộc gọi đến nó gởi thông điệp
ARQ đến gatekeeper để nhận được quyền cho phép.
1.7 SIP (Session Initation Protocol)
SIP là giao thức báo hiệu cuộc gọi được định nghĩa bởi IETF. Nó thường
được sử dụng để tạo, hoặc sửa đổi hoặc kết thúc phiên truyền thông đa phương tiện.
Các phiên truyền thông này có thể được thiết lập với một hoặc nhiều bên tham gia.
* Các thành phần của SIP:

Location Redirect Registrar


Server Server Server

PSTN

User Agent Gateway


Proxy Proxy
Server Server

Hình 1.15: Các thành phần trong SIP


- Các user agent: Nó bao gồm các client phát ra thông điệp và các server
đáp ứng thông điệp đó. Trong các trường hợp thì cả hai đều nằm trong một
user agent.
- Proxy server: Chúng đưa các thông điệp đến các server khác, cũng có thể
là nhiều proxy server hoặc chúng đưa trực tiếp đến đầu cuối.
- Redirect server: Chúng nhận được các yêu cầu SIP và ánh xạ địa chỉ
thông điệp từ không hoặc nhiều hơn địa chỉ mới.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 29 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Location server: Chúng ánh xạ địa chỉ của yêu cầu đến host hiện hành nơi
mà user có thể được đến.
- Register server: Chúng là những server mà chấp nhận những yêu cầu đăng
ký từ các user agent. Register thường là vùng phụ cùng với proxy server và
redirect server. Tuy nhiên nó cũng hữu dụng cho việc di động của user và
cho việc nhận thực của user cũng như thu tiền dịch vụ. Tính chất này cũng
được sử dụng cho các rãnh (track) user.
* Các bản tin trong giao thức SIP và phản hồi:
- INVITE: Bắt đầu thực hiện cuộc gọi bằng cách gởi bản tin mời đầu cuối
khác tham gia.
- ACK: Bản tin này khẳng định máy trạm đã nhận được bản tin trả lời bản
tin INVITE.
- CANCEL: huỷ yêu cầu nằm trong hàng đợi.
- REGISTER: Đầu cuối SIP sử dụng bản tin này để đăng ký với máy chủ
đăng ký.
- OPTIONS: Sử dụng để xác định năng lực của máy chủ.
- INFO: Sử dụng để tải các thông tin như là âm báo DTMF.
Ngoài ra còn có một số bản tin khác như là: NOTIFY, SUBCRIBE,
UNSUBCRIBE, UPDATE, MESSAGE, REFER, PRACK, …
Các bản tin phản hồi:
- 1xx: (PROVISIONAL) Phản hồi tạm thời, cho biết đã nhận được yêu
cầu, tiếp tục quá trình yêu cầu.
- 2xx: (SUCCESS) Thông báo đã nhận được đầy đủ, hiểu và chấp nhận.
- 3xx: (REDIRECTION) Thông báo cần có các bản tin khác để hoàn thành
yêu cầu.
- 4xx: (CLIENT ERORR) Thông báo yêu cầu chứa cấu trúc sai hoặc
không được đáp ứng ở server
- 5xx: (SERVER ERORR) Thông báo server không thể đáp ứng được yêu
cầu có cấu trúc hợp lệ.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 30 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- 6xx: (GLOBAL FAILURE) Thông báo yêu cầu không thể xử lý được ở
bất cứ server nào.

* Tiến hành cuộc gọi trong SIP:

Hình 1.16: Tiến hành cuộc gọi trong SIP với proxy server

- UAC (user agent client) khởi đầu gởi một bản tin INVITE đến proxy
server.
- Proxy server, nếu cần thiết thì sẽ truy vấn location server để tìm ra đường
dẫn của bên nhận và địa chỉ IP của nó.
- Proxy server gởi bản tin INVITE đến UAC của bên nhận.
- Nếu UAS (user agent server) của bên tham gia xác nhận các tham số của
cuộc gọi có thể chấp nhận được thì nó sẽ đáp ứng xác thực lại đến proxy
server.
- Proxxy server trả lời lại cho UAC khởi đầu.
- UAC khởi đầu phát một bản tin ACK.
- Proxy server chuyển tiếp bản tin này đến bên UAS nhận.
UAC và UAS bây giờ đã có đầy đủ thông tin cần thiết để thiết lập các phiên
truyền thông RTP.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 31 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

1.8 MGCP ( Media Gateway Control Protocol)


Giao thức MGCP được định nghĩa trong RFC2705, tháng 10 năm 1999, cho
phép điều khiển các gateway thông qua các thành phần điều khiển nằm bên ngoài
mạng. MGCP sử dụng mô hình kết nối tương tự như SGCP dựa trên các kết nối cơ
bản giữa thiết bị đầu cuối và gateway. Các kết nối có thể là kết nối điểm-điểm hoặc
kết nối đa điểm.
* Các thành phần cơ bản trong MGCP:

Hình 1.17: Các thành phần cơ bản trong MGCP


- Đầu cuối (Endpoints): Tương ứng với điểm liên mạng giữa mạng chuyển
mạch mạch và mạng chuyển mạch gói.
- Gateways: sử dụng để chuyển đổi audio từ mạng chuyển mạch mạch sang
mạng chuyển mạch gói.
- Call agent: Thực thi điều khiển qua hoạt động của gateway.
* Tiến hành cuộc gọi trong MGCP:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 32 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 1.18: Tiến hành cuộc gọi trong MGCP


- Call agent gởi một yêu cầu thông báo RQNT (Notice Request) đến mỗi
gateway. Bởi vì các gateway này là các gateway có liên quan với nhau, nên
thông điệp yêu cầu trên chỉ dẫn các gateway này chờ một sự chuyển tiếp
nhấc máy (sự kiện). Khi mà sự kiện chuyển tiếp off-hook xảy ra, call agent
chỉ dẫn cho gateway cung cấp âm mời gọi (dial tone). Call agent yêu cầu
gateway giám sát các sự kiện khác để việc xảy ra các sự kiện tốt. Bằng cách
cung cấp các số ánh xạ, call agent có thể có tập hợp các số của gateway
trước khi nó khai báo cho call agent.
- Gateway trả lời lại yêu cầu. Ở thời điểm này, cả call agent và gateway đều
chờ đợi sự kiện bấm nút.
- Khi user trên gateway A nhấc máy, như đã được trong bản tin trước đó
của call agent, gateway cung cấp âm mời gọi (dial tone). Bởi vì gateway
được cung cấp với các số ánh xạ, nó bắt đầu tập hợp các số (khi chúng được
gọi) cho đến khi việc ánh xạ là chính xác.
- Gateway gởi một thông điệp khai báo NTFY (Notify) đến call agent để
thông báo cho call agent về sự kiện yêu cầu đã được tiến hành. Khai báo
này nhận dạng các đầu cuối, các sự kiện và trong trường hợp này có các số
đã được gọi.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 33 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Sau khi xác nhận cuộc gọi này là có thể dựa trên các số được gọi, call
agent chỉ dẫn bằng cách gởi thông điệp CRCX (create a connection) để chỉ
dẫn cho gateway tạo một kết nối với đầu cuối của nó.
- Gateway trả lời lại thông điệp trên với thông điệp miêu tả phiên nếu nó có
khả năng đáp ứng kết nối này. Miêu tả phiên chỉ định địa chỉ IP và port
UDP tối thiểu cho việc sử dụng phiên truyền thông RTP sau. Gatewway
không miêu tả phiên cho phía từ xa của cuộc gọi, và kết nối đi vào trạng
thái chờ.
- Call agent chuẩn bị và gởi một thông điệp yêu cầu kết nối đến gateway B.
Trong yêu cầu này, call agent cung cấp các miêu tả phiên được chứa từ
gateway B. Yêu cầu kết nối được đưa đến một đầu cuối đơn.
- Gateway B trả lời yêu cầu với các miêu tả phiên của nó. Chú ý rằng
gateway B có cả hai miêu tả phiên và nó nó nhận ra làm thế nào để thiết
lập phiên RTP của nó.
- Call agent chuyển tiếp miêu tả phiên đến gateway A trong thông điệp yêu
cầu kết nối sửa đổi MRCX (Modify Connection Request). Yêu cầu này có
thể chứa yêu cầu khai báo đóng gói mà miêu tả các báo hiệu thích hợp và
các sự kiện của giai đoạn thiết lập cuộc gọi. Bây giờ thì gateway A và
gateway B có miêu tả phiên cần thiết để thiết lập các phiên RTP mà các
audio vận chuyển qua đó.
- Ở phần kết thúc của cuộc gọi, một trong các đầu cuối nhận ra sự chuyển
tiếp gác máy. Trong ví dụ này, user trên gateway A gác máy. Bởi vì call
agent đã yêu cầu gateway phải thông báo sự kiện này nên gateway thông
báo cho call agent.
- Call agent gửi yêu cầu hủy kết nối DLCX (Delete Connection Request)
đến mỗi gateway.
- Gateway hủy kết nối và trả lời lại.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 34 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

1.9 NAT (Network address translator)


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 1.19: 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ừ 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.
1.10 Giao thức 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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 35 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

đề 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ế.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 36 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Chương 2
TỔNG QUAN VỀ ASTERISK

2.1 Giới thiệu


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
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 đ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à 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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 37 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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.

Hình 2.1: 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à chuyể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.2 Kiến trúc asterisk
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ư

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 38 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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…

Hình 2.2: Sơ đồ khối của asterisk


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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 39 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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 (Application Program Interface)
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…
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.
2.3 Một số tính năng cơ bản
Ngoài những tính năng tương tự như tổng đài PBX, Asterisk còn có thêm nhiều
tính năng khác mà chỉ có thể có được ở những tổng đài rất đắt tiền. Đó là các tính
năng:
 Voicemail Services with Directory
 Conferencing Server
 Packet Voice Server

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 40 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

 Encryption of Telephone or Fax Calls


 Heterogeneous Voice over IP gateway (H.323, SIP, MGCP, IAX)
 Custom Interactive Voice Response (IVR) system
 Soft switch
 Number Translation
 Calling Card Server
 Predictive Dialer
 Call Queuing with Remote Agents
 Gateway and Aggregation for Legacy PBX systems
 Remote Office or User Telephone Services
 PBX long distance Gateway
 Telemarketing Block
 Standalone Voicemail System
Dưới đây 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.
2.3.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.3.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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 41 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Đâ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.
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.
2.3.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.
2.3.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ả xổ 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.
2.3.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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 42 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

2.3.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.
2.3.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.
2.3.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.
2.3.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).
2.4 Các ngữ cảnh ứng dụng
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.
2.4.1 Tổng đài voip IP PBX
Đâ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.4.2 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í

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 43 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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ệ
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.
2.4.3 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
vị trí khác nhau sẽ làm giảm chi phí đáng kể.
2.4.4 Các ứng dụng IVR, VoiceMail, Điện Thoại Hội Nghị
Ứ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 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.
2.4.5 Chức năng Phân phối cuộc gọi tự động ACD (Automatic Call Distribution)
Đâ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.
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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 44 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Chương 3
MỘT SỐ KHÁI NIỆM TRONG HỆ THỐNG ASTERISK

3.1 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.
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.
*Các âm hiệu và các tín hiệu cơ bản của tổng đài:
Các âm hiệu (tone) là các tín hiệu âm thanh mà tổng đài gọi đến các thuê bao
để thông báo, bao gồm các âm hiệu sau:
3.1.1 Âm hiệu mời quay số (Dial tone)
Âm hiệu này báo cho thuê bao biết tổng đài sẵn sàng nhận số từ thuê bao.
Âm hiệu này là tín hiệu hình sin có tần số φ = 425 ± 25Hz (Hình 3.1), nhịp là liên
tục, méo hài <1% và được phát liên tục cho tới khi bắt đầu quay số thứ nhất trong

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 45 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

trường hợp người gọi nhấc máy nhưng không quay số khoảng 15s thì tổng đài sẽ
ngưng phát Dial tone và phát Busy tone vế phía thuê bao.

φ=425±25Hz

Hình 3.1: Âm hiệu Dial tone


3.1.2 Âm hiệu báo bận (Busy tone)
Âm hiệu này được tổng đài báo cho thuê bao gọi biết thuê bao bị gọi đang
bận, trung kế bận, hết thời gian quay số. Âm hiệu này có tần số f=425 ± 25Hz, ngắt
nhịp 0,5s có và 0,5s không (Hình 3.2).

0,5s có 0,5s không


v

φ=425±25Hz

Hình 3.2: Âm hiệu báo bận


Nếu các đường dây thông thoại không bị bận thì tổng đài phải nhận biết các
số thuê bao gọi và xem xét:
- Nếu số đầu nằm trong tập thuê bao của tổng đài thì tổng đài sẽ phục vụ
như cuộc gọi nối dài.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 46 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Nếu số đầu không nằm trong tập thuê bao của tổng đài thì tổng đài sẽ
phục vụ như một liên đài qua trung kế và gởi toàn bộ phần định vị số quay
sang tổng đài đối phương để giải mã.
- Nếu số đầu là mã gọi chúc năng đặc biệt thì tổng đài sẽ phục vụ chức năng
đó để phục vụ cho thuê bao.
3.1.3.Âm hiệu hồi âm chuông (Ring back tone)
Khi tổng đài cấp chuông cho thuê bao bị gọi đồng thời cung cấp cho thuê bao
gọi âm hiệu hồi âm chuông để báo cho thuê bao gọi biết đã kết nối với thuê bao đối
phương, chờ thuê bao đối phương nhấc máy. Âm hiệu này có tần số φ=425±25Hz
(Hình 3.3), cùng nhịp với dòng chuông.

v 4s không 2s có

φ=425±25Hz

Hình 3.3: Âm hiệu ring back tone


3.1.4.Tín hiệu chuông (Ring tone)
Nếu thuê bao bị gọi đang rỗi, tổng đài sẽ cấp dòng chuông để rung chuông
cho thuê bao bị gọi. Tín hiệu chuông là dòng AC hình sin hoặc xung có tần số f=20
đến 25Hz (Hình 3.4), điện áp từ 75 đến 95Vrms , 2s có, 4s không.
4s không 2s có
v

φ=20±25Hz

Hình 3.4: Âm hiệu rung chuông

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 47 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

3.1.5 Tín hiệu số quay:


* Quay số bằng xung thập phân (Pulse):
Là trường hợp quay số bằng đĩa quay, mạch vòng được ngắt hoặc đóng bởi
một chuyển mạch được kết nối với một cơ cấu quay số. Các chuỗi xung đồng nhất
được tạo ra tương ứng với số quay .
Số 1: 1 xung
Số 2: 2 xung
Số 3: 3 xung
Số 4: 4 xung

Số 9: 9 xung
Số 0: 10 xung
Mỗi chu kỳ xung thường là thường là 100ms, trong đó chu kỳ làm việc
khoảng 33%. Khoảng cách giữa hai chuỗi xung > 500ms.
Các số quay thuê bao được truyền đến tổng đài bằng cách ngắt dòng đường
dây theo tỷ số thời gian quy định tạo thành chuỗi xung quay số. Số quay là số xung
trên đường dây nên phương pháp này gọi là phương pháp quay số bằng xung thập
phân.
* Quay số bằng tín hiệu đa tần DTMF (Dial Tone Multi Frequency).
Khi sử dụng DTMF để quay số, các số được chọn bởi ma trận nút bấm (Hình
3.5), mỗi nút bấm tương ứng với một số hoặc một ký tự biễu diễn bằng một cặp tần
số. Mỗi cặp tần số (Tone) xuất hiện tối thiểu là 40ms, thời gian tối thiểu giữa hai số
là 60ms.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 48 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

697 1 2 3 A

770 4 5 6 B

852 7 8 9 C

941 * 0 # D

1209 1336 1477 1633

Hình 3.5: Ma trận nút nhấn


Quay số bằng DTMF nhanh hơn nhiều lần (10 lần) so với quay số bằng xung
thập phân.
3.2 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
lại chi phí lại đắt 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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 49 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

3.3 TDM – Time Division Multiplexing


TDM 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.
3.4 Các hình thức báo hiệu giao tiếp TDM.
3.4.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
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.
Có thể tóm tắt:
- 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)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 50 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 3.6 a) Máy điện thoại vai trò FXO kết nối với FXS (PSTN), Hình b)
PBXkế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.
3.4.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.4.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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 51 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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.
3.5 Thiết Bị VoIP
3.5.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?

Hình 3.7: Điện thoại VoIP

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.
3.5.2 Softphone
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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 52 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 3.8: Điện Thoại Softphone


3.5.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, ví dụ card TDM22B có nghĩa là có 2
port FXS và 2 port FXO.

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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 53 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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

Hình 3.10: Thiết bị ATA


3.6 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.
Asterisk có thể hoạt động với nhiều định dạng file và chuẩn nén khác nhau.
Bới vì nó là một phần mềm với cấu trúc mở nên nó dễ dàng hoạt động với các định
dạng file và codec thêm vào.
Có hai chuẩn nén PCM 64kbps phổ biến, luật A và luật u. Cả hai điều sử
dụng nén logarit để đạt được 12 đến 13 bit cho việc nén tuyến tính 8 bit. Nén logarit

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 54 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

làm giảm các tần số cao hay âm lượng lớn. Luật A tốt hơn trong việc nén tín hiệu
mức thấp và có tỉ số nén tín hiệu trên nhiễu tốt hơn. Luật u thường được sử dụng ở
Bắc Mỹ, còn luật A thường được sử dụng ở châu Âu.
Asterisk cung cấp việc chuyển đổi hoàn hảo giữa các chuẩn nén với nhau.
Các chuẩn nén gồm có:
Chuẩn nén Tốc độ
16 bit tuyến tính 128 kbps
G.711u (luật u) 64 kbps
G.711a (luật A) 64 kbps
IMA-ADPCM 32 kbps
GSM 6.10 12 kbps
MP3 biến đổi
LPC-10 2.4 kbps
Hình 3.11: Các thuật toán codec
Thêm vào đó, các chuẩn nén khác như G.723.1 và G.729 có thể đi qua một
cách trong suốt. Thông thường, người ta sử dụng bộ nén và giải nén luật A, luật u
hay tuyến tính cho băng DTMF. Hầu hết các chuẩn nén có độ mất mát dữ liệu tương
đối lớn khi truyền fax.
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.
3.7 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.
3.7.1 Độ trễ
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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 55 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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…
3.7.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.
Để 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ư
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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 56 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 3.12: Nguyên nhân gây ra jitter


3.7.3 Mất gói
Mất gói gây ra mất thông tin, mất thông tin là một thông số QoS không được
đề cập thường xuyên như là băng thông và trễ, đặc biệt đối với mạng Internet. Đó là
vì bản chất tự nhiên được thừa nhận của mạng Internet là “cố gắng tối đa”. Nếu các
gói IP không đến được đích thì Internet không hề bị đổ lỗi vì đã làm mất chúng.
Điều này không có nghĩa là ứng dụng sẽ tất yếu bị lỗi, bởi vì nếu các thông tin bị
mất vẫn cần thiết đối với ứng dụng thì nó sẽ tự yêu cầu bên gởi gởi lại bản sao của
thông tin bị mất. Bản thân mạng không hỗ trợ chuyện này, bởi vì bản sao của thông
tin bị mất không được lưu lại ở bất cứ nút nào của mạng.
Hầu hết mất gói là do các lỗi ở trên mạng. Ví dụ một kết nối bị hỏng thì tất
cả các bit đang truyền liên kết này sẽ không thể tới được đích. Nếu một nút mạng,
ví dụ như bộ định tuyến hỏng, thì tất cả các bit hiện đang ở trong bộ đệm và đang
được xử lí bởi nút đó sẽ biến mất không để lại dấu vết. Do những loại hư hỏng này

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 57 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

trên mạng có thể xảy ra bất cứ lúc nào, nên một số gói tin trên mạng bị mất là điều
không thể tránh khỏi.
Tác động của mất thông tin tùy thuộc vào loại ứng dụng. Điều khiển lỗi trên
mạng là một quá trình gồm hai bước, mà bước đầu tiên là xác định lỗi. Bước thứ hai
là khắc phục lỗi, nó có thể đơn giản là bên gởi truyền lại đơn vị đã mất thông tin.
Một vài ứng dụng, đặc biệt là ứng dụng thời gian thực, không thể đạt hiệu quả khắc
phục lỗi bằng cách gởi lại đơn vị tin bị lỗi. Các ứng dụng không phải là thời gian
thực thì thích hợp hơn đối với cách truyền lại thông tin bị lỗi.
Vì những lí do này, các thông số QoS mất thông tin không những nên định rõ
một giới hạn trên đối với ảnh hưởng của lỗi mà nên cho phép người sử dụng xác
định xem có sửa lỗi bằng cách truyền lại hay không. Tuy nhiên hầu hết các mạng
(đặc biệt là mạng IP) chỉ cung cấp phương tiện vận chuyển thụ động, còn xác định
lỗi, khắc phục lỗi thường được để lại cho ứng dụng của người sử dụng.
Mạng IP hoạt động trên cơ chế “cố gắng tối đa” nên độ tin cậy không cao,
mất gói thường xảy ra, đôi khi xảy ra nghẽn mạng và các gói phải nằm trong hàng
đợi của các nút mạng, xấu hơn là có thể rớt do tràn bộ đệm hoặc do độ ưu tiên của
gói thấp bị bộ định tuyến loại bỏ. Để truyền tin cậy dữ liệu trong mạng IP người ta
phải sử dụng cơ chế phát lại để truyền lại các gói bị mất, nó có thể thực hiện ở lớp
giao vận. Cơ chế phát lại được kích hoạt khi đầu cuối nhận được bản tin thông báo
mất gói. Tuy nhiên, việc phát lại có nhược điểm lớn là trễ. Đối với các ứng dụng
thời gian thực như thoại thì cơ chế phát lại không thể ứng dụng được.
Gói thực chất được xác định là mất khi trễ đầu cuối- đầu cuối của gói vượt
khỏi quá thời gian quy định. Như vậy, mất gói là gói không bao giờ đến đích (thời
gian trễ bằng vô cùng) nhưng cũng có thể là gói mặc dù đến đích nhưng sau thời
điểm quy định đặt ra của chúng (trường hợp này là mất gói do trễ). Số của gói mất
sẽ giảm khi tăng trễ bộ đệm nghĩa là tăng thời gian trễ cho phép của gói. Tuy nhiên,
tăng trễ bộ đệm đồng nghĩa với tăng trễ đầu cuối- đầu cuối (mà điều này lại ảnh
hưởng đến chất lượng, đến độ cảm nhận của người nghe). Do đó cần phải có sự cân
nhắc thỏa đáng giữa hai con số này.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 58 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Mất gói làm gián đoạn các đoạn thoại, gây nên các âm như click, mất tiếng (
trong khoảng rất ngắn) hoặc mất âm làm cho đoạn thoại không hiểu được. Vì mất
gói là điều không thể tránh khỏi, lưu lượng thoại cho phép có thể mất một số gói,
nhưng tỷ lệ mất gói này vượt quá 5% thì nó sẽ ảnh hưởng đáng kể đến chất lượng
thoại. Do vậy phải có biện pháp để giảm ảnh hưởng của mất gói đến chất lượng
thoại. Đó là kỹ thuật che giấu mất gói hay rộng hơn là kỹ thuật khôi phục mất gói,
nghĩa là làm cho người nghe không cảm nhận thấy khó chịu do tác động của mất
gói gây nên.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 59 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Chương 4
CÀI ĐẶT VÀ CẤU HÌNH ASTERISK

4.1 Cài đặt asterisk


Để 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. Ở đây chúng ta sẽ cài trên FEDORA 5.0. Sau đó để có một Asterisk Server,
thực hiện cài đặt các gói phần mềm sau:
 Libpri
 Zaptel
 Asterisk
Trước khi cài đặt Asterisk, ta phải kiểm tra nhân Kernel của hệ điều hành ta
định cài Asterisk lên đó bằng lệnh:
uname - a
Kết quả có thể trông như sau:
Linux luser 2.6.17-1.2142_EL #1 Tue Jul 11 22:41:14 EDT 2006 i686 i686
i386 GNU/Linux
Chú ý phiên bản nhân Kernel để tiếp theo sau đây ta cài đặt Kernel source.
Thực hiện cài đặt Kernel source bằng lệnh:
yum install
Quá trình cài đặt diễn ra trong một vài phút.
Tiếp theo ta kiểm tra các thư viện cần thiết cho việc cài đặt Asterisk, bao
gồm:
bison
bison-devel
ncurses
ncurses-devel
zlib
zlib-devel

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 60 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

openssl
openssl-devel
gnutls-devel
gcc
gcc-c++
Thực hiện kiểm tra bằng các lệnh sau:
rpm -q bison
rpm -q bison-devel
rpm -q ncurses
rpm -q ncurses-devel
rpm -q zlib
rpm -q zlib-devel
rpm -q openssl
rpm -q openssl-devel
rpm -q gnutls-devel
rpm -q gcc
rpm -q gcc-c++
Nếu thư việc nào chưa được cài đặt, ta thực hiện cài đặt bằng lệnh:
yum install bison
yum install bison-devel
yum install ncurses
yum install ncurses-devel
yum install zlib
yum install zlib-devel
yum install openssl
yum install openssl-devel
yum install gnutls-devel
yum install gcc
yum install gcc-c++

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 61 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Sau khi đã chắc chắn rằng các thư viện đã được cài đặt, ta tiến hành việc cài
đặt Asterisk.
Cài đặt gói Libpri: chuyển đến thư mục chứa gói Libpri sau khi giải nén
make
make install
Cài đặt gói Zaptel: chuyển đến thư mục chứa gói Zaptel sau khi đã giải nén
make
make install
Cài đặt Asterisk: chuyển đến thư mục chứa gói Asterisk sau khi đã giải nén
./configure
make
make install
make samples
Sau khi cài đặt các gói xong, để kiểm tra, ta vào cửa sổ terminal của Fedora
Core 5 thực hiện lệnh:
asterisk -vvvvvr
reload
Quá trình cài đặt Asterisk kết thúc.
4.2 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.
4.2.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 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/.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 62 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

4.2.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.
4.2.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:
- 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.
- 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.
- Thư mục 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.
- Thư mục 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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 63 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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/.
- Thư mục 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.
- Thư mục sounds/ 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.2.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:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 64 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 4.1: Cấu trúc thư mục


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/.
4.2.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.
4.2.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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 65 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

4.2.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 đó.
4.3 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)
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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 66 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

#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
#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.
4.4 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:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 67 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Extention.conf

;
;Đâ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

Hình 4.2: Một ví dụ về file cấu hình


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.
4.5 Các kiểu ảnh hưởng trong tập cấu hình

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


Simple Có hiệu lực trên Extension.conf Exten=>400,1,dial(sip/40
Group từng dòng trong
0)
file
[channels]
Option Dòng khai báo Context=From_PSTN
inheritance sau thừa kế Zapata..conf Signalling=fxs_ks
những thông số Group=1
khai báo trước Channel=>1

[cisco]
Type=friend
Secret=12345
Complex Host=192.168.16.5
Mỗi entity nhận sip.conf
Entity Context=NoiBo
một ngữ cảnh iax.conf
[xten]
Type=friend
Secret=6789
Host=dynamic
Context=NoiBo

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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 68 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

4.5.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.
4.5.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.
Ví dụ:

Extention.conf

[section]
Op1=bas
Op2=adv
Object1=>1
Op1=int
Object1=>2

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 69 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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

[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.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 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?.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 70 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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ỹ phần 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
4.6.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, thanhhieu hay là một pattern được thực
hiện như _9xxx.
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
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( )
Trong đó:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 71 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- 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”.
4.6.2 Priorities – Thứ tự thực hiện
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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 72 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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.


4.6.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:
CLI> show Aplications.
Dưới đây là một số hàm ứng dụng cơ bản:
4.6.3.1 Ứng dụng Playback() và Goto()
Ứng dụng Playback() là ứng dụng để phát các âm thanh đã được ghi âm. Khi
người gọi nhấn phím trên bàn phím điện thoại, nó sẽ ngắt việc phát âm thanh và di
chuyển đến extension mà tương ứng với phím bấm. Ứng dụng này thường được sử

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 73 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

dụng để xây dựng để tạo ra các lựa chọn trong hệ thống trả lời tự động.. Cấu trúc
của nó như sau:
exten => 123,1,Background(hello-world)
Ứng dụng goto() được sử dụng để gởi cuộc gọi đến ngữ cảnh (context),
extension, và thứ tự của extension (priority) khác. Ứng dụng goto được sử dụng làm
cho việc lập trình di chuyển các cuộc gọi giữa các phần của dialplan một cách dễ
dàng. Cấu trúc của ứng dụng Goto() cho phép chúng ta chuyển đến các ngữ cảnh,
extension và priority đích như mong muốn, ví dụ như:
exten => 123,1,Goto(context,extension,priority)
Trong ví dụ này, chúng ta sẽ sử dụng ứng dụng Background() và Goto() để
tạo ra một dialplan, cho phép người gọi tương tác với hệ thống bằng cách nhấn
phím trên bàn phím điện thoại. Bắt đầu với việc sử dụng Background() để chấp
nhận việc nhấn phím từ người gọi:
[incoming]
exten => s,1,Answer( )
exten => s,2,Background(enter-ext-of-person)
Trong hai câu lệnh trên, khi có số gọi đến hệ thống sẽ trả lời và chúng ta sẽ
phát file âm thanh enter-ext-of-person.gsm. Chúng ta sẽ thêm vào hai extensions để
thực hiện tương tác khi người gọi ấn phím 1 hoặc 2.
[incoming]
exten => s,1,Answer( )
exten => s,2,Background(enter-ext-of-person)
exten => 1,1,Playback(digits/1)
exten => 2,1,Playback(digits/2)
Trong các câu lệnh trên, khi có người gọi đến, người gọi sẽ nghe lời chào:
“Please enter the number you wish to call”. Nếu người gọi nhấn một, họ sẽ nghe
đọc số 1, nếu nhấn 2, người gọi sẽ nghe số 2. Tiếp đến chúng ta sẽ sử dụng ứng
dụng goto() để lặp lại lời chào sau khi đã phát âm thanh đọc số:
[incoming]

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 74 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => s,1,Answer( )


exten => s,2,Background(enter-ext-of-person)
exten => 1,1,Playback(digits/1)
exten => 1,2,Goto(incoming,s,1)
exten => 2,1,Playback(digits/2)
exten => 2,2,Goto(incoming,s,1)
Hai câu lệnh in đậm sẽ thực hiện việc gởi điều khiển cuộc gọi trở về
extension s sau khi đã phát âm thanh số tương ứng với việc lựa chọn.
4.6.3.2 Ứng dụng GotoIf( )
Việc thực hiện rẽ nhánh được sử dụng bằng ứng dụng GotoIf(). GotoIf() xác
định biểu thức (expression) và gởi người gọi đến đích được chỉ định dựa vào việc
xác định biểu thức đúng hay sai. Cú pháp của nó như sau:
GotoIf(expression?destination1:destination2)
Nếu biểu thức được xác định là đúng, người gọi sẽ được gởi đến đích 1
(destination1), nếu biểu thức sai, người gọi sẽ được gởi đến đích 2. Vậy thế nào là
đúng và thế nào là sai? Một chuỗi trống hoặc số không được xác định là sai, còn lại
đều là đúng.
Các đích có thể là :
• Thứ tự (priority) trong cùng một extension, ví dụ như 10.
• Một extension và thứ tự trong cùng một ngữ cảnh, ví dụ như 123,10
• Ngữ cảnh, extension, và thứ tự, ví dụ như incoming,123,10
• Tên của thứ tự trong cùng một ngữ cảnh, ví dụ như passed
Một trong hai đích có thể được bỏ trống, nhưng không thể là cả hai. Nếu
một đích được bỏ trống thì asterisk đơn giản đi đến thứ tự tiếp theo trong extension
hiện tại.
Ví dụ về Gotoif():
exten => 345,1,Set(TEST=1)
exten => 345,2,GotoIf($[{$TEST} = 1]?10:20)
exten => 345,10,Playback(weasels-eaten-phonesys)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 75 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => 345,20,Playback(office-iguanas)


Bằng cách thay đổi giá trị của TEST ở dòng đầu tiên, chúng ta có thể làm
cho asterisk phát lời chào khác nhau.
4.6.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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 76 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Ví dụ:

/etc/asterisk/extention.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
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.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 77 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

4.6.5 Chỉ định Pattern


Pattern cho phép chúng ta có thể chỉ tạo ra một extension nhưng có thể được
chỉ định gọi được nhiều số. Khi sử dụng chỉ định pattern, chúng ta sử dụng các chữ
cái và các ký hiệu khác nhau để tượng trưng cho các số có thể mà ta muốn chỉ định.
Pattern luôn được bắt đầu với dấu gạch dưới (_). Điều này chỉ ra cho asterisk biết là
chúng ta có chỉ định pattern, và không sử dụng tên gán cho extension. (Điều này có
nghĩa là , chúng ta sẽ không được bắt đầu tên của extension với dấu gạch dưới). Nếu
chúng ta quên dấu gạch dưới phía trước pattern, Asterisk sẽ nghĩ đó là tên của
extension và không chỉ định bất kỳ pattern nào.
Sau dấu gạch dưới, chúng ta có thể sử dụng một hoặc nhiều hơn các ký tự
sau:
- X: Chỉ định cho bất kỳ số nào từ 0 đến 9
- Z: Chỉ định cho bất kỳ số nào từ 1 đến 9
- N: Chỉ định cho bất kỳ số nào từ 2 đến 9.
- [15-7]: Chỉ định cho bất kỳ số nào nằm trong dãy số đã được ấn định.
Trong trường hợp này, chỉ định 1,5,6, hoặc 7.
-. (period): Chỉ định wildcard; chỉ định một hoặc nhiều hơn các ký tự.
Wildcard match; matches one or more characters.
Để sử dụng pattern trong dialplan, đơn giản chỉ là đặt pattern thay thế cho tên
của extension (hoặc số):
exten => _NXX,1,Playback(auth-thankyou)
Trong ví dụ này, pattern được chỉ định cho bất kỳ 3 số nào của extension từ
200 đên 999 (N chỉ định cho bất kỳ số nào từ 2 đến 9, và mỗi X chỉ định cho số từ 0
đến 9). Điều này có nghĩa là, nếu người gọi gọi bất kỳ 3 số nào giữa 200 và 999
trong ngữ cảnh này, người gọi sẽ nghe âm thanh của file auth-
thankyou.gsmO’Reilly & Associates, Inc. All rights reseẻrved.
Một điều quan trọng trong việc hiểu về chỉ định pattern là nếu asterisk tìm
nhiều hơn một pattern mà được chỉ định cho extension được gọi, nó sẽ sử dụng

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 78 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

pattern nào chi tiết nhất. Ví dụ chúng tao có hai pattern được chỉ định như bên dưới,
và người gọi gọi số 555-1212:
exten => _555XXXX,1,Playback(digits/1)
exten => _55512XX,1,Playback(digits/2)
Trong trường hợp này extension thứ hai sẽ được chọn, bởi vì nó chi tiết hơn.
4.6.6 Include
Asterisk cho phép chúng ta dùng ngữ cảnh bên trong một ngữ cảnh khác
thông qua sự định hướng của lệnh include. Điều này được dùng để cấp quyền truy
cập đến các khu vực khác trong kế hoạch quay số. Chúng ta sẽ dùng chức năng
include để cho phép các thuê bao trong ngữ cảnh [internal] có thể tạo cuộc gọi ra
bên ngoài. Nhưng đầu tiên chúng ta phải tìm hiểu cấu trúc của nó.
Câu lệnh include đi kèm với ngữ cảnh mà ngữ cảnh này là ngữ cảnh đầu xa
mà bạn muốn bao gồm nó trong ngữ cảnh hiện hành.
include => context
Khi chúng ta include các ngữ cảnh khác bên trong ngữ cảnh hiện hành,
chúng ta cần phải để ý đến thứ tự mà chúng ta include chúng. Đầu tiên asterisk tính
toán phần mở rộng trong ngữ cảnh hiện hành. Nếu thành công nó include ngữ cảnh
đầu tiên, và sau đó include các ngữ cảnh khác theo thứ tự mà chúng ta cần include.
Ở đây, kế hoạch quay số của chúng ta có 2 ngữ cảnh cho cuộc gọi ra ngoài,
nhưng không có cách nào cho người trong ngữ cảnh [internal] dùng chúng. Chúng
ta khắc phục điều này bằng cách include 2 ngữ cảnh gọi bên ngoài vào trong ngữ
cảnh [internal], chẳng hạn như:
[globals]
JOHN=Zap/1
JANE=SIP/jane
OUTBOUNDTRUNK=Zap/4

[incoming]
exten => s,1,Answer( )

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 79 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => s,2,Background(enter-ext-of-person)


exten => 101,1,Dial(${JOHN},10)
exten => 101,2,Playback(vm-nobodyavail)
exten => 101,3,Hangup( )
exten => 101,102,Playback(tt-allbusy)
exten => 101,103,Hangup( )
exten => 102,1,Dial(${JANE},10)
exten => 102,2,Playback(vm-nobodyavail)
exten => 102,3,Hangup( )
exten => 102,102,Playback(tt-allbusy)
exten => 102,103,Hangup( )
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(incoming,s,1)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup( )

[internal]
include => outbound-local
include => outbound-long-distance

exten => 101,1,Dial(${JOHN},,r)


exten => 102,1,Dial(${JANE},,r)

[outbound-local]
exten => _9NXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1})
exten => _9NXXXXXX,2,Congestion( )
exten => _9NXXXXXX,102,Congestion( )
exten => 911,1,Dial(${OUTBOUNDTRUNK}/911)
exten => 9911,1,Dial(${OUTBOUNDTRUNK}/911)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 80 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

[outbound-long-distance]
exten => _91NXXNXXXXXX,1,Dial(${OUTBOUNDTRUNK}/${EXTEN:1})
exten => _91NXXNXXXXXX,2,Congestion( )
exten => _91NXXNXXXXXX,102,Congestion( )
Hai câu lệnh include làm cho người gọi trong ngữ cảnh [internal] có thể tạo
cuộc gọi ra bên ngoài. Chúng ta cần chú ý rằng vì mục đích bảo mật bạn nên chắc
chắn rằng ngữ cảnh [inbound] của bạn không bao giờ cho phép cuộc gọi ra bên
ngoài (nếu có sự thay đổi được thực hiện, một người có thể gọi vào hệ thống của
bạn và sau đó tạo cuộc gọi ra bên ngoài và bạn phải chịu cước phí cho cuộc gọi
đó).
4.6.7 Sử dụng Database Asterisk
Asterisk cung cấp một cơ chế mạnh mẽ cho việc lưu trữ các giá trị, gọi là
asterisk database (AstDB). AstDB cung ứng một cách đơn giản cho việc lưu trữ dữ
liệu dùng trong kế hoạch quay số.
Cơ sở dữ liệu Asterisk lưu trữ dữ liệu trong nhóm (grouping) gọi là family,
giá trị định danh được xác định bằng key, với mỗi family chỉ được dùng một key duy
nhất DB(family/key). Ví dụ ta có một family là test, với key là count. Việc lưu trữ dữ
liệu phải liên kết với family là test.
Để lưu trữ dữ liệu, ta dùng ứng dụng Set( ) gán key là count trong family là
test giá trị là 1:
exten => 456,1,Set(${DB(test/count)=1})
Nếu một key là count đã tồn tại trong test family, thì giá trị cũ sẽ bị ghi đè
bởi giá trị mới.
Truy vấn dữ liệu từ AstDB:
Để truy vấn giá trị từ cơ sở dữ liệu Asterisk và gán nó vào một biến. Ta lại sử
dụng ứng dụng Set( ) và gán nó vào một biến COUNT:
exten => 456,1,Set(DB(test/count)=1)
exten => 456,2,set(COUNT=${DB(test/count)})

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 81 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => 456,3,SayNumber(${COUNT})


Có thể kiểm tra lại giá trị của key bằng cách dùng dòng lệnh trong asterisk:
# database get family key
Để xem lại tất cả nội dung của AstDB, ta dùng lệnh:
#database show
Xóa dữ liệu từ AstDB: có 2 cách để xóa dữ liệu từ cơ sở dữ liệu của
asterisk. Để xóa key, ta dùng ứng dụng Dbdel( ). Nó sẽ lấy family và key như là đối
số:
exten => 457,1,DBdel(test/count)
Hoặc có thể xóa toàn bộ key và family thông qua ứng dụng DBdeltree( ).
Ứng dụng này chỉ cần một đối số đơn: tên của family. Ví dụ dưới ta xóa toàn bộ
family test:
exten => 457,1,DBdeltree(test)
Để xóa các key hoặc cả family bằng dòng lệnh, ta dùng:
#database del key
#database deltree family
4.6.8 Các biểu thức căn bản:
Biểu thức là sự kết nối các biến, các so sánh và các giá trị bạn kết nối lại với
nhau cho ra kết quả. Một biểu thức có thể kiểm tra các giá trị, các chuỗi thay đổi.
Biểu thức là sự kết hợp của các biến, các phép so sánh, các giá trị mà chúng
ta đặt cùng nhau để cho ra một giá trị nào đó. Một biểu thức có thể kiểm tra giá trị,
thay đổi chuỗi, hoặc thực thi các phép tính toán. Giả sử chúng ta có một biến là
COUNT, đơn giản chúng ta có có thể có hai biểu thức là “COUNT cộng 1” và
“COUNT chia 2”. Mỗi biểu thức sẽ có một kết quả hoặc giá trị khác nhau, nó phụ
thuộc vào giá trị mà biến đem lại.
Trong asterisk các biểu thức luôn bắt đầu bằng dấu dollar và được đóng mở
ngoặc bằng dấu ngoặc vuông như sau:
$[expression]
Chúng ta có thể có hai ví dụ như sau:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 82 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

$[${COUNT} + 1]
$[${COUNT } / 2]
Khi mà asterisk phát hiện một biểu thức trong dialplan, nó sẽ thay thế toàn
bộ biểu thức bằng giá trị của kết quả. Điều này rất quan trọng để lưu ý rằng nó sẽ
thực hiện biểu thức sau khi đã thay thế giá trị của biến. Để giải thích rõ hơn cho ý
này, chúng ta sẽ xem đoạn code sau:
Cần lưu ý rằng khi mà chúng ta gán một biến, chúng ta có thể gọi chúng
bằng tên của nó, nhưng khi mà chúng ta sử dụng giá trị của biến, chúng ta cần sử
dụng dấu dollar và dấu ngoặc ở tên biến.
exten => 321,1,Set(COUNT=3)
exten => 321,2,Set(NEWCOUNT=$[${COUNT } + 1])
exten => 321,3,SayNumber(${NEWCOUNT})
Trong lệnh thực thi thứ nhất chúng ta gán giá trị 3 cho biến COUNT.
Trong lệnh thực thi thứ hai, chỉ có ứng dụng set() được sử dụng nhưng có 3
sự kiện xảy ra:
- Asterisk thay thế ${COUNT} với số 3 trong biểu thức. Biểu thức sẽ trở j
kthành:
exten => 321,2,Set(NEWCOUNT=$ [3 + 1])
- Tiếp đến, Asterisk thực thi biểu thức, cộng một với 3, và thay thế nó với
giá trị tính toán được là 4:
exten => 321,2,Set(NEWCOUNT=4)
- Cuối cùng, giá trị 4 được gán cho biến NEWCONT bởi ứng dụng SET()
Câu lệnh thứ ba đơn giản là thực hiện ứng dụng saynumber(), có chức năng
đọc giá trị hiện tại của biến ${NEWCOUNT} (được gán giá trị 4 trong câu lệnh thứ
hai).
*Các phép so sánh:
Khi chúng ta tạo một dialplan asterisk, chúng ta đã viết một loại code với
một ngôn ngữ đặc biệt. Điều này có nghĩa là ngôn ngữ lập trình asterisk cũng có các
ký hiệu ngôn ngữ được gọi là toán tử cho phép chúng ta vận dụng với các biến.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 83 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Các loại toán tử có thể có trong asterisk:


*Toán tử boolean:
Các toán tử này trả về giá trị đúng của của phát biểu. Trong ngôn ngữ máy
tính, rất cần có phát biểu có cái gì đó hoặc không có gì (0 hoặc 1, đúng hoặc sai, bật
hoặc tắt v.v). Các toán tử Boolean như là:
- expr1 | expr2:
Toán tử này ( được gọi là or) trả về giá trị expr1 nếu phát biểu đúng ( không
phải là một chuỗi trống, cũng không phải là số 0). Nếu ngược lại thì nó sẽ trả về giá
trị của expr2.
- expr1 & expr2:
Toán tử này (được gọi là “and”) trả về giá trị của biểu thức 1 nếu cả hai biểu
thức 1 và 2 đúng (không trả về chuỗi trống mà cũng không trả về giá trị 0). Ngược
lại nó trả về giá trị 0.
- expr1 {=, >, >=, <, <=, !=} expr2:
Những toán tử này trả về kết quả của 1 số nguyên so sánh nếu cả hai biểu
thức điều là số nguyên; nếu không thì nó sẽ trả về kết quả của chuỗi so sánh. Kết
quả của mỗi phép so sánh là 1 nếu mối liên hệ của hai biểu thức là đúng hoặc 0 nếu
mối liên hệ của chúng là sai. ( Nếu chúng ta sử dụng so sánh chuỗi, nó sẽ được hoàn
thành sao cho phù hợp nhất với việc cài đặt hiện tại trong hoạt động của hệ thống).
*Toán tử toán học:
Để thực hiện tính toán, chúng ta có thể thực hiện như sau:
- expr1 {+, -} expr2
Các toán tử này sẽ trả về kết quả của việc cộng hoặc trừ các giá trị của biểu
thức
- expr1 {*, /, %} expr2
Các toán tử sẽ trả về kết quả của việc nhân, chia số nguyên hoặc là phần dư
còn lại của việc thực hiện biểu thức.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 84 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Asterisk phân tích cú pháp rất đơn giản, nó yêu cầu chúng ta cần có ít nhất
một khoảng trống giữa toán tử và các giá trị. Thường thì câu lệnh sau sẽ không thực
hiện được như mong đợi:
exten => 123,1,Set(TEST=$[2+1])
Điều này sẽ gán biến test với chuỗi “2+1”, thay vì gán cho nó giá trị ba.
Thực tế cần phải có một khoảng trống giữa toán tử, giống như sau:
exten => 234,1,Set(TEST=$[2 + 1])
Để móc nối các biến với nhau, đơn giản đặt chúng trong biểu thức, như:
exten => 234,1,Set(NEWTEST=$[$blah{TEST}])

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 85 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Chương 5:
MÔ HÌNH THỰC HIỆN
Mô hình mạng điện thoại này được thực hiện đáp ứng cho các doanh nghiệp
nhỏ, thực hiện dựa trên cơ sở hạ tầng mạng sẵn có của doanh nghiệp.
5.1 Một số mô hình sử dụng trong thực tế
5.1.1 Mô hình đơn site
Mô hình đơn site là mô hình được sử dụng cho các doanh nghiệp mà nơi làm
việc chỉ tập trung tại một địa điểm vật lý, mạng doanh nghiệp bao gồm chỉ một site
hoặc một campus được đáp ứng bởi LAN. Cuộc gọi đi ra ngoài môi trường mạng
campus được cung cấp bởi gateway IP đến PSTN hoặc qua internet thông qua một
nhà cung cấp dịch vụ ITSP (Internet Telephony Service Provider). Bởi vì băng
thông luôn được đáp ứng đảm bảo cho các thuê bao trong mạng LAN, nên ở đây
không cần quan tâm đến việc điều khiển nạp cuộc gọi.

Hình 5.1: Mô hình đơn site

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 86 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

5.1.2 Mô hình đa site xử lý cuộc gọi phân tán


Mô hình đa site với việc xử lí cuộc gọi phân tán là mô hình sử dụng cho các
doanh nghiệp có các địa điểm làm việc không tập trung và trải dài ở các địa điểm
vật lí, với số thuê bao tại mỗi địa điểm tương đối lớn. Ở mô hình này mỗi địa điểm
sẽ có một server hoặc một cụm server asterisk riêng tùy theo số lượng thuê bao cần
sử dụng trong doanh nghiệp. Giả sử một mạng ngân hang có 3 địa điểm giao dịch ở
Thành Phố Hồ Chí Minh, Đà Nẵng, và Hà Nội, và đã xây dựng một mạng dữ liệu IP
WAN cho mình. Việc lắp đặt thêm một mạng thoại IP dựa trên mạng dữ liệu đó để
tiết kiệm chi phí cuộc gọi giữa các tỉnh này trong doanh nghiệp là điều hoàn toàn dễ
dàng. Thêm vào đó chúng ta có thể thực hiện cuộc gọi liên tỉnh ra PSTN giữa các
tỉnh đó với nhau mà chỉ tính tiền nội hạt.
Mô hình đa site với việc xử lí cuộc gọi tập trung chỉ sử dụng PSTN cho việc
truyền thoại thì mô hình đa site IP WAN với việc xử lí cuộc gọi phân tán sử dụng IP
WAN để truyền thoại khi mà băng thông cho phép. Điều này cho phép chúng ta
đem lại hiệu quả kinh tế khi định tuyến cuộc gọi qua IP WAN hơn là PSTN.
Với mô hình này thì chúng ta có thể sử dụng kiểu đường vòng qua PSTN khi
có thể và đảm bảo rằng các kết nối với các site ở xa luôn duy trì khi mà IP WAN bị
hỏng. Sử dụng gatekeeper H.323 cho phép chúng ta thực hiện chính sách QoS để
đảm bảo chất lượng các cuộc gọi giữa các site. Các codec thoại cần phải sử dụng
cho cùng các cuộc gọi liên site. Hai vấn đề trở ngại trong mô hình này là việc gia
tăng các đăng nhập phức tạp, bởi vì mỗi site phải yêu cầu database của tất cả và việc
truyền thông kém trong suốt giữa các site.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 87 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.2: Mô hình đa site phân tán


5.1.3 Mô hình đa site xử lí cuộc gọi tập trung
Đây là mô hình sử dụng cho các doanh nghiệp có các địa điểm làm việc khác
nhau, nhưng số lượng thuê bao tập trung cho các địa điểm là tương đối ít. Trong
mô hình đa site với việc xử lí cuộc gọi tập trung server asterisk trong mạng tập
trung campus xử lí các cuộc gọi của các thiết bị IP telephony ở mạng campus tập
trung và cả ở các site từ xa được kết nối bởi IP WAN. Ví dụ như một doanh nghiệp
có trụ sở chính tại Thành Phố Hồ Chí Minh, và có các chi nhánh ở miền Tây, với
mỗi chi nhánh số lượng thuê bao là không nhiều. Trên cơ sở mạng dữ liệu đã xây
dựng sẵn, doanh nghiệp có thể xây dựng mạng thoại cho mình, bằng cách đặt một
hoặc nhiều server asterisk ở trụ sở chính. Các thuê bao ở các chi nhánh sẽ đăng ký
lên server ở trụ sở chính và việc xử lí cuộc gọi sẽ tập trung ở đây

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 88 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.3: Mô hình đa site tập trung


5.1.4 Mô hình đa site xử lý cuộc gọi kết hợp
Chúng ta có thể triển khai mô hình phân tán và mô hình tập trung trong cùng mô
hình. Nếu chúng ta có một vài site rộng lớn với một vài văn phòng nhánh nhỏ, tất cả
đều được kết nối bởi IP WAN, ở đây chúng ta có thể kết nối các site lớn sử dụng
mô hình phân tán, trong khi đó đáp ứng các nhánh văn phòng nhỏ từ một trong
những mạng chính campus của chúng ta sử dụng mô hình tập trung. Giả sử một
mạng Ngân hàng có 3 trụ sở chính ở Hà Nội, Đà Nẵng, và Thành Phố Hồ Chí Minh,
các chi nhánh trải rộng khắp cả nước. Ngân hàng này đã có mạng WAN riêng.
Chúng ta có thể xây dựng thêm mạng thoại trên cơ sở mạng WAN này sử dụng mô
hình kết hợp. Bằng cách đặt một server hoặc nhiều server asterisk ở tại mỗi trụ sở.
Cụ thể server ở Thành phố Hồ Chí Minh sẽ tập trung xử lí cuộc gọi ở chính tại trụ
sở của nó và các chi nhánh miền Nam. Còn server ở Đà Nẵng sẽ tập trung xử lí
cuộc gọi ở chính tại trụ sở của nó và các chi nhánh miền Trung. Còn server ở Hà
Nội sẽ tập trung xử lí cuộc gọi ở chính trụ sở của nó và các chi nhánh miền Bắc.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 89 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.4: Mô hình đa site kết hợp

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 90 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

5.2 Mô hình triển khai hệ thống Asterisk

Hinh 5.5: Mô hình triển khai hệ thống asterisk


*Yêu cầu thiết bị:
- Asterisk PBX: sử dụng để cài đặt Asterisk với cấu hình:
CPU: 2.66 GHz
RAM: 1 GB
Ổ cứng 80 GB
- 2 máy tính có cài đặt softphone sử dụng giao thức SIP và IAX tương ứng
với các extention là 200 và 300.
- Modem :kết nối với nhà cung cấp dịch vụ Internet.
- Switch: có đủ số cổng để kết nối các máy tính khác.
- ATA Analog Telephone Adaptors (Grandstream 480): 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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 91 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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
- Card X100P: gắn vào Asterisk Server có 1port RJ-11 là cổng FXO kết nối
với mạng PSTN
*Yêu cầu thực hiện:
- Thực hiện cuộc gọi giữa các softphone, giữa softphone và analog phone,
thực hiện giữa các user trong mạng nội bộ với thuê bao mạng PSTN và
ngược lại thông qua Asterisk Server.
- Thực hiện các dịch vụ IVR, voicemail, fordward, transfer, conference, call
pickup, call parking, DISA, do not disturb, Asterisk realtime architecture,
Call detail record.
Để cấu hình cho một hệ thống Asterisk hoạt động, trước tiên ta sẽ phải định
nghĩa các extension, sau đó xây dựng các Dialplan thích hợp để cho các extension
kết nối được với nhau và kết nối với các thuê bao ở ngoài mạng PSTN cũng như
mạng Internet.
Trong mô hình này ta sẽ định nghĩa kế hoạch quay số như sau:
- [1xx] dùng cho điện thoại tương tự nối với Grandstream
- [2xx] dùng cho softphone SIP
- [3xx] dùng cho softphone IAX
- [9] dùng cho kết nối với mạng PSTN
-[8] gọi ra ngoài bằng internet thông qua nhà cung cấp dịch vụ VoiP
5.3 Cấu hình phần cứng
5.3.1 Cấu hình thiết bị Grandstream 488
Thiết bị Grandstream 488 dùng để kết nối điện thoại tương tự thông thường
vào mạng IP và một cổng line kết nối với PBX hoặc PSTN.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 92 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.6: Grandstream 488


Grandstream có 4 cổng giao tiếp:
- Cổng Ethernet nối với một máy tính, máy tính này được sử dụng để cấu
hình các thông số cho Grandstream 488 hoạt động.
- Cổng Internet nối với mạng LAN chứa Asterisk PBX và các máy tính có
cài softphone.
- Cổng Line nối với đường dây điện thoại thông thường.
- Cổng Phone nối với điện thoại tương tự.
Như vậy khi kết nối cổng Internet của Gradstream 488 vào mạng LAN chứa
Asterisk PBX, cổng Phone với điện thoại tương tự thì điện thoại tương tự lúc này đã
tham gia mạng IP, và ta coi điện thoại tương tự có vai trò tương tự như các
softphone khác trong mạng.
*Cấu hình cổng Phone: (nối với điện thoại tương tự)
Muốn điện thoại tương tự tham gia mạng IP với vai trò như các softphone
khác trong mạng thì cần phải tạo ra một extension trong Asterisk PBX (đặt tên là
“100”), sau đó cấu hình cổng Phone nhận các thông tin đó, và Asterisk sẽ coi điện
thoại tương tự đó như các extension khác. Thông tin về extention “100” được ghi
trong file sip.conf có dạng như sau:
[100] ; Tên của extension
host=dynamic
secret=100 ; Mật khẩu
context=mainmenu

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 93 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Grandstream 488 hỗ trợ giao diện web để giúp người sử dụng dễ dàng hơn
trong việc cấu hình.
- Kết nối máy tính đến cổng Ethernet của Grandstream 488
- Vào giao diện cấu hình của Grandstream 488, vào phần cấu hình cho cổng
Phone
- Cấu hình các thông số về tài khoản và mật khẩu của extension “100”

Hình 5.7: Giao diện cổng phone của Grandstream 488


*Cấu hình cổng Line: (nối với mạng điện thoại PSTN)
Để có thể chuyển các cuộc gọi từ mạng nội bộ ra mạng điện thoại PSTN thì
thiết bị Grandstream phải được cấu hình tự động nhận các cuộc gọi từ các
extension trong mạng nôi bộ, sau đó chuyển ra cổng Line để đi ra mạng PSTN.
Các bước cấu hình được tiến hành như sau:
- Vào giao diện cấu hình của cổng Line: cấu hình số 9 để thực hiện cuộc gọi
ra ngoài PSTN

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 94 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.8: Giao diện cổng line của Grandstream 488


- Cấu hình một Dialplan để tự động chuyển các cuộc gọi vào asterisk để xử
lý thực hiện ở tab Basic Setting. Dial plan đó như sau:
(S@192.168.1.1)
5.3.2 Lắp đặt Card X100P và cấu hình
Card X100P là thiết bị dùng để kết nối giữa các user trong mạng nội bộ
Asterisk với mạng PSTN.

Hình 5.9 : Card X100P

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 95 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Trước khi lắp đặt card X100P 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.
Để 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

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 96 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

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.
#Modprobe zaptel
#Modprobe wcfxo
#Ztcfg –vvvvv
#Asterisk –vvvvvgc
5.4 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 và
softphone sử dụng giao thức SIP, 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.
- 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.
- Context: Khai báo ngữ cảnh cho thuê bao.
- Mailbox: Khai báo hộp thư thoại cho thuê bao.
- Call-limit: Khai báo bao nhiêu cuộc gọi có thể thực hiện đồng thời đối với
thuê bao.
- Group: Khai báo nhóm cho thuê bao.
- Callgroup: Khai báo nhóm gọi cho thuê bao.
- Pickupgroup: Khai báo nhóm pick up cho thuê bao.
- Barge_rooms: Khai báo phòng hội nghị cho thuê bao.
- Disallow : Khai báo codec nào không được hoạt động ứng với thuê bao.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 97 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Allow: Khai báo codec nào được hoạt động ứng với thuê bao.
Cụ thể trong file /etc/asterisk/sip.conf cấu hình các extensions 100; 200 và
9 và một extensions mysipprovider với nhà cung cấp dịch vụ VoiP:
[100]
type=peer
username=thanhphu
host=dynamic
callerid="nguyen thanh phu"<100>
secret=100
call-limit=1
disallow=all
allow=gsm
allow=ulaw
allow=alaw
canreinvite=no
context=out1
mailbox=100@default
group=1
Callgroup=1
pickupgroup=1
barge_rooms=600
[200]
type=peer
username=thanhphuoc
host=dynamic
callerid="nguyen thanh phuoc"<200>
secret=200
call-limit=1
disallow=all

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 98 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

allow=gsm
allow=ulaw
allow=alaw
context=out
mailbox=200@default
group=1
Callgroup=1
pickupgroup=1
[9]
type=peer
host=dynamic
insecure=5062
qualify=yes
canreinvite=no
context=mainmenu
dtmfmode=inband
group=1
callgroup=1
pickupgroup=1
[mysipprovider]
type=peer
secret=34410933
username=65130964
host=202.134.16.90
fromuser=65130964
fromdomain=202.134.16.90
canrenvite=no
insecure=very
qualify=yes

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 99 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

disallow=all
allow=gsm
allow=ulaw
allow=alaw
allow=g729
nat=yes
qualify=yes
context=mainmenu
register => 65130964:34410933@202.134.16.90
Ở đây sử dụng dịch vụ của nhà cung cấp dịch vụ voice777 với số đăng ký là
65130964 và mật mã 34410933. Có thể đăng ký với nhà cung cấp khác với số đăng
ký và mật mã được cấp tương ứng với nhà cung cấp dịch vụ
5.5 Khai báo kênh IAX
Khai báo các kênh iax riêng cho softphone sử dụng giao thức IAX.
Sau đây là các thông số dành khai báo riêng cho từng kênh IAX.
- Name: đây là phần khai báo máy điện thoại extention IAX, 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.
- 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.
- Context: Khai báo ngữ cảnh cho thuê bao.
- Mailbox: Khai báo hộp thư thoại cho thuê bao.
- Group: Khai báo nhóm cho thuê bao.
- Callgroup: Khai báo nhóm gọi cho thuê bao.
- Pickupgroup: Khai báo nhóm pick up cho thuê bao.
- Barge_rooms: Khai báo phòng hội nghị cho thuê bao.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 100 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Maxauthreq: Khai báo yêu cầu chứng thực cho thuê bao.
Cụ thể trong file /etc/asterisk/iax.conf cấu hình extensions 300 như sau:
[300]
type=friend
username=300
callerid="tin"<300>
host=dynamic
secret=300
maxauthreq=0
context=out
group=1
Callgroup=1
pickupgroup=1
mailbox=300@default
5.6 Cấu hình Softphone
5.6.1 Cấu hình Softphone Xlite.
Softphone Xlite sử dụng giao thức báo hiệu SIP. Cấu hình Softphone được
thực hiện theo các bước như sau:
- Bước 1. Chọn settings trên menu

Hình 5.10: Cấu hình điện thoại x-lite


- Bước 2. Thực hiện khai báo cấu hình các thông số của thuê bao:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 101 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.11: Khai báo user điện thoại x-lite


5.6.2 Cấu hình Softphone Zoiper
Softphone Xlite sử dụng giao thức báo hiệu SIP. Cấu hình Softphone được
thực hiện theo các bước như sau:
- Bước 1. Chọn settings trên menu

click

Hình 5.12: Cấu hình điện thoại zoiper

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 102 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Bước 2. Thực hiện khai báo cấu hình các thông số của thuê bao:

Hình 5.13: Khai báo user điện thoại zoiper


5.7 Xây dựng IP-PBX
Asterisk server trong mô hình này sẽ đóng vai trò chính là chuyển mạch giữa
các thuê bao nội bộ và kết nối với các thuê bao nội bộ ra bên ngoài PSTN hoặc đến
thuê bao VoIP khác. Trong mô hình này để các thuê bao trong mạng nội bộ có thể
gọi đến các thuê bao VoIP hoặc các dịch vụ qua đường internet thì cần phải đăng ký
một số từ nhà cung cấp dịch vụ VoIP ( có thể đăng ký dịch vụ của nhà cung cấp
voice777).

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 103 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

5.7.1 Cuộc gọi nội bộ giữa hai thuê bao sử dụng cùng giao thức báo hiệu

Hình 5.14: Mô hình thực hiện cuộc gọi nội bộ cùng giao thức

Khi một SoftPhone hay một Analog Phone cần gọi một Softphone hay một
Analog Phone sử dụng cùng giao thức báo hiệu, người sử dụng chỉ cần bấm số điện
thoại của Softphone hay Analog phone cần gọi.

Ví dụ: Softphone SIP 200 gọi analogphone 100 cùng chịu sự quản lý của
asterisk PBX thì việc xử lý cuộc gọi gồm các bước sau:

- Bước 1: Softphone SIP 200 quay số 100 và báo hiệu lên tổng đài asterisk
sử dụng giao thức SIP.

- Bước 2: Asterisk sẽ thông báo cho Analogphone 100 có cuộc gọi đến từ
Softphone 200 sử dụng giao thức SIP.

- Bước 3: Analogphone 100 ở trạng thái rỗi, nó báo hiệu cho asterisk server
biết nó có thể nhận được cuộc gọi sử dụng giao thức báo hiệu SIP.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 104 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Bước 4: Khi cả hai thuê bao đã sẵn sàng cho cuộc gọi, hai bên truyền
thông với nhau thông qua giao thức RTP.

Hình 5.15: Các bản tin trong cuộc gọi nội bộ


Sử dụng phần mềm ethereal để bắt gói phân tích báo hiệu, ta được kết quả
như hình 5.15

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 105 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

5.7.2 Cuộc gọi nội bộ giữa hai thuê bao sử dụng khác giao thức báo hiệu

Hình 5.16: Mô hình thực hiện cuộc gọi nội bộ khác giao thức

Khi một SoftPhone hay một Analog Phone cần gọi một Softphone hay một
Analog Phone sử dụng khác giao thức báo hiệu, người sử dụng chỉ cần bấm số điện
thoại của Softphone hay Analog phone cần gọi.

Ví dụ: Analogphone 100 gọi Softphone IAX 300 cùng chịu sự quản lý của
asterisk PBX thì việc xử lý cuộc gọi gồm các bước sau:

- Bước 1: Analogphone 100 quay số 300 và báo hiệu lên tổng đài asterisk
sử dụng giao thức SIP.

- Bước 2: Asterisk sẽ thông báo cho Softphone IAX 300 có cuộc gọi đến từ
Analog phone sử dụng giao thức báo hiệu IAX.

- Bước 3: Softphone IAX 300 ở trạng thái rỗi, nó báo hiệu cho asterisk
server biết nó có thể nhận được cuộc gọi sử dụng giao thức báo hiệu IAX.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 106 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

- Bước 4: Khi cả hai thuê bao đã sẵn sàng cho cuộc gọi, hai bên truyền
thông với nhau thông qua giao thức RTP.
5.7.3 Cuộc gọi ra ngoài PSTN

Hình 5.17: Mô hình cuộc gọi ra ngoài PSTN


Khi một SoftPhone hay một Analog Phone cần gọi một số khác ở ngoài
mạng PSTN, người sử dụng cần bấm: 9 + Số điện thoại cần gọi

Ví dụ: Softphone SIP 200 cần gọi ra ngoài PSTN với số cần gọi là 8991768,
thì việc xử lí cuộc gọi gồm các bước sau:

- Bước 1: Softphone SIP 200 quay số 98991768 và báo hiệu lên tổng đài
asterisk sử dụng giao thức SIP.

- Bước 2: Asterisk sẽ thông báo cho cổng FXO có cuộc gọi ra ngoài PSTN
sử dụng giao thức IAX (đối với việc sử dụng card X100P gọi ra ngoài

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 107 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

PSTN) hoặc sử dụng giao thức SIP (đối với việc sử dụng Grandstream gọi
ra ngoài PSTN)

- Bước 3: Thuê bao PSTN khi ở trạng thái rỗi, FXO báo cho asterisk server
biết thuê bao PSTN có thể nhận được cuộc gọi sử dụng giao thức báo hiệu
IAX (đối với việc sử dụng card X100P) hoặc giao thức SIP (đối với việc sử
dụng Grandstream).

- Bước 4: Khi cả hai thuê bao đã sẵn sàng cho cuộc gọi, hai bên truyền
thông với nhau thông qua FXO.

Hình 5.18: Các bản tin cuộc gọi ra ngoài PSTN


5.8 Xây dựng các dịch vụ
5.8.1 IVR (Interactive voice response)
Dịch vụ IVR được sử dụng trong hệ thống để tạo lời chào khi có số gọi đến
và asterisk sẽ định hướng theo sự tương tác của thuê bao gọi đến. Cụ thể trong hệ
thống này được xây dựng khi có thuê bao bên ngoài gọi đến sẽ bật lời chào có nội

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 108 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

dung như sau: “ Chào mừng bạn đến với công ty chúng tôi, bấm số 1 để gặp số 100,
bấm số 2 để gặp số 200, bấm số 3 để gặp số 300, để tham gia hội nghị với chúng
tôi, bấm số 9, để sử dụng dịch vụ DISA bấm số 000”. Ngoài ra hệ thống cũng được
lập trình cho thuê bao bên ngoài bấm thẳng vào số máy nhánh nếu biết số của máy
nhánh.
Hệ thống sẽ tự động trả lời lặp lại 3 lần nếu không có sự tương tác nào của
thuê bao gọi đến, sau đó hệ thống sẽ hủy kết nối.

Hình 5.19: Mô hình minh họa thực hiện dịch vụ IVR


Chi tiết được cấu hình trong file extensions.conf với ngữ cảnh được gán cho
nó là mainmenu:
[mainmenu]
exten=>s,1,Answer();có cuộc gọi đến thì trả lời
exten=>s,n,set(COUNT=0); tạo bộ đếm đếm số lần phát lời chào
exten=>s,n(ct1),Background(loichao); phát lời chào
exten=>s,n,set(COUNT=$[${COUNT}+1}]); tăng bộ đếm

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 109 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten=>s,n,gotoif($[${COUNT} = 3]?ct:ct1); Đã phát lời chào đủ 3 lần?


exten=>s,n(ct),playback(vm-tambiet); phát lời tạm biệt
exten=>s,n,hangup(); hủy kết nối
exten=>1xx,SET(TEMP=${EXTEN})
exten=>1xx,goto(local_analog,${TEMP},1)
exten=>2xx,SET(TEMP=${EXTEN})
exten=>2xx,goto(local_SIP,${TEMP},1)
exten=>3xx,SET(TEMP=${EXTEN})
exten=>3xx,goto(local_IAX,${TEMP},1)
exten=>1,1,goto(local_analog,100,1); thuê bao gọi bấm 1
exten=>2,1,goto(local_SIP,200,1); thuê bao gọi bấm 2
exten=>3,1,goto(local_IAX,300,1); thuê bao gọi bấm 3
exten=>000,1,goto(custom-disa,s,1); thuê bao gọi sử dụng DISA
exten=>9,1,goto(Meetme,555,1); Thuê bao gọi tham gia hội nghị
exten => i,1,Goto(mainmenu,s,1);phím bấm không hợp lệ
5.8.2 Voicemail (hộp thư thoại)
Asterisk cung cấp khả năng xây dựng ứng dụng VoiceMail, với khả năng này
giúp cho người sử dụng điện thoại không bỏ lỡ bất cứ cuộc gọi điện thoại nào. Một
số tính năng của hệ thống voiceMail:
- Khi người gọi không được trả lời, máy không được kết nối mạng hay máy
điện thoại đang bận, hệ thống đều có thông điệp riêng để thông báo tình
trạng của máy thuê bao được gọi và phát thông điệp mời để lại tin nhắn.
- Mỗi hộp thư đều được quản lý bằng password và thư mục riêng.
- Khi thông điệp được nhận hệ thống VoiceMail có thể gửi qua Mail để
thông báo, tất nhiên có kèm theo file thông điệp.
- Có thể kiểm tra VoiceMail trực tiếp trên máy điện thoại.
- Những thông điệp Lời chào trong hệ thống hoàn toàn có thể thay đổi phù
hợp với ngữ cảnh sử dụng. Không nhất thiết phải sử dụng thông điệp mặc
định.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 110 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Để khai báo hôp thư thoại cho thuê bao, ta cấu hình trong file voicemail.conf
ở đường dẫn /etc/asterisk/voicemail.conf như sau:
300=>300,thanhphuoc,empty_dream2000@yahoo.com
100=>100,thanhphu,tieuphuphu2005@yahoo.com
200=>200,thanhphong,best_lionh@yahoo.com
Trong đó
- 300: tên mailbox
- 300: password của mailbox
- thanhphuoc: tên người sử dụng
- empty_dream2000@yahoo.com: địa chỉ mail của người sử dụng
Ngoài ra còn cấu hình trong file sip.conf và iax.conf như đã khai báo ở trên.
Lúc này các cuộc gọi sẽ được lưu vào mailbox của thuê bao.
Thuê bao muốn nghe thư thoại và thực hiện các tương tác sẽ bấm số 123 để
xem mail hoặc thực hiện đăng nhập được cấu hình trong file extensions.conf:
[mailbox]
exten=>123,1,VoiceMailMain(s${CALLERID(num)})
exten=>123,2,Hangup
Khi nghe lời chào, thuê bao thực hiện các tương tác:
Ấn số 1: để nghe.
Ân số 2: nghe mail trước đó
Ân số 3: ngừng
Ấn số 4: nâng cao
Ấn số 5: lặp lại
Ấn số 6: tiếp theo
Ấn số 7: xóa
Ấn số 8: chuyển tiếp
Ấn số 9: lưu
Để lưu messages ta ấn số 9 với :
Số 0 :new

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 111 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Số 1: old
Số 2: work
Số 3: family
Số 4: friend
5.8.3 Call Forwarding (chuyển cuộc gọi)
Chuyển cuộc gọi là tính năng hay được sử dụng trong bất kỳ hệ thống điện
thoại nào cho phép thuê bao tự cài đặt khi cần thiết.
Có nhiều trường hợp để chuyển cuộc gọi bao gồm:
- Chuyển cuộc gọi tức thời
- Chuyển cuộc gọi khi máy đang bận
- Chuyển cuộc gọi khi không trả lời
5.8.3.1 Chuyển cuộc gọi tức thời
Chuyển cuộc gọi tức thời là dịch vụ cho phép thuê bao chuyển cuộc gọi đến
một số máy nào đó đã được cài đặt trước khi có một số gọi vào thuê bao đó. Trong
hệ thống để thực hiện dịch vụ này thuê bao cần thực hiện như sau:
- Để kích hoạt dịch vụ chuyển cuộc gọi tức thời: bấm số *21#xxxxxx
trong đó xxxxxxx là số điện thoại mà thuê bao muốn chuyển đến, sau đó sẽ
nghe thông báo đã kích hoạt dịch vụ này và số mà thuê bao muốn chuyển
đến.
- Để hủy bỏ dịch vụ chuyển cuộc gọi tức thời: bấm số #21#, sau đó sẽ
nghe thông báo đã hủy dịch vụ này.
Việc cấu hình trong file /etc/asterisk/extensions đuợc thực hiện như sau:
[F_INM]
;Kích hoạt dịch vụ
exten => _#21*X.,1,set(DB(CFIM/${CALLERID(num)})=${EXTEN:4})
exten =>_#21*X.,n,playback(inm-o);phát thông báo
exten => _#21*X.,n,Saydigits(${EXTEN:4});phát số muốn chuyển
exten =>_#21*X.,n,playback(auth-thankyou);phát lời cảm ơn
exten => _#21*X.,n,Hangup;Hủy kết nối

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 112 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => #21#,1,set(DB(CFIM/${CALLERID(num)})=0);hủy bỏ dịch vụ


exten => #21#,n,playback(inm-no);phát thông báo
exten => #21#,n,playback(auth-thankyou);phát lời cảm ơn
exten => #21#,n,Hangup;Hủy kết nối

Hình 5.20: Các bản tin khi thực hiện chuyển cuộc gọi tức thời
5.8.3.2 Chuyển cuộc gọi khi bận
Chuyển cuộc gọi khi bận là dịch vụ cho phép thuê bao chuyển cuộc gọi đến
một số máy nào đó đã được cài đặt trước khi có một số gọi vào thuê bao đó nhưng
thuê bao này đang bận. Trong hệ thống để thực hiện dịch vụ này thuê bao cần thực
hiện như sau:
- Để kích hoạt dịch vụ chuyển cuộc gọi khi bận: bấm số *61#xxxxxx
trong đó xxxxxxx là số điện thoại mà thuê bao muốn chuyển đến, sau đó sẽ
nghe thông báo đã kích hoạt dịch vụ này và số mà thuê bao muốn chuyển
đến.
- Để hủy bỏ dịch vụ chuyển cuộc gọi khi bận: bấm số #61#, sau đó sẽ
nghe thông báo đã hủy dịch vụ này.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 113 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Việc cấu hình trong file /etc/asterisk/extensions đuợc thực hiện như sau:
[F_BSY]
;Kích hoạt dịch vụ
exten => _#61*X.,1,set(DB(CFIM/${CALLERID(num)})=${EXTEN:4})
exten =>_#61*X.,n,playback(inm-o);phát thông báo
exten => _#61*X.,n,Saydigits(${EXTEN:4});phát số muốn chuyển
exten =>_#61*X.,n,playback(auth-thankyou);phát lời cảm ơn
exten => _#61*X.,n,Hangup;Hủy kết nối
exten => #61#,1,set(DB(CFIM/${CALLERID(num)})=0);hủy bỏ dịch vụ
exten => #61#,n,playback(inm-no);phát thông báo
exten => #61#,n,playback(auth-thankyou);phát lời cảm ơn
exten => #61#,n,Hangup;Hủy kết nối

Hình 5.21: Các bản tin khi thực hiện chuyển cuộc gọi khi bận

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 114 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

5.8.3.3 Chuyển cuộc gọi khi không trả lời


Chuyển cuộc gọi khi không trả lời là dịch vụ cho phép thuê bao chuyển cuộc
gọi đến một số máy nào đó đã được cài đặt trước khi có một số gọi vào thuê bao đó
nhưng thuê bao này đi vắng hoặc không trả lời. Trong hệ thống để thực hiện dịch vụ
này thuê bao cần thực hiện như sau:
- Để kích hoạt dịch vụ chuyển cuộc gọi khi không trả lời: bấm số
*51#xxxxxx trong đó xxxxxxx là số điện thoại mà thuê bao muốn chuyển
đến, sau đó sẽ nghe thông báo đã kích hoạt dịch vụ này và số mà thuê bao
muốn chuyển đến.
- Để hủy bỏ dịch vụ chuyển cuộc gọi khi không trả lời: bấm số #51#, sau
đó sẽ nghe thông báo đã hủy dịch vụ này.
Việc cấu hình trong file /etc/asterisk/extensions đuợc thực hiện như sau:
[F_NSWR]
;Kích hoạt dịch vụ
exten => _#51*X.,1,set(DB(CFIM/${CALLERID(num)})=${EXTEN:4})
exten =>_#51*X.,n,playback(inm-o);phát thông báo
exten => _#51*X.,n,Saydigits(${EXTEN:4});phát số muốn chuyển
exten =>_#51*X.,n,playback(auth-thankyou);phát lời cảm ơn
exten => _#51*X.,n,Hangup;Hủy kết nối
exten => #51#,1,set(DB(CFIM/${CALLERID(num)})=0);hủy bỏ dịch vụ
exten => #51#,n,playback(inm-no);phát thông báo
exten => #51#,n,playback(auth-thankyou);phát lời cảm ơn
exten => #51#,n,Hangup;Hủy kết nối

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 115 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.22: Các bản tin thực hiện chuyển cuộc gọi khi không trả lời

5.8.4 Call Transfer


Dịch vụ call transfer là dịch vụ chuyển cuộc gọi đến một số nào đó khi bên
gọi yêu cầu bên được gọi chuyển. Ví dụ như có một số bên ngoài gọi đến số 200 và
cả hai bên đã thông thoại, thuê bao bên ngoài muốn chuyển cuộc gọi đến số 100, thì
bên được gọi là số 200 sẽ bấm phím #, nghe thông báo transfer và bấm số 100 để
chuyển cuộc gọi đến số 100.
Việc cấu hình trong file /etc/asterisk/externsions.conf thực hiện như sau:
Thêm tham số T vào câu lệnh Dial, thiết lập group cho các thuê bao, hệ thống tự
động sẽ kích hoạt dịch vụ Call Transfer.Ví dụ:
exten => _2xx,n(CS2),Dial(SIP/${TEMP},20,tT)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 116 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.23: Các bản tin khi thực hiện dịch vụ transfer
5.8.5 Call Parking
Call Parking là dịch vụ thực hiện chuyển cuộc gọi có quản lý. Nguyên lý
hoạt động của nó như sau:
Ví dụ : Số bên ngoài 8991768 gọi cho số 200 và nhờ chuyển máy để được
gặp số 300. Khi đó số 200 sẽ thực hiện các bước như sau:
- Bước 1. Quay số #700 một con số parking sẽ được thông báo cho số 300
trong trường hợp này là 701.
- Bước 2. Số 200 gác máy (trong lúc này số bên ngoài sẽ nghe nhạc) và gọi
đến cho số 300 thông báo cho số đó biết là có một cuộc gọi đang đợi số 300
trên số parking 701.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 117 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Tại lúc này có hai trường hợp xảy ra.


a. Số 300 sẽ gọi số 701 để gặp số gọi vào là 8991768.
b. Số 300 không muốn gặp số bên ngoài 8991768 và lúc này số 200 sẽ quay
số 701 thông báo số 300 không thể gặp số 8991768.
Cấu hình chi tiết trong file /etc/asterisk/ features.conf và file
/etc/asterisk/extensions.conf như sau:
*File features.conf:
[general]
parkext => 700 ; con số mà người nhận cuộc gọi quay để nhận số parking
parkpos => 701-709 ; Con số mà cuộc gọi sẽ paking trên đó
oncontext => parkedcalls ;ngữ cảnh parking cuộc gọi
parkingtime => 60 ; Số giây mà một cuộc gọi có thể parking (mặc định là 45
giây)
*File extensions.conf thông qua ngữ cảnh Parked như sau:
[Parked]
exten=>700,1,Park()
exten=>701,hint,park:701@parkedcalls
exten=>701,1,Wait(1)
exten=>701,2,ParkedCall(701)
exten=>702,hint,park:702@parkedcalls
exten=>702,1,Wait(1)
exten=>702,2,ParkedCall(702)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 118 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 119 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.24: Các bản tin khi thực hiện dịch vụ call parking
5.8.6 Call Pickup
Call pickup là dịch vụ cho phép chúng ta nhận cuộc gọi từ xa trong cùng một
nhóm hay nhận cuộc gọi từ một máy điện thoại đang rung chuông bất kỳ.
Bất kỳ số điện thoại nào trong cùng một nhóm với các thông số callgroup và
pickupgroup giống nhau đều có thể nhận cuộc gọi khác trong cùng nhóm đó. Các
thông số này được cấu hình trong file /etc/asterisk/sip.conf khi khai báo tạo tài
khoản user đã được cấu hình ở trên. Cách hoạt động nó như sau: ví dụ một thuê bao
trong mạng PSTN gọi vào số 200, số 200 đang rung chuông, số 100 có cùng
calllgroup và pickupgroup với 200 muốn bắt máy và đàm thoại với thuê bao trong
mạng PSTN, khi đó thuê bao 100 sẽ bấm: 7200.
Cấu hình trong file /etc/asterisk/extensions.conf với ngữ cảnh pickup như
sau:
[pickup]
exten => _7.,1,SET(GLOBAL(PICKUPMARK)=${EXTEN:1})
exten => _7.,n,Pickup(${EXTEN:2}@PICKUPMARK);7 là số callpickup

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 120 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.25: Các bản tin khi thực hiện dịch vụ call pickup
5.8.7 Meetme (chức năng hội nghị)
Chức năng hội thoại cho phép nhiều người có thể cùng nhau trao đổi nói
chuyện với nhau, nơi mà mọi người cùng gọi đến để trao đổi nói chuyện gọi là
phòng hội thoại “room”, Asterisk cho phép tạo ra nhiều phòng hội thoại “room” tuỳ
vào nhu cầu người sử dụng. Trong hệ thống điện thoại truyền thống PSTN để có thể
sử dụng được tính năng này chúng ta phải trả tiền còn đối với Asterisk là miễn phí.
Để sử dụng hội nghị, thuê bao nội bộ cần bấm số 555, nghe thông báo mời nhập mật

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 121 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

khẩu (600), sau khi nhập mật khẩu đúng sẽ nghe lời gọi cảm ơn và bây giờ thuê bao
có thể tham gia hội nghị.

Hình 5.26: Mô hình thực hiện hội nghị


Để cấu hình thực hiện một phòng hội thoại “room” chúng ta lần lượt cấu
hình như sau:
* File /etc/asterisk/meetme.conf: tạo ra phòng hội thoại “room”
conf => 600 ; tạo phòng hội nghị 600
hoặc
conf => 600,12345; 600 là tên phòng , 12345 là mật khẩu đăng nhập
* File /etc/asterisk/extentions.conf: khai báo phòng hội thoại “room” trong kế
hoạch dialplan để cho mọi người có thể gọi đến. Sử dụng câu lệnh có cấu trúc như
sau:
Cú pháp:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 122 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

MeetMe([confno][,[options][,pin]])
Trong đó:
Confno con số của phòng hội thoại nếu thông số này không khai báo thì khi
đăng nhập hệ thống sẽ yêu cầu nhập vào.
Pin số mật khẩu đăng nhập.
Options là thông số lựa chọn không có hoặc có nhiều thông số kết hợp với
nhau để xác định một số chức năng hoạt động của phòng hội thoại, các chức năng
có thể liệt kê ra như sau:
'm' – Người tham gia hội thoại chỉ nghe không được nói chuyện.
't' – Người hội thoại chỉ nói không được nghe.
'i' – Phát thông báo có người kết nối hay rời khỏi hàng đợi.
'p' – Thuê bao có thể rời khỏi phòng hội thoại bằng cách nhấn phím #.
'X' – Thuê bao có thể thoát khỏi phòng hội thoại bằng cách nhập vào
extention hợp lệ tại ngữ cảnh ${MEETME_EXIT_CONTEXT }, nếu biến này không
được thiết lập thì sử dụng extention trong ngữ cảnh hiện tại.
'd' – Thêm động vào phòng hội thoại không cần thiết lập số Pin.
'D' – Thêm động vào phòng hội thoại phải cần thiết lập số Pin.
'e' – Chọn phòng hội thoại trống đầu tiên.
'E' – Chọn phòng hội thoại trống đầu tiên không cần số Pin.
'v' – Hội thoại với chế độ Video.
'r' – Nếu chức năng này được chọn thì cuộc đàm thoại trong phòng hội thoại
sẽ được thu âm với định dạng tập tin ${MEETME_RECORDINGFORMAT} và lưu
vào vị trí ${MEETME_RECORDINGFILE}.
'q' – Không phát âm thanh khi có thuê bao vào/rời khỏi phòng hội thoại.
'C' – Khi thuê bao vào phòng hội thoại sẽ được thông báo có bao nhiêu thuê
bao đang trong phòng.
'M' – Thiết lập thông số này để phát ra âm nhạc khi trong phòng hội thoại
chỉ có một người.
'x' – Đóng phòng hội thọai khi thuê bao “Chủ” đã thoát phòng hội thoại.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 123 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

'w' – Đợi cho đến khi thuê bao “Chủ” đến phòng hội thoại.
'b' – Chạy AGI script để thiết lập biến
{MEETME_AGI_BACKGROUND},script mặc định là conf-background.agi
's' – Vào menu (user and administrator) khi nhấn phím *.
'a' – Thiết lập chế độ Admin.
'A' – Thiết lập chế độ “Chủ” .
'P' – Luôn luôn hỏi số Pin ngay cả đã chỉ định trong đối số hàm ứng dụng
meetme().
Các Biến sử dụng trong hàm ứng dụng Meetme()
${MEETME_RECORDINGFILE} – Tập tin thu âm cuộc hội thoại ( option 'r'
).
${MEETME_RECORDINGFORMAT} – Định dạng tập tin thu âm(gsm, wav,
...).
${MEETME_EXIT_CONTEXT} – Ngữ cảnh thoát ra từ phòng hội thoại.
${MEETME_AGI_BACKGROUND} – AGI script .
${MEETMESECS} – Số giây thuê bao trong phòng hội thoại.
Dưới đây là nội dung file cấu hình với ngữ cảnh Meetme:
[Meetme]
exten => 999,1,Answer
exten => 999,2,Wait(1)
exten => 999,3,Authenticate(600)
exten => 999,4,MeetMe(600)
exten => 999,5,Playback(conf-thereare)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 124 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 125 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 126 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.27: Các bản tin khi thực hiện chức năng hội nghị
5.8.8 DND (Do not Disturb - Dịch vụ chống làm phiền )
Dịch vụ này có thể cho phép thuê bao không nhận tất cả các cuộc gọi đến khi
thuê bao kích hoạt dịch vụ, khi đó tất cả các cuộc gọi đến thuê bao sẽ được chuyển
đến voicemail. Để kích hoạt dịch vụ, thuê bao bấm số *113, nghe phát thông báo
“Bạn đã kích hoạt dịch vụ chống làm phiền”. Để hủy dịch vụ DND, thuê bao chỉ
cần bấm lại số *113, nghe phát thông báo “Bạn đã hủy dịch vụ chống làm phiền”.
Việc cấu hình chi tiết được thực hiện trong file etc/asterisk/extensions.conf
với ngữ cảnh DND.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 127 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

[DND]
;Dịch vụ đã kích hoạt?
exten => *113,1,gotoif($[${DB(dnd/${CALLERID(num)})} = 1]?dn1:dn)
;Kích hoạt dịch vụ
exten => *113,n(dn),set(DB(dnd/${CALLERID(num)})=1)
exten => *113,n,Answer
exten => *113,n,playback(dnd-o); phát lời gọi
exten => *113,n,playback(auth-thankyou)
exten => *113,n,Hangup;Hủy kết nối
exten => *113,n(dn1);Answer
exten => *113,n,set(DB(dnd/${CALLERID(num)})=0);Hủy dịch vụ
exten => *113,n,playback(dnd-no);phát lời gọi
exten => *113,n,playback(auth-thankyou)
exten => *113,n,Hangup
5.8.9 DISA (Direct Inward System Access)
Dịch vụ cho phép thuê bao ở ngoài có thể sử dụng các dịch vụ mà thuê bao
nội bộ trong mạng có thể có. Đây là một tính năng vượt trội của asterisk so với giá
thành của nó. Ví dụ như một người ở nhà và muốn làm việc với đối tác ở nước
ngoài, nhưng đây là công việc của công ty và anh ta muốn sử dụng đường line điện
thoại công ty để giao dịch. Đối với asterisk, sử dụng giải pháp DISA có thể giải
quyết vấn đề này một cách dễ dàng. Như vậy người này có thể sử dụng cuộc gọi
tính cước nội hạt đối với anh ta nhưng vẫn có thể gọi ra quốc tế.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 128 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.28: Mô hình thực hiện dịch vụ DISA


Ví dụ một người có số điện thoại ở nhà là 8991717, gọi đến công ty có 2 line
điện thoại đăng ký trên tổng đài PSTN có số là 8991768 và 8982525, giả sử người
đó gọi đến số 8991768 để sử dụng dịch vụ DISA, người đó sẽ thực hiện như sau:
- Thuê bao nghe lời chào từ tổng đài asterisk, bấm 000 để sử dụng dịch vụ
DISA, sau đó nhập mật khẩu để xác nhận.
- Nếu mật khẩu đúng, tổng đài sẽ phát âm mời gọi để thuê bao có thể thực
hiện cuộc gọi quốc tế hay liên tỉnh thông qua line còn lại có số là 8982525.
Như vậy người gọi đã sử dụng được dịch vụ DISA như mong muốn.
Việc cấu hình trong file /etc/asterisk/extensions.conf được thực hiện thông
qua ngữ cảnh custom-disa như sau:
[custom-disa]
exten => s,1,Answer
exten=> s,2,wait(2)
exten => s,3,Authenticate(700)
exten => s,4,DISA(no-password,out)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 129 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 130 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Hình 5.29:Các gói tin khi thực hiện dịch vụ DISA


5.8.10 Asterisk RealTime Architecture
Như chúng ta đã biết để cấu hình hệ thống Asterisk chúng ta thực hiện trên
các tập tin dạng text như sip.conf, iax.conf. extentions.conf... sau đó để tập tin cấu
hình có hiệu lực chúng ta cần phải phải thực hiện dòng lệnh CLI>reload
Một nhu cầu thực tế là khi cấu hình hệ thống asterisk, chẳng hạn như cho
người sử dụng khai báo một thuê bao online mà không cần phải reload lại hệ thống
asterisk thì thực hiện như thế nào.?
Thế là kiến trúc thời gian thực (Asterisk RealTime Architecture) ra đời nhằm
đáp ứng nhu cầu thực tế trên và tất nhiên còn nhiều điều thú vị nữa chúng ta hãy
cùng nhau khám phá.
Kiến trúc thời gian thực thay vì lưu tập tin cấu hình trên tập tin dạng text thì
được lưu vào database ví dụ như Mysql. Kiểu kiến trúc thời gian thực đáp ứng nhu
cầu user lớn vì không cần nạp tất cả user cùng một lúc ngay khi khởi động asterisk,
tiết kiệm chi phí tài nguyên hệ thống rất nhiều.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 131 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Asterisk không nạp danh sách các Sip peer/Sip User vào bộ nhớ. Khi có một
cuộc gọi tới( incoming call) một extension do Asterisk quản lý được Asterisk tìm
kiếm trong bảng( có chức năng tương tự SIP.conf) của Database đã được định
hướng trong file SIP.conf.
Asterisk sẽ nạp cả dòng (record) chứa extension vào bộ nhớ. Đồng thời tiếp
tục thực hiện hàm ứng dụng application đã được khai báo trong bảng chứa dialplan,
được định hướng trong file extension.conf và file sip.conf. Cuộc gọi được thiết lập.
Khi một trong 2 bên truyền thông phát ra lệnh hangup thì Asterisk sẽ phát tín
hiệu kết thúc kênh truyền thông giữa 2 thiết bị đầu cuối và xóa Record đã nạp vào
bộ nhớ. Như vậy, Asterisk tra cứu Extension theo kiểu thời gian thực trái với trước
kia là nó load tất cả các extension trong file sip.conf vào bộ nhớ.
Để thực hiện được dịch vụ này, ta phải tiến hành cài đặt và cấu hình
Asterisk-addons.1.4.x và Mysql server. Đây là dịch vụ cộng thêm không có sẵn
trong asterisk phải cài đặt thêm và chúng ta cần có một chương trình cơ sở dữ liệu
để lưu các dữ liệu đáp ứng thời gian thực của asterisk, ở đây chúng ta dùng mysql.
Các bước tiến hành cài đặt được tiến hành như sau:
Bước 1: download gói Asterisk-addons.1.4.x tại http://asterisk.org và untar
vào thư mục /usr/src
Để đảm bảo gói Addon được cài đặt đúng, ta thực hiện lệnh
#ln –s /usr/src/asterisk-1.4.x /usr/src/asterisk
Chuyển đường dẫn vào thư mục asterisk-addons1.4.x và tiến hành cài đặt
#cd /usr/src/asterisk-addons1.4.x
#make clean
#make install
Bước 2: kiểm tra xem đã cài đặt Mysql server chưa, nếu chưa thì tiến hành
download và cài đặt Mysql server và các thư viện kèm theo: libdbi-dbd-mysql,
mysql-connector-odbc-3.51.12-2.2, mysql-libs, mysql, mysql-server, mysql-devel
Bước 3: cấu hình các file trong thư mục asterisk:
* File /etc/asterisk/res_mysql.conf:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 132 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

[general]
dbhost = localhost
dbname = asterisk
dbuser = root
dbpass = 123
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock
* File /etc/asterisk/extconfig.conf:
sipusers => mysql, asterisk,sip_buddies
sippeers => mysql, asterisk,sip_buddies
extensions => mysql, asterisk,extensions
* File /etc/asterisk/sip.conf
[general]
rtcachefriends=yes
* File /etc/asterisk/extensions.conf
[default]
switch => Realtime/default@extensions
Bước 4: tạo database và các bản tương ứng:
- Khởi động mysql : /etc/rc.d/init.d/mysqld start
- SET lại password cho truy cập tới Mysql cho user root: SET PASSWORD
FOR root@localhost = ‘123’
- Đăng nhập vào mysql : mysql –u root –p 123
- Tạo cở sở dữ liệu mới : creat database asterisk; use asterisk;
- Tạo ra các bảng để chứa cơ sở dữ liệu : create tables Sip_buddies và
Iax_buddies
CREATE TABLE ` Sip_buddies ` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL default '',
`canreinvite` char(3) default 'yes',

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 133 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

`context` varchar(80) default NULL,


`dtmfmode` varchar(7) default NULL,
`host` varchar(31) NOT NULL default '',
`port` varchar(5) NOT NULL default '',
`secret` varchar(80) default NULL,
`type` varchar(6) NOT NULL default 'friend',
`username` varchar(80) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC;

CREATE TABLE ` Iax_buddies ` (


`id` int(11) NOT NULL auto_increment,
`name` varchar(80) NOT NULL default '',
`canreinvite` char(3) default 'yes',
`context` varchar(80) default NULL,
`dtmfmode` varchar(7) default NULL,
`host` varchar(31) NOT NULL default '',
`port` varchar(5) NOT NULL default '',
`secret` varchar(80) default NULL,
`type` varchar(6) NOT NULL default 'friend',
`username` varchar(80) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `name_2` (`name`)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC;

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 134 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Bước 5: ta có thể tạo được user thông qua database của asterisk bằng cách
thêm dữ liệu vào table Sip_buddies và Iax_buddies
INSERT INTO Sip_buddies (
name,canreinvite,context,dtmfmode,host,port,type,username,secret)
VALUES ('105','no','default','rfc2833','dynamic','yes',’friend’, '105','105');

INSERT INTO Iax_buddies (


name,canreinvite,context,dtmfmode,host,port,type,username,secret)
VALUES ('305','no','default','rfc2833','dynamic','yes',’friend’, '305','305');
Bước 6: kiểm tra user vừa tạo bằng lệnh select table

| id | name | canreinvite | context | dtmfmode | host | port | secret | type | username |


+----+------+------------+---------+----------+---------+------+--------+-------+---------
+
|1 | 105 | no | default | rfc2833 | dynamic | yes | 105 | friend | 105
|
| 1 | 305 | no | default | rfc2833 | dynamic | yes | 305 | friend | 305 |
+----+------+------------+---------+----------+---------+------+--------+------------------
+
Như vậy ta đã tạo được thuê bao 105 và 305 mà không cần cấu hình trong
các file asterisk và cũng không cần reload lại hệ thống
5.8.11 CDR (Call Detail Record)
Asterisk hỗ trợ việc lưu trữ các thông tin cuộc gọi trong cơ sở dữ liệu để tiện
việc tra cứu . Cũng như ta có thể so sánh các thông tin này với hóa đơn hàng tháng
của công ty điện thoại gởi cho ta . Nó cho phép ta phân tích lưu lượng thoại trong
công ty , tìm ra 10 số phone thường gọi nhất , xem thời gian của các cuộc gọi , so
sánh với thời gian trung bình trong các cuộc gọi . Nhờ vậy, ta hoàn toàn có thể phát
hiện được việc liệu nhân viên công ty có sử dụng điện thoại một cách hoang phí
trong giờ làm việc hay không . Việc sử dụng CDR có thể sử dụng database Mysql

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 135 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

để lưu các nhật ký cuộc gọi. Việc cài đặt và cấu hình CDR được cấu hình theo các
bước sau:
Bước 1: cấu hình trong file /etc/asterisk/cdr_mysql.conf
[global]
hostname=localhost
dbname=asterisk
password=123
passworduser=asterisklog
uniqueid=yes
Bước 2: tạo bảng `table cdr` lưu trữ database chi tiết cuộc gọi ở mysql và
reload lại asterisk:
CREATE TABLE `cdr` (
`id` int(11) NOT NULL auto_increment,
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
PRIMARY KEY (`id`);

ALTER TABLE `cdr` ADD INDEX ( `calldate` );


ALTER TABLE `cdr` ADD INDEX ( `dst` );
ALTER TABLE `cdr` ADD INDEX ( `accountcode` );
Bước 3: Sử dụng ngôn ngữ lập trình PHP tạo giao diện web kết nối với
database asterisk để truy xuất dữ liệu. Tạo một file asterisk.php ở
/usr/local/apache2/htdocs. Đoạn code thực hiện như sau:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 136 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

<?php
echo"<image src='http://192.168.1.3/asterisk.gif '>";
?>
<html>
<head>
<title>Asterisk with CDR</title>
<style>

.title {
FONT-WEIGHT: bold;
FONT-SIZE: 30px;
COLOR: #003063;
}

</style>
</head>
<body>

<TABLE cellSpacing=0 cellPadding=0


width="100%" border=0>
<TR>
<TD vAlign=top class=title align=center>
*** CHI TIẾT CUỘC GỌI *** </TD>
</TR>
</table>

<?
$dbuser = 'root';
$dbhost = 'localhost';

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 137 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

$dbpass = '123';
$dbname = 'asterisk';
$dbtable = 'cdr';
$mysql_link = mysql_connect('localhost','root','123');
$column = mysql_list_fields($dbname, $dbtable, $mysql_link);
$sql = "SELECT * FROM $dbtable";
$result = mysql_db_query($dbname,$sql);
?>

<table border=1 cellSpacing=0 cellPading=0 width="100%" COLOR: #003063 >


<th>STT </th> <th> Ngày-giờ gọi </th> <th> Nguồn </th> <th> Đích </th>
<th> Ngữ cảnh</th> <th> Ứng dụng </th> <th> Thực hiện </th> <th>Tổng thời
gian </th> <th> Thời gian gọi</th> <th> Trạng thái</th>
<? while($value = mysql_fetch_array($result)) {
print "<tr>";
for ($i=0; $i<mysql_num_fields($column); $i++)
{
if (empty($value[$i])) {print "<td align=center> NULL </td>";}
else {print "<td align=center> $value[$i] </td>";}}
print "</tr>";
}
mysql_free_result($result);
mysql_close();
?>
</TABLE>
<TR><TD><hr size=1 color=red></TD</TR>

<TABLE cellSpacing=0 cellPadding=0


width="100%" border=0>

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 138 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

<TR>
<TD Color = red vAlign=top align=center>
Thực hiện: Nguyễn Thanh Hiếu-Nguyễn Thanh Phước</color=redTD>
</TR>
</table>

</body>
</html>
Để có thể hiển thị giao diện web thì bắt buộc asterisk server phải cài Apache
để có thể truy cập và hiển thị trang web từ asterisk server.

Hình 5.30: Giao diện web chi tiết cuộc gọi


5.9 Dial Plan-Liên kết các dịch vụ
Vừa rồi chúng ta đã xây dựng các dịch vụ riêng rẽ, vấn đề cần đặt ra là phải
liên kết các dịch vụ trong hệ thống và tạo các ngữ cảnh cho các thuê bao nội bộ
trong việc gọi đến và đi ứng với mỗi thuê bao. Trong hệ thống sẽ tạo các dial plan
chính ứng với 3 loại điện thoại được sử dụng trong hệ thống đó là: analogphone

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 139 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

tham gia vào mạng IP, điện thoại sử dụng giao thức SIP và điện thoại sử dụng giao
thức IAX.
Trước hết cần tạo ra ngữ cảnh gọi đến đối với thuê bao nội bộ, vì các thuê
bao nội bộ không chỉ đơn thuần sử dụng chuyển mạch thông thường mà còn tích
hợp các dịch vụ, do vậy việc cấu hình phải kết hợp kèm các dịch vụ. Giả sử khi có
một số gọi đến thuê bao nội bộ nào đó, trước hết chúng ta cần xét xem thuê bao đó
có kích hoạt dịch vụ DND hay không?Kế đến chúng ta phải xét xem thuê bao có
kích hoạt chuyển cuộc gọi hay không, nếu có thì phải thực hiện dịch vụ, nếu không
thì thực hiện chuyển mạch bình thường. Bởi vì mỗi thuê bao sử dụng giao thức khác
nhau thì việc cấu hình đôi khi có sự khác biệt. Vì vậy ở đây chúng ta sẽ tạo ra 3 ngữ
cảnh: [local_IAX] - ứng với ngữ cảnh gọi đến đối với điện thoại sử dụng giao thức
IAX, [local_SIP]- ứng với ngữ cảnh gọi đến đối với điện thoại sử dụng giao thức
SIP, [local_analog] - ứng với ngữ cảnh gọi đến đối với điện thoại analog. Việc cấu
hình trong file /etc/asterisk/extensions.conf được thực hiện như sau:
[local_IAX]
exten => _3xx,1,Set(COUNT1=${EXTEN})
exten => _3xx,n,gotoif($[${DB(dnd/${EXTEN})} = 1]?NBSY1:N1)
exten => _3xx,n(N1),set(GROUP()=${CALLERID(num)})
exten => _3xx,n,Set(GROUP()=${EXTEN})
exten => _3xx,n,NoOP(Group count is ${GROUP_COUNT()}, group is
${GROUP()}, exten is ${EXTEN})
exten => _3xx,n,GotoIf($[${GROUP_COUNT()} > 1]?BSY:NBSY)
exten => _3xx,n(NBSY),Set(TEMP=${DB(CFIM/${COUNT1})})
exten => _3xx,n,GotoIf(${TEMP}?IM:NIM)
exten => _3xx,n(IM),GotoIf($[${TEMP} < 201]?CS2:IM2)
exten => _3xx,n(IM2),GotoIf($[${TEMP} < 401 ]?CS1:CS3)
exten =>_3xx,n(CS1),Dial(IAX2/${TEMP}/@${TEMP},20,tT) ; Chuyển tức thời
exten => _3xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _3xx,n(CS2),Dial(SIP/${TEMP},20,tT)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 140 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => _3xx,n,Goto(exithandling,s-${DIALSTATUS},1)


exten => _3xx,n(CS3),goto(out,${TEMP},1)
exten => _3xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _3xx,n(NIM),NoOp("Khong chuyen tuc thoi, thuc hien binh thuong")
exten => _3xx,n,Dial(IAX2/${EXTEN},3,rtT) ;
exten => _3xx,n,Goto(exithandling,s-${DIALSTATUS},1) ;
exten => _3xx,n(BSY),goto(exithandling,s-BUSY,1)
exten => _3xx,n(NBSY1),goto(exithandling1,s-BUSY,1)

[local_analog]
exten => _1xx,1,Set(COUNT1=${EXTEN})
exten => _1xx,n,set(GROUP()=${CALLERID(num)})
exten => _1xx,n,gotoif($[${DB(dnd/${EXTEN})} = 1]?NBSY2:N2)
exten => _1xx,n(N2),NoOP(Group count is ${GROUP_COUNT()}, group is
${GROUP()}, exten is ${EXTEN})
exten => _1xx,n,Set(TEMP=${DB(CFIM/${COUNT1})})
exten => _1xx,n,GotoIf(${TEMP}?IM1:NIM1)
exten => _1xx,n(IM1),GotoIf($[${TEMP} < 201]?CS2:IM2)
exten => _1xx,n(IM2),GotoIf($[${TEMP} < 401 ]?CS1:CS3)
exten => _1xx,n(CS1),Dial(IAX2/${TEMP}/@${TEMP},20,tT) ; Chuyển tức thời
exten => _1xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _1xx,n(CS2),Dial(SIP/${TEMP},20,tT)
exten => _1xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _1xx,n(CS3),goto(out,${TEMP},1)
exten => _1xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _1xx,n(NIM1),NoOp("Khong chuyen tuc thoi, thuc hien binh thuong")
exten => _1xx,n,Dial(SIP/${EXTEN},20,rtT) ;
exten => _1xx,n,Goto(exithandling,s-${DIALSTATUS},1) ;
exten => _1xx,n(NBSY2),goto(exithandling1,s-BUSY,1)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 141 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

[local_SIP]
exten => _2xx,1,Set(COUNT1=${EXTEN})
exten => _2xx,n,set(GROUP()=${CALLERID(num)})
exten => _2xx,n,gotoif($[${DB(dnd/${EXTEN})} = 1]?NBSY2:N2)
exten => _2xx,n(N2),NoOP(Group count is ${GROUP_COUNT()}, group is
${GROUP()}, exten is ${EXTEN})
exten => _2xx,n,Set(TEMP=${DB(CFIM/${COUNT1})})
exten => _2xx,n,GotoIf(${TEMP}?IM1:NIM1)
exten => _2xx,n(IM1),GotoIf($[${TEMP} < 201]?CS2:IM2)
exten => _2xx,n(IM2),GotoIf($[${TEMP} < 401 ]?CS1:CS3)
exten => _2xx,n(CS1),Dial(IAX2/${TEMP}/@${TEMP},20,tT) ; Chuyển tức thời
exten => _2xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _2xx,n(CS2),Dial(SIP/${TEMP},20,tT)
exten => _2xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _2xx,n(CS3),goto(out,${TEMP},1)
exten => _2xx,n,Goto(exithandling,s-${DIALSTATUS},1)
exten => _2xx,n(NIM1),NoOp("Khong chuyen tuc thoi, thuc hien binh thuong")
exten => _2xx,n,Dial(SIP/${EXTEN},3,rtT) ;
exten => _2xx,n,Goto(exithandling,s-${DIALSTATUS},1) ;
exten => _2xx,n(NBSY2),goto(exithandling1,s-BUSY,1)
[exithandling]
; this is just my exit handler. the important thing is in queue-to-agent context
exten => s-NOANSWER,1,NoOP(There was no answer to call from
${CALLERID(num)})
exten => s-NOANSWER,n,Set(TEMP=${DB(CFAS/${COUNT1})})
exten => s-NOANSWER,n,GotoIf(${TEMP}?AS:NAS)
exten => s-NOANSWER,n(AS),gotoIf($[${TEMP} < 201]?CS2:IM2)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 142 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => s-NOANSWER,n(IM2),GotoIf($[${TEMP} < 401 ]?CS1:CS3)


exten => s-NOANSWER,n(CS1),Dial(IAX2/${TEMP}/@${TEMP},30,tT) ; Chuyển
tức thời)
exten => s-NOANSWER,n,Goto(exithandling1,s-${DIALSTATUS},1)
exten => s-NOANSWER,n(CS2),Dial(SIP/${TEMP},30,tT)
exten => s-NOANSWER,n,Goto(exithandling1,s-${DIALSTATUS},1)
exten => s-NOANSWER,n(CS3),goto(out,${TEMP},1)
exten => s-NOANSWER,n,Goto(exithandling1,s-${DIALSTATUS},1)
exten => s-NOANSWER,n(NAS),VoiceMail(${COUNT1}@default)
exten =>s-NOANSWER,n,playback(vm-goodbye)
exten => s-NOANSWER,n,Wait(2)
exten => s-NOANSWER,n,Hangup()

exten => s-BUSY,1,NoOP(There was no answer to call from ${CALLERID(num)})


exten => s-BUSY,n,Set(TEMP=${DB(CFBS/${COUNT1})})
exten => s-BUSY,n,GotoIf(${TEMP}?BS2:NBS2)
exten => s-BUSY,n(BS2),gotoIf($[${TEMP} < 201]?CS2:IM2);Chuyển khi không
trả lời
exten => s-BUSY,n(IM2),GotoIf($[${TEMP} <401 ]?CS1:CS3)
exten => s-BUSY,n(CS1),Dial(IAX2/${TEMP}/@${TEMP},30,tT) ; Chuyển tức
thời)
exten => s-BUSY,n,Goto(exithandling1,s-${DIALSTATUS},1)
exten => s-BUSY,n(CS2),Dial(SIP/${TEMP},30,tT)
exten => s-BUSY,n,Goto(exithandling1,s-${DIALSTATUS},1)
exten => s-BUSY,n(CS3),goto(out,${TEMP},1)
exten => s-BUSY,n,Goto(exithandling1,s-${DIALSTATUS},1)
exten => s-BUSY,n(NBS2),VoiceMail(${COUNT1}@default)
exten => s-BUSY,n,playback(vm-goodbye)
exten => s-BUSY,n,Wait(2)

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 143 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => s-BUSY,n,Hangup()

exten => s-CHANUNAVAIL,1,NoOP(Channel navailable, call from


${CALLERID(num)})
exten => s-CHANUNAVAIL,2,goto(exithandling,s-BUSY,1)

exten => s-CONGESTION,1,NoOP(Congestion, call from ${CALLERID(num)})


exten => s-CONGESTION,2,Hangup

exten => s-ANSWER,1,NoOP(Answered and completed call from


${CALLERID(num)})
exten => s-ANSWER,2,Hangup

[exithandling1]
; this is just my exit handler. the important thing is in queue-to-agent context
exten => s-NOANSWER,1,NoOP(There was no answer to call from
${CALLERID(num)})
exten => s-NOANSWER,n(NAS),VoiceMail(${COUNT1}@default)
exten => s-NOANSWER,n,playback(vm-goodbye)
exten => s-NOANSWER,n,Wait(2)
exten => s-NOANSWER,n,Hangup()
exten => s-BUSY,1,NoOP(Extension busy, call from ${CALLERID(num)})
exten => s-BUSY,n(NBS2),VoiceMail(${COUNT1}@default)
exten => s-BUSY,n,playback(vm-goodbye)
exten => s-BUSY,n,Wait(2)
exten => s-BUSY,n,Hangup()

exten => s-CHANUNAVAIL,1,NoOP(Channel navailable, call from


${CALLERID(num)})

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 144 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

exten => s-CHANUNAVAIL,2,goto(exithandling,s-BUSY,1)

exten => s-ANSWER,1,NoOP(Answered and completed call from


${CALLERID(num)})
exten => s-ANSWER,2,Hangup

Kế đến, chúng ta phải xây dựng ngữ cảnh gọi đi cho các thuê bao, tùy vào ý
tưởng và nhu cầu của thuê bao mà người quản trị cho phép thuê bao sử dụng dịch
vụ nào. Ví dụ, thuê bao này có thể sử dụng dịch vụ DND nhưng thuê bao khác lại
không, tất cả đều có thể thực hiện trong dial plan. Ở trong hệ thống này giả sử các
thuê bao đều sử dụng tất cả các dịch vụ được xây dựng. Ta giả sử trong hệ thống
thuê bao 200 và 300 đều có thể gọi ra ngoài bằng 2 line PSTN còn thuê bao 100 chỉ
được phép sử dụng line X100P của hệ thống. Tất cả các thuê bao đều có thể gọi ra
ngoài internet do nhà cung cấp dịch vụ VoIP cung cấp. Tạo ra hai ngữ cảnh [out] và
[out1] tương ứng với ý tưởng trên. Việc cấu hình trong file
/etc/asterisk/extensions.conf được thực hiện như sau:
[out]
exten => _8.,1,Dial(SIP/${EXTEN:1}@mysipprovider,30,rtT)
exten => _9.,1,SET(COUNT1=${EXTEN})
exten => _9.,n,Dial(SIP/${EXTEN:1}@9,20)
exten => _9.,n,Goto(s-${DIALSTATUS\,1)
exten => s-NOANSWER,1,Hangup()
exten => s-BUSY,1,Dial(Zap/1/${COUNT1:1})
exten => s-CHANUNAVAIL,1,Noop(No Answer)
exten =>s-CHANUNAVAIL,2,hangup()
include=>parkedcalls
include=>DND
include=>Parked
include=>Meetme
include=>pickup

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 145 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

include=>mailbox
include=>F_INM
include=>F-BSY
include=>F-NSWR
include=>local_analog
include=>local_IAX
include=>local_SIP

[out1]
exten => _8.,1,Dial(SIP/${EXTEN:1}@mysipprovider,30,rtT)
exten => _9.,1,Dial(Zap/1/${EXTEN:1})
include=>parkedcalls
include=>DND
include=>Parked
include=>Meetme
include=>pickup
include=>mailbox
include=>F_INM
include=>F-BSY
include=>F-NSWR
include=>local_analog
include=>local_IAX
include=>local_SIP

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 146 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

KẾT LUẬN
Sau một thời gian nghiên cứu và thực hiện, phần lý thuyết cũng như việc cấu
hình các dịch vụ của tổng đài mềm Asterisk được chúng em thực hiện khá đầy đủ và
chi tiết. Cụ thể:

* Phần lý thuyết:

- Tìm hiểu tổng quan về công nghệ VoIP

- Tìm hiểu hệ thống asterisk, cách cài đặt và cấu hình và các dịch vụ liên
quan.

* Phần thực hiện:

- Thực hiện mô hình ứng dụng thực tế: cuộc gọi trong nội mạng và cuộc gọi
ra ngoài PSTN và ngược lại.

- Cấu hình hầu hết các dịch vụ mà một tổng đài IP hiện đại có sẵn như:
IVR, voicemail, fordward, transfer, conference, call pickup, call parking,
DISA, do not disturb, Asterisk realtime architecture, Call detail record.
* Khả năng ứng dụng của đề tài: cung cấp ứng dụng cho các công ty vừa
và nhỏ là rất lớn

* Hạn chế: do hạn chế về thiết bị cũng như thời gian chuẩn bị nên trong mô
hình thực hiện đôi lúc xảy ra các sự cố sau:

- Đôi khi xảy ra trễ giữa đầu cuối với đầu cuối

- Việc ngắt kết nối với PSTN đôi lúc gặp trục trặc do chức năng của
gateway.

* Hướng phát triển đề tài: nghiên cứu phát triển và thực hiện các mô hình
đa site. Xây dựng dịch vụ tính cước cho doanh nghiệp. Đây là mô hình sử dụng
nhiều trong thực tế đối với các công ty lớn có nhiều chi nhánh.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 147 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

TÀI LIỆU THAM KHẢO

Tiếng Việt:
1. Công nghệ VoIP và các giải pháp nâng cao chất lượng dịch vụ - NXB Bưu
điện.
2. Công nghệ thoại IP và ứng dụng trên mạng viễn thông Việt Nam – Tổng Cục
Bưu Điện Việt Nam
Tiếng Anh:
1. O'Reilly - Asterisk The Future Of Telephony 2005Voice over IP
Fundamentals (2nd Edition), Cisco Press, 2006
2. IP Telephony (2nd Edition), Cisco Press, 2006
3. Packt Publishing.Building.Telephony.Systems.with.Asterisk.2006
4. VoIP for Dummies by Timothy Kelly
Một số trang web tham khảo:
http://www.asteriskguru.com/tutorials/asterisk_voip_ipphone.html
http://my.opera.com/asteriskvn/blog/index.dml
http://www.voip-info.org/wiki-Asterisk+config+files

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 148 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

PHỤ LỤC
PHỤ LỤC 1: CÀI ĐẶT FEDORA CORE 5
Thực hiện khởi động từ đĩa cài Fedora Core 5, giao diện cài đặt sẽ như hình dưới:

Có thể mất một vài phút để kiểm tra đĩa cài Fedora Core 5. Chọn “Skip” để
bỏ qua việc kiểm tra này.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 149 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Màn hình chào của Fedora Core 5 xuất hiện, nhấn “Next” để tiếp tục cài đặt.

Chọn ngôn ngữ cài đặt:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 150 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Chọn chuẩn bàn phím, nên chọn là “English”

Nếu cài đặt Fedora trên một máy tính mới, chưa cài bất cứ hệ điều hành nào
khác thì sẽ chọn “yes” để format toàn bộ ổ cứng và cài duy nhất hệ điều hành
Fedora Core 5 nên máy tính.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 151 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Tiếp tục sẽ là quá trình lập các phân vùng dành cho việc cài đặt Fedora Core 5.

Tiếp đến là quá trình cài đặt địa chỉ IP, chấp nhận lựa chọn mặc định , nhấn “Next”
để tiếp tục:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 152 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Chọn múi giờ

Thiết lập mật khẩu gốc cho Fedora Core 5

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 153 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Tiếp theo là bước chọn các gói để cài, chọn những gói cần thiết tuỳ vào mục
đích sử dụng, ở đây để có thể cài đặt máy tính trở thành Asterisk Server, ta nên
chọn 2 lựa chọn là “Web Server” và “Software Development”.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 154 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Nhấn “Next” để bắt đầu quá trình cài đặt

Quá trình cài đặt bắt đầu

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 155 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Quá trình cài đặt kết thúc, khởi động lại hệ thống để hoàn tất việc cài đặt.

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 156 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 157 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

PHỤ LỤC 2: MỘT SỐ CÂU LỆNH SỬ DỤNG TRONG MYSQL VÀ PHP


Mysql:
SET PASSWORD FOR: Tạo mật khẩu đăng nhập
CREATE DATABASE: Tạo cơ sở dữ liệu
USE: Sử dụng cơ sở dữ liệu
SELECT * FROM: Hiển thị bảng dữ liệu
CREATE TABLE: Tạo bảng
INSERT INTO: Đưa dữ liệu vào bảng
;: Kết thúc câu lệnh
Php:
Echo: xuất dữ liệu
<head> </head>: Soạn tiêu đề đầu trang web
<tile> </tile>: ghi dòng chữ tiêu đề
<style> </style>: tạo kiểu chữ cho trang web
<body> </body>: Soạn phần nội dung cho trang web
<table> </table>: Tạo bảng
<TD> </TD>: Tạo tiêu đề cho bảng
<TR> </TR>: Tạo dòng cho bảng
<? ?>: Mở đầu và kết thúc một chương trình con
While, for: Câu lệnh điều kiện
If..else: Câu lệnh rẽ nhánh
$: Tạo biến
Print: xuất dữ liệu
mysql_db_query(): Truy vấn cơ sở dữ liệu từ Mysql

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 158 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

PHỤ LỤC 3: HƯỚNG DẪN SỬ DỤNG PHẦN MỀM BẮT GÓI ETHEREAL

Download phần mềm Ethereal hoặc phiên bản mới hơn được chuyển tên
thành Wireshark và tiến hành cài đặt. Sau khi cài xong ta có giao diện Ethereal như
hình bên dưới. Để tiến hành bắt gói ta vào giao diện Interface trên menu Capture:

Chọn card mạng cần capture gói tin:

Quá trình bắt gói được thực hiện:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 159 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Thực hiện việc lọc gói để xem cách thức hoạt động của cuộc gọi VoIP thông
qua chức năng VoIP Calls ở menu Statistics:

Các cuộc gọi mà ta đã capture được:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 160 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

Dùng chức năng Graph để tiến hành phân tích các bản tin trong cuộc gọi
VoIP:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 161 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

PHỤ LỤC 4: CÁC THUẬT NGỮ VIẾT TẮT:


A:
ACD: Automatic Call Distribution
API: Application Program Interface
AstDB: Asterisk Database
ATA: Analog Telephone Adaptors
C:
CDR: Call Detail Record
D:
DISA: Direct Inward System Access
DND: Do Not Disturb
DTMF: Dual Tone Multi Frequency
F:
FXO: Foreign Exchange Office
FXS: Foreign Exchange Station
I:
IAX: Inter Asterisk eXchange
ICMP: Internet Control Message Protocol
IETF: Internet Engineering Task Force
IP: Internet Protocol
ISDN: Intergrated Services Digital Network
ITU-T: International Telecommunications Union Telecommunication
IVR: Interactive voice response
L:
LAN: Local Area Network
M:
MCU: Multiple Control Unit
MGCP: Media Gateway Control Protocol
N:

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 162 -
ĐỒ ÁN TỐT NGHIỆP TỔNG ĐÀI IP

NAT: Network address translator


O:
OSI: Opening System Interconnection
P:
PBX: Private Branch eXchange
PCM: Pulse Code Modulation
PSTN: Public Switched Telephone Network
Q:
QoS: Quality of Service
R:
RAS: Remote Access Services
RSA: Rehabilitation Services Administration
RSVP: Resource Reservation Protocol
RTP: Real Time Protocol
RTCP: Real-time Transport Control Protocol
S:
SCN : Switched Circuit Network
SIP: Session initation protocol
T:
TCP: Transport Control Protocol
TDM: Time Division Multiplexing
U:
UAC: User Agent Client
UAS: User Agent Server
UDP: User Data Protocol
V:
VoIP: Voice over Internet Protocol
W:
WAN: Wide Area Network

SVTH: NGUYỂN THANH HIẾU GVHD: Ths. PHẠM THỊ XUÂN PHƯƠNG
NGUYỄN THANH PHƯỚC - 163 -

You might also like