Tải bản đầy đủ (.doc) (104 trang)

Xây dựng hệ thống phục vụ tự động Asterisk tích hợp công nghệ Voice XML

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.07 MB, 104 trang )

-- i --

LỜI CÁM ƠN

Lời đầu tiên tôi xin cám ơn chân thành và sâu sắc đến Thầy TS. PHAN THÀNH
CÔNG đã dành rất nhiều thời gian hướng dẫn tôi một cách tận tâm và sâu sát để
giúp tôi hoàn thành tốt luận văn này.
Xin gởi lời cám ơn đến Thầy TS. TÔ TUẤN đã có những góp ý hết sức tận tâm và
quý báu cho bản luận văn này.
Tiếp theo tôi xin gởi lời cám ơn chân thành đến quý Thầy Cô Trường Đại Học
Công Nghệ Thông Tin đã truyền đạt những kiến thức quý báu cho tôi trong suốt
quá trình học tập tại trường.
Xin cám ơn các bạn học và các đồng nghiệp đã có những góp ý và động viên trong
suốt thời gian qua.
Cuối cùng xin cám ơn Gia Đình, Ba-Mẹ đã động viên tôi vượt qua mọi khó khăn
và trở ngại để hoàn thành tốt luận văn này.


-- ii --

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
....................................................................................................
...........................................................................................................................
................................................................................................. .........................
.....................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................


..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................


-- iii --

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 1
....................................................................................................
...........................................................................................................................
................................................................................................. .........................
.....................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................

..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................


-- iv --

NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 2
....................................................................................................
...........................................................................................................................
................................................................................................. .........................
.....................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................

..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................
..............................................................................................................


-- 1 --

MỤC LỤC
MỤC LỤC........................................................................................................................... 1
DANH MỤC CÁC TỪ VIẾT TẮT......................................................................................... 4
DANH MỤC CÁC HÌNH...................................................................................................... 5
MỞ ĐẦU............................................................................................................................. 1
CHƯƠNG 1: TỔNG QUAN................................................................................................ 2
0.1 Giới thiệu.................................................................................................................. 2
0.1.1 Các hệ thống ứng dụng tương tác với người dùng truyền thống.................2

0.1.2 Xu thế hội tụ của các công nghệ.....................................................................2
0.2 Mục tiêu nghiên cứu của luận văn..........................................................................3
0.3 Giới thiệu các chương mục của luận văn..............................................................4
1. CHƯƠNG 2: KIẾN TRÚC VÀ CƠ CHẾ HOẠT ĐỘNG CỦA ASTERISK........................5
1.1 Tổng quan về Asterisk............................................................................................. 5
1.1.1 Giới thiệu chung về Asterisk............................................................................5
1.1.2 Các chức năng chính........................................................................................6
1.1.2.1 Hộp thư thoại (Voicemail).............................................................................................6
1.1.2.2 Chuyển cuộc gọi (Call Forwarding)..............................................................................7
1.1.2.3 Hiển thị số gọi (Caller ID).............................................................................................7
1.1.2.4 Tương tác thoại (IVR)...................................................................................................7
1.1.2.5 Chức năng Meet me conference....................................................................................8
1.1.2.6 Chức năng Follow me....................................................................................................8
1.1.2.7 Hỗ trợ kênh kết nối ZAP...............................................................................................8
1.1.2.8 Time and Date................................................................................................................8
1.1.2.9 Call Parking...................................................................................................................9
1.1.2.10 Remote call pickup.....................................................................................................9
1.1.2.11 Privacy Manager.........................................................................................................9
1.1.2.12 Backlist.......................................................................................................................9
1.2 Kiến trúc và cơ chế hoạt động..............................................................................10
1.2.1 Phần lõi (core system)..................................................................................... 10
1.2.1.1 Thành phần chuyển mạch PBX (PBX switching).......................................................10
1.2.1.2 Thành phần khởi động ứng dụng (Application Launcher)..........................................11
1.2.1.3 Thành phần chuyển đổi codec (Codec Translator)......................................................11
1.2.1.4 Thành phần quản lý lịch biểu và I/O của hệ thống (Scheduler & I/O Manager).........11
1.2.1.5 Thành phần nạp động (Dynamic Module Loader)......................................................11
1.2.2 Các API nạp động (Loadable Module API)....................................................12
1.2.2.1 API dùng cho việc mã hóa và giải mã (Codec translator API)....................................12
1.2.2.2 API dùng cho các kênh kết nối (Asterisk Channel API).............................................12
1.2.2.3 API hỗ trợ cho việc định dạng file (Asterisk File Format API)..................................12

1.2.2.4 API hỗ trợ các ứng dụng bên ngoài (Asterisk Application API).................................12
1.3 Tổng quan về tương tác thoại (IVR)...................................................................... 13
1.3.1 Kế hoạch quay số (Dialplan)...........................................................................13
1.3.1.1 Ngữ cảnh (context)......................................................................................................14
1.3.1.2 Extension.....................................................................................................................14
1.3.1.3 Cơ chế bao hàm (include) của dialplan.......................................................................15


-- 2 -1.3.1.4 Lập trình với dialplan..................................................................................................16
1.3.2 Tương tác thoại (IVR)..................................................................................... 20
1.3.2.1 Cơ chế hoạt động của IVR...........................................................................................21
1.3.2.2 Chức năng của IVR.....................................................................................................21
1.3.2.3 Lợi ích của việc ứng dụng IVR...................................................................................22
1.3.2.4 Một ứng dụng IVR.......................................................................................................23
1.3.3 Giao diện cổng giao tiếp ứng dụng AGI (Asterisk Gateway Interface)........24
1.3.3.1 Cơ chế hoạt động của AGI..........................................................................................25
1.3.3.2 Khởi tạo ứng dụng AGI từ dialplan.............................................................................25
1.3.3.3 Các hàm gọi từ xa được hỗ trợ thông qua AGI...........................................................25
1.3.3.4 Một ứng dụng AGI......................................................................................................26
1.3.3.5 Giao diện cổng giao tiếp ứng dụng phân tán (FastAGI)..............................................28
1.4 Kết luận................................................................................................................... 29
2. CHƯƠNG 3: TỔNG QUAN VỀ NGÔN NGỮ VoiceXML..............................................31
2.1 Giới thiệu chung về VoiceXML.............................................................................. 31
2.2 Kiến trúc của một hệ thống ứng dụng trên nền VoiceXML.................................32
2.3 Cơ chế hoạt động của một hệ thống VoiceXML..................................................33
2.4 Cấu trúc và quá trình thực thi của tài liệu VoiceXML..........................................34
2.4.1 Giới thiệu chung.............................................................................................. 34
2.4.2 Quá trình thực thi của một tài liệu..................................................................34
2.4.3 Thực thi một ứng dụng đa tài liệu..................................................................36
2.4.4 Ứng dụng (Applications)................................................................................ 36

2.4.5 Các hội thoại cấp con (Sub-dialog)...............................................................36
2.5 Cấu trúc và ý nghĩa của các thành phần bên trong tài liệu VoiceXML...............37
2.5.1 Cấu trúc của một hội thoại (dialog)................................................................37
2.5.1.1 Thành phần form của tài liệu.......................................................................................37
2.5.1.2 Thành phần menu của tài liệu......................................................................................49
2.5.1.3 Các thành phần liên kết trong tài liệu..........................................................................51
2.5.2 Văn phạm và cơ chế nhập liệu cho người dùng...........................................52
2.5.3 Kịch bản (scripting) và các luồng điều khiển................................................56
2.5.3.1 Biến và biểu thức.........................................................................................................56
2.5.3.2 Điều khiển sự kiện.......................................................................................................57
2.5.3.3 Một số phần tử khác liên quan đến nội dung thực thi của tài liệu VXML .................58
2.6 Giải thuật phiên dịch các form trong tài liệu VoiceXML (FIA).............................60
2.6.1 Cơ chế phiên dịch đối với form......................................................................60
2.6.2 Mô tả cụ thể của giải thuật FIA......................................................................61
2.6.2.1 Giai đoạn khởi tạo (Initializing phase)........................................................................62
2.6.2.2 Giai đoạn lựa chọn và thu thập thông tin (Select phase và Collect phase) .................64
2.6.2.3 Giai đoạn xử lý chính (Process phase)........................................................................65
2.7 Kết luận .................................................................................................................. 69
3. CHƯƠNG 4: XÂY DỰNG HỆ PHỤC VỤ TỰ ĐỘNG TRÊN NỀN ASTERISK...............70
3.1 Giới thiệu................................................................................................................ 70
3.2 Kiến trúc chung của hệ thống...............................................................................71
3.2.1 Tổng đài Asterisk............................................................................................ 71
3.2.2 Trình duyệt tài liệu VoiceXML (VoiceXML browser)......................................72
3.2.3 Máy chủ ứng dụng (Application server).........................................................72
3.2.4 Trình chủ SATC ............................................................................................... 72
3.3 Hiện thực các module............................................................................................ 73
3.3.1 Trình chủ SATC (SATC Server).......................................................................73
3.3.2 Trình duyệt VoiceXML (VoiceXML browser)..................................................76



-- 3 -3.4 Cấu hình và cơ chế vận hành của hệ thống.........................................................79
3.4.1 Biên dịch và cài đặt ........................................................................................79
3.4.2 Cấu hình trên Asterisk..................................................................................... 79
3.4.3 Cơ chế vận hành của hệ thống.......................................................................81
3.5 Kết luận................................................................................................................... 83
4. CHƯƠNG 5: KẾT QUẢ THỰC NGHIỆM......................................................................84
4.1 Mô hình ứng dụng.................................................................................................. 84
4.2 Cấu hình và tổ chức dữ liệu của hệ thống...........................................................85
4.2.1 Định nghĩa kế hoạch quay số của hệ thống..................................................85
4.2.2 Tổ chức cơ sở dữ liệu thông tin người dùng của hệ thống........................86
4.2.3 Xây dựng tài liệu VoiceXML cho ứng dụng ..................................................86
4.2.4 Kịch bản hỗ trợ việc truy vấn cơ sở dữ liệu trên máy chủ ứng dụng.........88
4.3 Cơ chế hoạt động của hệ thống............................................................................ 89
4.4 Đánh giá kết quả đạt được.................................................................................... 90
4.5 Kết luận................................................................................................................... 91
5. CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN...................................................92
5.1 Kết luận................................................................................................................... 92
5.2 Hướng phát triển.................................................................................................... 93
TÀI LIỆU THAM KHẢO.................................................................................................... 94


-- 4 --

DANH MỤC CÁC TỪ VIẾT TẮT
ASR :

Automated Speech Recognition

IVR:


Interactive Voice Response

SSXML:

Speech Synthesis Markup Language

SRGP:

Speech Recognition Grammar Specification

GRXML: Grammar Recognition XML
VXML:

Voice Extension Markup Language

DTMF:

Dual Tone Multi Frequency

STT:

Speech-To-Text

TTS:

Text-To-Speech

SATC:

Simple ASCII Telephony Control


AMI:

Asterisk Manager Interface

AGI:

Asterisk Gateway Interface

FastAGI: Fast Asterisk Gateway Interface
IAX:

Internal Asterisk Exchange

TDM:

Time-division Multiplexing

FIA:

Form Interpretation Algorithm


-- 5 --

DANH MỤC CÁC HÌNH
Hình 2.1: Một mô hình ứng dụng thực tiễn của Asterisk
Hình 2.2: Kiến trúc cơ bản của một hệ thống Asterisk
Hình 3.1: Kiến trúc của một hệ thống ứng dụng VoiceXML
Hình 3.2: Một ứng dụng VoiceXML đa tài liệu

Hình 3.3: Cấu trúc chung của một form trong tài liệu VoiceXML
Hình 3.4: Mô hình tóm tắt của giải thuật FIA
Hình 3.5: Minh họa một form được xử lý bởi giải thuật FIA
Hình 3.10: Mô hình tóm tắt về hoạt động của văn phạm ngữ nghĩa
Hình 4.1: Kiến trúc của hệ phục vụ tự động trên nền Asterisk
Hình 4.2: Cấu trúc họat động của trình chủ SATC
Hình 4.3: Cấu trúc họat động của trình duyệtVoiceXML
Hình 5.1: Mô hình của một hệ phục vụ tự động cho ngân hàng


-- 1 --

MỞ ĐẦU
Ngày nay với sự phát triển vượt bậc của Internet, các nguồn thông tin khắp nơi trên
thế giới đều được chia sẻ với nhau thông qua mạng Internet toàn cầu. Với sự hỗ trợ
của công nghệ và Internet, các chia sẻ thông tin, các trao đổi kinh doanh và cả việc
mua bán cũng như các giao tác khác của việc kinh doanh cũng đều được thực hiện
trên môi trường trực tuyến (online).
Bên cạnh Internet thì viễn thông cũng được đánh giá là một lĩnh vực phát triển khá
mạnh mẽ trong những năm gần đây. Tuy nhiên với nhu cầu phát triển của các hệ
thống ứng dụng thông minh tương tác với nguời dùng như Call Center, Help line,
Tele marketing,… thì hệ thống viễn thông hiện tại không thể hỗ trợ hiệu quả. Một hệ
thống phục vụ thông minh và hiệu quả phải đảm bảo tối ưu về chi phí, tự động hóa về
hoạt động và ứng dụng các công nghệ hiện đại ngày nay như VoiceXML một ngôn
ngữ đánh dấu mở rộng cho việc phát triển các ứng dụng trong lĩnh vực viễn thông thế
hệ mạng tiếp theo (NGN).
Luận văn đã xây dựng và triển khai thành công mô hình ứng dụng phục vụ tự động
với VoiceXML trên nền tổng đài mã nguồn mở VoIP Asterisk. Mô hình ứng dụng này
cho phép người dùng triển khai các hệ thống phục vụ tự động ở các ngân hàng, trường
đại học, trung tâm hỗ trợ khách hàng…

Điểm nổi bật của mô hình ứng dụng này là phục vụ tự động, chi phí tối thiểu cho việc
triển khai (do xây dựng trên hệ thống mã nguồn mở) và quan trọng nhất là nó tạo nên
sự hội tụ của công nghệ viễn thông và Internet vốn đang phát triển rất mạnh hiện nay
trên thế giới.
Với những thành công đạt được thì luận văn cũng còn những hạn chế do yếu tố giới
hạn về thời gian. Những những tính năng khiếm khuyết của hệ thống sẽ được tiếp tục
nghiên cứu và phát triển trong thời gian tới để mô hình ứng dụng được xây dựng sẽ
hoàn thiện hơn.


-- 2 --

CHƯƠNG 1: TỔNG QUAN
0.1 Giới thiệu
0.1.1 Các hệ thống ứng dụng tương tác với người dùng truyền thống
Các hệ thống viễn thông vẫn không ngừng phát triển và được ứng dụng vào đời sống
của con người bởi tính tiện lợi cũng như hiệu quả mang lại của nó. Chúng sử dụng
một dạng thức giao tiếp mang tính chất tự nhiên đó là ngôn ngữ con người. Hơn thế
nữa, các hệ thống mạng điện thoại di động không dây làm cho việc truy cập đến các
mạng điện thoại dễ dàng và linh động hơn. Trong các hoạt động kinh doanh, người ta
đã sử dụng công nghệ IVR (Interactive Voice Response) trong việc tự động hóa một
phần việc phục vụ khách hàng . Tuy nhiên tất cả các ứng dụng phục vụ tự động được
xây dựng trên nền công nghệ truyền thống trên đều dựa vào tính chất tự nhiên. Điểm
giới hạn lớn nhất là những công nghệ này chỉ được xây dựng cho các ứng dụng
chuyên biệt sử dụng các ngôn ngữ lập trình cấp cao và rất khó trong việc tối ưu hóa
cũng như mở rộng.
0.1.2

Xu thế hội tụ của các công nghệ


Ngày nay với xu thế phát triển chung và khuynh hướng hội tụ của hai nền công nghệ
là Internet và viễn thông đã tạo ra thuận lợi lớn cho các nhà phát triển ứng dụng. Sự
hội tụ này sẽ tạo ra những ứng dụng đa dịch vụ và tận dụng được thế mạnh của cả hai
lĩnh vực nêu trên.
Xuất phát từ những giới hạn của các ứng dụng IVR truyền thống và xu hướng hội tụ
của các công nghệ tương lai, những tổ chức nghiên cứu và công ty lớn trong lĩnh vực
viễn thông như: W3C, IBM, Lucent, AT&T, Motorola… đã xây dựng một chuẩn
công nghệ chung cho các ứng dụng tương tác với người dùng đó là ngôn ngữ đánh
dấu mở rộng cho thoại VoiceXML. VoiceXML còn được gọi là ngôn ngữ siêu văn
bản của các ứng dụng viễn thông. Nó hỗ trợ xây dựng các ứng dụng tương tác với
người dùng dựa trên nền Internet kết hợp với các hệ thống viễn thông.


-- 3 --

Đặc biệt, với sự phát triển của các hệ thống chuyển mạch gói (packet switch) hiện nay
thì các hệ thống viễn thông truyền thống dần chuyển từ chuyển mạch kênh (circuit
switch) sang chuyển mạch gói. Các hệ thống chuyển mạch gói sẽ tận dụng được tối đa
việc phát triển các dịch vụ cho người dùng từ hai nền công nghệ Internet và viễn
thông. Một hệ thống tổng đài chuyển mạch gói mã nguồn mở nổi tiếng được nhiều
người dùng biết đến là Asterisk với những ưu điểm như: miễn phí (mã nguồn mở),
được xây dựng bởi cả một cộng đồng lớn trên thế giới, có đầy đủ những tính năng của
một hệ thống PBX, dễ nâng cấp và phát triển…
Thế nên việc triển khai VoiceXML trên tổng đài Asterisk sẽ đóng góp một phần quan
trọng trong việc tạo ra một mô hình ứng dụng hội tụ của hai công nghệ lớn là viễn
thông và Internet. Mô hình này sẽ cho phép hiện thực các hệ thống phục vụ tự động
dựa trên sự tương tác qua ngôn ngữ tự nhiên hay phím nhập với chi phí tối ưu . Thách
thức lớn nhất cho việc triển khai là sự am hiểu về công nghệ VoiceXML, kiến trúc
bên trong của hệ thống Asterisk và giải pháp tích hợp VoiceXML vào Asterisk.


0.2 Mục tiêu nghiên cứu của luận văn
Luận văn tập trung nghiên cứu về VoiceXML, kiến trúc bên trong của Asterisk cũng
như các giao diện hỗ trợ xây dựng ứng dụng của hệ thống này. Phần tiêu điểm quan
trọng nhất của nghiên cứu là xây dựng trình duyệt VoiceXML để tích hợp công nghệ
VoiceXML vào hệ thống Asterisk và tạo ra một mô hình ứng dụng phục vụ tự động
cho các hệ thống tương tác và trả lời tự động ở các ngân hàng (thông tin về tài khoản
của khách hàng), trường đại học (thông tin về điểm thi, lịch học, …), các trung tâm hỗ
trợ khách hàng…
Mô hình ứng dụng được xây dựng có những điểm ưu việt sau:
-

Cho phép truy cập thông tin được lưu trữ trên các Webserver cộng tác

-

Cho phép tận dụng các công cụ phát triển Web đã có để xây dựng các
ứng dụng IVR dựa trên VoiceXML mà không phải quan tâm đến IVR platform ở
mức thấp và các chi tiết truy cập cơ sở dữ liệu

-

Cho phép giảm thiểu chi phí đầu tư ban đầu, chi phí duy trì hoạt động
và nâng cấp hệ thống


-- 4 --

0.3 Giới thiệu các chương mục của luận văn
Phần trình bày của luận văn sẽ bao gồm các nội dung chính sau:
Chương 1: Tổng quan

Giới thiệu tổng quan về bối cảnh chọn đề tài, mục tiêu nghiên cứu và những đóng
góp của luận văn.
Chương 2: Kiến trúc và cơ chế hoạt động của Asterisk
Giới thiệu về kiến trúc bên trong của Asterisk ở góc độ lập trình. Tìm hiểu về các
chức năng cũng như khả năng hỗ trợ ứng xây dựng ứng dụng với IVR. Phần quan
trọng nhất là cơ chế hoạt động của giao diện hỗ trợ xây dựng ứng dụng của
Asterisk (AGI và FastAGI).
Chương 3: Tổng quan về VoiceXML
Giới thiệu tổng quan về ngôn ngữ đánh dấu mở rộng cho thoại VoiceXML. Phần
này sẽ giới thiệu đầy đủ về cấu trúc và ý nghĩa của các phần tử bên trong một tài
liệu VoiceXML. Giải thuật phiên dịch các form (FIA) bên trong tài liệu cũng
được trình bày kỹ ở phần này
Chương 4: Xây dựng hệ phục vụ tự động trên nền Astterisk
Xây dựng một mô hình ứng dụng phục vụ tự động thông qua việc tích hợp
VoiceXML vào hệ thống Asterisk. Phần chính yếu của hệ thống là trình duyệt tài
liệu VoiceXML. Trình duyệt này đóng vai trò quan trọng trong việc duyệt qua nội
dung của tài liệu VoiceXML dựa trên giải thuật phiên dịch các form (FIA) và
tương tác với Asterisk cũng như máy chủ ứng dụng để đáp ứng các yêu cầu của
người dùng.
Chương 5: Kết quả thực nghiệm
Giới thiệu một mô hình ứng dụng cụ thể của ứng dụng trong hệ thống phục vụ tự
động của ngân hàng và đánh giá kết quả đạt được.
Chương 6: Kết luận và hướng phát triển
Tổng kết những thành quả đạt được và hướng mở rộng phát triển trong tương lai
của nghiên cứu.


-- 5 --

1. CHƯƠNG 2: KIẾN TRÚC VÀ CƠ CHẾ HOẠT ĐỘNG CỦA

ASTERISK
1.1 Tổng quan về Asterisk
1.1.1 Giới thiệu chung về Asterisk
Mark Spencer đã cho ra đời một phần mềm mã nguồn mở Asterisk (năm 1999) thực
hiện chức năng của một tổng đài truyền thống (PBX) và được xem là một sự kiện làm
thay đổi lớn ngành công nghiệp viễn thông vốn đã từ lâu ở vị thế độc quyền [2].
Asterisk là hệ thống chuyển mạch mềm (soft switch), 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 cho phép kết nối đến hầu hết các mạng có sẵn
như IP, PSTN với nhau thông qua các chuẩn giao thức SIP, MGCP, H323 và đặc biệt
IAX (Inter-Asterisk eXchange), một giao thức riêng của Asterisk [1].
Asterisk thoạt đầu được phát triển trên nền x86 cho Linux, nhưng giờ đây nó cũng có
thể biên dịch và chạy trên OpenBSD, FreeBSD, Mac OS X và Microsoft Windows.

Hình 2.1: Một mô hình ứng dụng thực tiễn của Asterisk


-- 6 --

Hệ thống Asterisk được rất nhiều người dùng đón nhận với những ưu điểm:
-

Hỗ trợ VoIP, nên có thể tận dụng tối đa đường truyền Internet và có thể sử dụng
mọi lúc mọi nơi

-

Là phần mềm mã nguồn mở nên có thể nghiên cứu và phát triển theo mục đích
riêng


-

Chi phí cho việc triển khai, bảo trì củng như sử dụng là thấp rất nhiều lần so với
các hệ thống tổng đài truyền thống

Asterisk hoàn toàn có thể được ứng dụng thay thế cho các hệ thống truyền thống
như:
-

PBX (Private Branch eXchange)

-

IVR (Interactive Voice Response)

-

Conferencing Server

-

Calling Card Application

-

Predective Dialer

-

Call Queuring with Remote Agents


-

Remote office for existing PBX

-

Number Translation

1.1.2 Các chức năng chính
Asterisk hỗ trợ rất nhiều tính năng cho người dùng. Ngoài những tính năng cơ bản
của một PBX thuần túy Asterisk còn hỗ trợ một số tính năng sau:
1.1.2.1 Hộp thư thoại (Voicemail)
Cho phép hệ thống nhận các thông điệp tin nhắn ở dạng thoại của người dùng.
Khi một điện thoại đăng ký tính năng Voicemail thì mỗi khi có cuộc gọi đến mà máy
bận hay không nhấc máy, hệ thống sẽ định hướng trực tiếp các cuộc gọi đến hộp thư
thoại tương ứng.
Asterisk có khả năng lưu thư thoại và gửi chúng dưới dạng một file đính kèm đến một
địa chỉ email được chỉ định trước.


-- 7 --

Voicemail cung cấp cho người sử dụng nhiều tính năng lựa chọn như:
-

Lưu giữ các tin nhắn thoại (incoming voice message) trong các hộp thư đinh
nghĩa của người dùng

-


Xác nhận khi truy cập vào hộp thư thoại bằng mật mã

-

Gửi mail báo khi có thông điệp Voicemail mới

-

Chuyển và nhận tin nhắn từ một hộp thư thoại khác

1.1.2.2 Chuyển cuộc gọi (Call Forwarding)
Chức năng này 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.
1.1.2.3 Hiển thị số gọi (Caller ID)
Chức năng này cho phép xác định thông tin của số thuê bao gọi đến. Thông tin này có
thể bao gồm số và tên của số gọi đến. Tính năng này rất hữu ích, nó cho phép biết
chính xác số gọi đến, gọi từ đâu và trong một số trường hợp biết chắc số đó là ai. Dựa
vào tính năng này người dùng có thể quyết định tiếp nhận hay không tiếp nhận cuộc
gọi dựa vào caller ID (Ngăn một số cuộc gọi ngoài ý muốn)
1.1.2.4 Tương tác thoại (IVR)
IVR (Interactive Voice Response) là một kỹ thuật cho phép hệ thống tương tác tự
động với người dùng. Các tổ chức và công ty ngày càng triển khai rộng rãi các ứng
dụng dựa trên chức năng IVR nhằm mục tiêu giảm thiểu chi phí.
Thông thường các IVR sử dụng cơ chế “pre-record voice prompt” và các tùy chọn để
chuyển tải thông tin đến người dùng và cơ chế nhập phím DTMF được dùng để thu
thập thông tin input của người dùng. Với các hệ thống IVR hiện đại thì chức năng thu
thập thông tin input của người dùng sẽ dựa trên cơ chế nhập dữ liệu thoại kết hợp với

nhận dạng giọng nói.


-- 8 --

Các ứng dụng được xây dựng dựa trên công nghệ IVR bao gồm:
-

Voice-Mail, Fax-Mail.

-

Đặt mua hàng

-

Truy vấn thông tin đặt mua và chuyển hàng

-

Đặt và kiểm tra thông tin vé máy bay

-

Các dịch vụ của ngân hàng (chuyển tiền, kiểm tra tài khoản,...).

-

Thông tin về giá (của các sản phẩm hay chứng khoán)


-

Thông tin địa chỉ các nơi giải trí trong thành phố…

1.1.2.5 Chức năng Meet me conference
Asterisk hỗ trợ chức năng conferencing tương đối tốt. Người dùng có thể cấu hình
một hoặc nhiều conference room khác nhau với các mã pin tương ứng. Tính năng này
cho phép tổ chức các cuộc hội thảo trực tuyến từ xa rất hiệu quả.
1.1.2.6 Chức năng Follow me
Một tính năng khá hay khác cũng được Asterisk hỗ trợ đó là Follow me. Với tính
năng này người dùng hoàn toàn có thể nhận được cuộc gọi đến số của mình thông qua
điện thoại di động hay PSTN khi không có ở bàn làm việc để nhận cuộc gọi. Cuối
cùng hệ thống sẽ chuyển cuộc gọi vào hộp thư thoại nếu tất cả các kênh liên lạc trên
đều bận.
1.1.2.7 Hỗ trợ kênh kết nối ZAP
Asterisk hỗ trợ người dùng cấu hình nhiều giao diện giao tiếp analog hay digital để
kết nối với các mạng PSTN khác thông qua ZAP card. Chúng ta có thể cấu hình nhiều
ZAP card trên một hệ thống để hỗ trợ nhiều kênh giao tiếp khác nhau.
1.1.2.8 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 ứng dụng cụ thể khác, ví dụ nhân viên chỉ được cho phép 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.


-- 9 --

1.1.2.9 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 gọi đang chờ trên đó và từ đây có thể gặp nhau và đàm thoại.
1.1.2.10 Remote call pickup
Đây là tính năng cho phép người dùng 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. Tính năng này rất hữu ích khi người
dùng không ở nơi bàn làm việc của mình nhưng vẫn muốn nhận được cuộc gọi đến
một cách tựu động không cần cơ chế chuyển cuộc gọi.
1.1.2.11 Privacy Manager
Asterisk cung cấp tính năng tiện dụng khác nữa là chỉ cho phép một số điện thoại
đượ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.
1.1.2.12 Backlist
Chức năng 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)


-- 10 --

1.2 Kiến trúc và cơ chế hoạt động
Một hệ thống Asterisk sẽ có kiến trúc cơ bản như sau [10]:

Hình 2.2: Kiến trúc cơ bản của một hệ thống Asterisk
Kiến trúc của một hệ thống Asterisk bao gồm hai thành phần quan trọng sau:
1.2.1 Phần lõi (core system)
Phần lõi của một hệ thống Asterisk bao gồm các thành phần chính sau[8]:
1.2.1.1 Thành phần chuyển mạch PBX (PBX switching)
Hệ thống Asterisk là một hệ chuyển mạch PBX, kết nối một số lượng lớn các cuộc
gọi của người dùng với nhau cũng như các ứng dụng tự động khác. Thành phần này
sẽ kết nối một cách trong suốt các cuộc gọi đến từ các thiết bị phần cứng (hardware)
cũng như các giao diện mềm (software interface) lại với nhau. Đây có thể xem là tính

năng giữ vai trò cốt lõi nhất của hệ thống.


-- 11 --

1.2.1.2 Thành phần khởi động ứng dụng (Application Launcher)
Là thành phần giữ vai trò cho việc nạp các ứng dụng của hệ thống như: Voicemail,
File playback hay liệt kê danh bạ (Directory listing). Thành phần này được dùng để
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…
1.2.1.3 Thành phần chuyển đổi codec (Codec Translator)
Thành phần này giữ vai trò quan trọng trong việc sử dụng các module codec trong
việc mã hóa và giải mã các chuẩn định dạng nén của dữ liệu âm thanh được dùng
trong công nghệ viễn thông. Nhiều module codec được thiết lập sẵn bên trong hệ
thống và chúng sẽ được lựa chọn cho việc mã hóa và giải mã dữ liệu sao cho đảm bảo
được chất lượng của dữ liệu âm thanh và tối ưu băng thông đường truyền
1.2.1.4 Thành phần quản lý lịch biểu và I/O của hệ thống (Scheduler & I/O
Manager)
Thành phần này đóng vai trò quan trọng trong việc điều khiển lịch biểu cho các tác vụ
cấp thấp và quản lý hệ thống nhằm tối ưu hóa hiệu suất hoạt động của hệ thống trong
mọi tình huống. 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.
1.2.1.5 Thành phần nạp động (Dynamic Module Loader)
Khi Asterisk khởi động, đầu tiên thành phần Dynamic module loader sẽ nạp và khởi
tạo cho từng thành phần: driver của thiết bị, các kênh giao tiếp, các format, các thành
phần cuối của việc ghi âm chi tiết cuộc gọi, codec, các ứng dụng và hơn thế nữa đó là
liên kết với các API tương ứng bên trong của hệ thống.
Sau khi việc khởi tạo của hệ thống hoàn tất thành công, hệ thống PBX Switching
Core của Asterisk sẽ 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ể hiện
trong file cấu hình extension.conf.

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.


-- 12 --

1.2.2 Các API nạp động (Loadable Module API)
Hệ thống Asterisk có bốn 4 nhóm API chức năng chính hỗ trợ cho các module, thiết
bị phần cứng và các giao thức của hệ thống:
1.2.2.1 API dùng cho việc mã hóa và giải mã (Codec translator API)
Cung cấp các API hỗ trợ cho việc mã hóa và giải mã nhiều lọai định dạng âm thanh
khác nhau GMS, G729, U-Law, Mu-Law,…
1.2.2.2 API dùng cho các kênh kết nối (Asterisk Channel API)
Cung cấp API hỗ trợ cho việc điều khiển các loại cuộc gọi của người dùng đến các
kết nối như: VoIP, ISDN, PRI hay các công nghệ khác. API này sẽ điều khiển một
cách chi tiết ở mức thấp của các kết nối nêu trên. Đâ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…
1.2.2.3 API hỗ trợ cho việc định dạng file (Asterisk File Format API)
Cung cấp API điều khiển việc đọc và ghi các chuẩn định dạng file khác nhau như
.mp3, .wav, .gsm…cho việc lưu trữ thông tin trong hệ thống
1.2.2.4 API hỗ trợ các ứng dụng bên ngoài (Asterisk Application API)
Cung cấp API cho phép thực thi nhiều module tác vụ thực hiện nhiều chức năng khác
nhau trên hệ thống. Các module bao gồm tất cả các ứng dụng được thực thi trong hệ
thống Asterisk như hôp thư thoại, hiển thị thông tin cuộc gọi, hội thảo trực tuyến, liệt
kê danh bạ …và tất cả những ứng dụng khác có thể được phát triển bởi cộng đồng
Asterisk hay người dùng [1].
Một API rất quan trọng hỗ trợ người dùng phát triển các ứng dụng của mình đó là
Asterisk Gateway Interface (AGI, tương tự như CGI trên nền Web). Đây là cơ chế
kích hoạt ứng dụng bên ngoài, cho phép phát triển các ứng phức tạp với một số ngôn

ngữ như PHP, Perl, Java hay C/C++. Với API này, khả năng viết các ứng dụng và tùy
biến rất lớn.


-- 13 --

Kiến trúc trên có những ưu điểm sau:
-

Sử dụng những API trên Asterisk sẽ đạt được một mức độ trừu tượng hóa giữa
các chức năng cốt lõi của hệ thống (như một PBX) với các công nghệ khác tồn tại
trong công nghệ viễn thông.

-

Cơ chế module hóa sẽ cho phép Asterisk tích hợp một cách hiệu quả giữa các hệ
công nghệ phần cứng chuyển mạch kênh (Circuit switching) truyền thống đã tồn
tại với các công nghệ chuyển mạch gói (Packet switching) đang phát triển mạnh
mẽ ngày nay và trong tương lai.

-

Khả năng hỗ trợ nạp các codec module cho phép hệ thống có thể tối ưu hóa việc
nén dữ liệu thoại để truyền đi một cách hiệu quả trên hệ thống chuyển mạch gói
(Packet switch). Đặc biệt là việc truyền dữ liệu thoại trên các đường truyền có
băng thông thấp như modem truyền thống mà vẫn đảm bảo được chất lượng của
dữ liệu thoại.

-


Các ứng dụng API cung cấp một cơ chế xây dựng và sử dụng rất uyển chuyển các
module ứng dụng để thực hiên những chức năng cũng rất uyển chuyển theo yêu
cầu sử dụng. Bên cạnh đó các API này sẽ tạo ra một cơ chế mở cho phép người
dùng phát triển các ứng dụng phù hợp từng nhu cầu và tình huống thực tiễn.

1.3 Tổng quan về tương tác thoại (IVR)
1.3.1 Kế hoạch quay số (Dialplan)
Dialplan được xem là trái tim của Asterisk vì mọi thứ đều được bắt đầu từ đây[9].
Có 2 file quan trọng giữ vai trò cấu hình cho dialplan trong Asterisk được lưu ở thư
mục /etc/asterisk là:
-

extensions.conf: là tập tin cấu hình truyền thống cho dialplan và vẫn được khuyến
khích sử dụng nhiều nhất. Các thông tin trong file cấu hình được biểu thị ở dạng
kịch bản đơn giản.

-

extensions.ael: sử dụng ngôn ngữ mở rộng mới của Asterisk để định nghĩa
dialplan


-- 14 --

Một dialplan cơ bản dạng truyền thống bao gồm các thành phần sau:
1.3.1.1 Ngữ cảnh (context)
Một dialplan thường được chia thanh nhiều phần khác nhau và được gọi là các ngữ
cảnh (context) [9]. Bất cứ dialplan nào cũng sẽ bắt đầu với ngữ cảnh [general]. Ngữ
cảnh này sẽ là nơi định nghĩa các cấu hình toàn cục của hệ thống.
Ngoại trừ ngữ cảnh toàn cục của hệ thống nêu trên bắt buộc phải là có tên là general,

thì các ngữ cảnh khác hoàn toàn có thể được đặt tên tùy ý:
[tên-ngữ-cảnh]
; Khai báo của các extension
1.3.1.2 Extension
Mỗi một đề mục con của một ngữ cảnh được gọi là extension. Extension sẽ được
phiên dịch bởi Astersik mỗi khi có một cuộc gọi được thực hiện nhưng file
extension.conf thì chỉ được nạp một lần duy nhất vào lúc khởi chạy hệ thống.
Thế nên mỗi khi thay đổi thông tin trong file extension.conf, thì file yêu cầu hệ thống
khởi nạp lại thông qua lệnh “reload now” hay “extensions reload”
Cú pháp đầy đủ của một extension như sau:
Exten => Extension, Priority, Application

- Extension: Tên hoặc là số được gọi đến
- Priority: độ ưu tiên thực thi của extension. Extension có giá trị của độ ưu tiên thấp
nhất sẽ được ưu tiên thực hiện trước
- Application: cho Asterisk biết là phải thực thi ứng dụng nào tương ứng với cuộc gọi
Dưới đây là các hàm cơ bản thường được sử dụng trong extension:
- Answer(): trả lời cuộc gọi. Khi có một cuộc gọi đến ứng bởi tín hiệu rung chuông,
ứng dụng này sẽ báo với Asterisk trả lời cuộc gọi.
- Hangup(): ứng dụng này ngược lại với Answer(),cuộc gọi sẽ bị kết thúc khi ứng
dụng này được gọi
- Playback(file_audio): thực thi một file âm thanh được chỉ định bởi biến file_audio.
Các file âm thanh mặc định được lưu ở thư mục “/var/lib/asterisk/sounds/”


-- 15 --

- Wait(number): thực hiện trạng thái chờ trong vòng number giây trước khi chuyển
sang các ứng dụng khác
- NoOp(string): hệ thống sẽ không làm gì cả khi gặp ứng dụng này và chuỗi “string”

sẽ được hiển thị trên CLI của hệ thống.
- VoiceMail(mailbox,u): Cho phép người dùng chuyển tin nhắn vào hộp thư thoại
- VoiceMailMain(): cho phép người dùng nhận tin nhắn trong hộp thư thoại
- AGI(): hàm thực thi các ứng dụng AGI
Ví dụ: một ngữ cảnh có các extension như sau:
[my_context]
exten => 1234,1,Answer()
exten => 1234,2,Wait(2)
exten => 1234,3,Playback(hello-world)
exten => 1234,4,Wait(2)
exten => 1234,5,Hangup()

Khi người dùng gọi đến số 1234, hệ thống sẽ nhấc máy sau đó chờ khoảng 2 giây và
thực thi file âm thanh hello-world. Kế đến hệ thống sẽ chờ tiếp 2 giây nữa và kết thúc
cuộc gọi.
1.3.1.3 Cơ chế bao hàm (include) của dialplan
Với cơ chế này hệ thống sẽ cho phép định nghĩa một ngữ cảnh có thể bao hàm nhiều
ngữ cảnh khác bên trong nó.
Cú pháp:
include => tên-một-ngữ-cảnh
Ví dụ:
[sales]
include => internal
include => external
[internal]
exten => 2000,1,Dial(SIP/2000)
[external]
exten => 17005551212,1,Dial(SIP/5551212)

Ngữ cảnh [sales] sẽ bao hàm hai ngữ cảnh [internal] và [external]



-- 16 --

1.3.1.4 Lập trình với dialplan
Trong Asterisk các thủ tục hay chương trình ứng dụng có thể được lập trình nội tại
thông qua các hàm ứng dụng được xác định trong các extension của dialplan.
Dialplan bản chất định nghĩa của nó giống như một chương trình cơ bản. Ngoài ra nó
còn hỗ trợ thêm các tính năng sau:
 Khai báo biến
Biến có thể được khai báo và gán giá trị ngay trong dialplan.
Biến được tạo ra và gán giá trị thông qua hàm Set().
Ví dụ:
exten => 1002,1,Set(Favoriteanimal = "Tiger")
exten => 1002,n,Set(Favoritenumber = 23)

Giá trị của biến sẽ được đọc hay truy xuất thông qua cú pháp ${Tên_biến}
Ví dụ:
exten => 1003,1,NoOp(${Favoriteanimal})
exten => 1003,n,NoOp(${Favoritenumber})

Thông thường có 3 loại biến cơ bản sau được sử dụng trên hệ thống Asterisk:
-

Biến toàn cục: có hiệu mọi nơi trong dialplan

Cú pháp khai báo và gán giá trị trong hàm Set() như sau:
Set(<Tên_biến>=<giá_trị>, g)
Ví dụ:
exten => 1004,1,Set(READABLEANYWHERE = 23,g)

exten => 1004,n,NoOp(${READABLEANYWHERE})

-

Biến cục bộ: chỉ có hiệu lực trong kênh kết nối hiện tại

Cú pháp khai báo và gán giá trị trong hàm Set() như sau:
Set(<Tên_biến>=<giá_trị>)
Ví dụ:
exten => 1005,1,Set(READABLEHEREONLY= 42)
exten => 1005,n,NoOp(${READABLEHEREONLY})

-

Biến hệ thống: là những biến động được tạo ra bởi hệ thống và chúng
có thể được truy xuất trực tiếp trong dialplan mà không cần khai báo.


×