Báo cáo Hệ thống cung cấp và tích hợp dịch vụ thông tin

TRƯỜNGĐẠIHỌCBÁCHKHOAHÀNỘI  
KHOACÔNGNGHỆTHÔNGTIN  
BÁO CÁO NGHIÊN CỨU KHOA HỌC  
Đề Tài :  
Hệ thống cung cấp và tích hợp dịch vụ thông tin  
Giáo viên hướng dẫn: Phạm Thọ Hoàn  
Sinh viên thực hiện: Đào Quang Minh  
Lớp: K54 B  
Báo cáo NCKH 2008  
Hà nội 04/2008  
HƯỚNG NGHIÊN CỨU VÀ PHÁT TRIỂN  
Hệ thống cung cấp và tích hợp các dịch vụ thông tin xoay quanh các ứng dụng liên  
quan đến hệ thống tổng đài cá nhân Asterisk. Hệ thống sử dụng Asterisk như một trung  
tâm phân phối và cung cấp các dịch vụ thông tin thông qua kết hợp với các tính năng cao  
cấp mà Asterisk hỗ trợ như Asterisk Voicemail (cho phép gửi tin nhắn thoại trong tổng đài  
Asterisk), Asterisk Festival (tích hợp cộng nghệ mã nguồn mở text-to-speech Festival vào  
Asterisk), Asterisk DUNDi (cho phép kết nối nhiều Asterisk Server lại với nhau) v.v… Từ  
mỗi tính năng cao cấp này chúng ta có thể xây dựng vô vàn những ứng dụng trong thực  
tiễn như Hệ thống quản lý công việc kết hợp thoại (Asterisk Voicemail), Hệ thống đọc  
thông tin qua tổng đài (Asterisk Festival) hay Hệ thống gọi điện thoại quốc tế (Asterisk  
DUNDi) v.v….  
Trước hết, Asterisk là một hệ thống tổng đài cá nhân, nó cho phép thiết lập hệ  
thống điện thoại cá nhân thông qua mạng LAN hết sức dễ dàng và thuận tiện, với chi phí  
hầu như không có. Trên thực tế, nhu cầu gọi điện thoại miễn phí trong một tổ chức là hết  
sức cần thiết, nếu chi phí cho việc triển khai một hệ thống như thế là miễn phí thì sẽ tiết  
kiệm không nhỏ cho các tổ chức và cá nhân có nhu cầu, hệ thống tổng đài cá nhân Asterisk  
chính là sự lựa chọn đầu tiên cho các nhà ứng dụng phần mềm.  
Hiện tại, việc cấu hình trên thoại cho các nhu cầu như gọi điện thoại trong mạng  
LAN, Internet hay gửi voicemail đã thực hiện được. Cấu hình Asterisk cho phép kết nối  
với hệ thống PSTN thông qua được điện thoại thông thường để triển khai một số dịch vụ  
cơ bản cũng đã thành công. Hướng phát triển tiếp theo sẽ tập trung vào Asterisk Festival,  
xây dựng hệ thống đọc điểm cho sinh viên và học sinh.  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 2  
Báo cáo NCKH 2008  
MỤC LỤC  
1. Asterisk………………………………………………………………...4  
1.1 Tổng quan…………………………………………………………4  
Một số khái niệm liên quan………………………………………5  
Một số ngữ cảnh ứng dụng……………………………………….8  
1.2 Kiến trúc…………………………………………………………..9  
1.3 Các tính năng cơ bản……………………………………………10  
1.4 Tổ chức thư mục…………………...……………………………12  
1.5 Cài đặt………………………………..…………………………15  
1.5.1 Yêu cầu hệ thống…………………………………………..15  
1.5.2 Các bước cài đặt…………………………………………...15  
a) Các gói của Linux……………………………………...15  
b) Mã nguồn phần mềm…………………………………..16  
c) Zaptel…………………………………………………...17  
d) Libpri…………………………………………………..17  
e) Cài đặt Asterisk……………………………………….17  
f) Asterisk Add-ons………………………………………18  
g) Asterisk Sounds……………………………………….18  
Các lỗi mắc phải và cách xử lý…………………………………18  
2. Cấu hình Card Digium TDM400P…………………………………19  
2.1 Lắp đặt phần cứng………………………………………………19  
2.2 Cài đặt driver……………………………………………………21  
2.3 Cấu hình Asterisk sử dụng card……………………………….21  
3. dotProject……………………………………………………………22  
3.1 Tổng quan……………………………………………………….22  
3.2 Cấu trúc………………………………………………………….22  
3.3 Tích hợp Asterisk VoiceMail…………………………………..24  
4. Asterisk AGI………………………………………………………..26  
4.1 Tổng quan……………………………………………………….26  
4.2 Nguyên tắc hoạt động…………………………………………..27  
a) Giao tiếp AGI chuẩn…………………………………………….27  
b) Gọi AGI từ dialplan……………………………………………..27  
c) Tạo AGI với PHP……………………………………………….27  
5. Cấu hình Asterisk với MySQL…………………………………......33  
Cấu hình Asterisk lưu trữ voicemail trong cơ sở dữ liệu………..35  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 3  
Báo cáo NCKH 2008  
1. Asterisk  
1.1. Tổng quan về Asterisk  
Asterisk là một hệ thống chuyển mạch mề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 một tổng đài cá  
nhân (Private Branch eXchange) truyền thống, và thêm vào đó là rất nhiều các tính năng  
mới mà một PBX thông thường không thể nào có được như kết hợp giữa chuyển mạch  
VOIP và chuyển mạch TDM, khả năng tùy biến đáp ứng các thay đổi về nhu cầu người sử  
dụng,…  
Asterisk ra đời vào năm 1999 bởi Mark-Spencer và liên tục được phát triển từ đó  
đến nay bời cộng đồng mã nguồn mở.Phiên bản hiện tại của Asterisk là 1.4  
Hiện nay tất cả các công ty phân phối các sản phẩm tổng đài cá nhân thường cung  
cấp các sản phẩm đã được gói kín, với chức năng giới hạn, và trong trường hợp muốn mở  
rộng hệ thống của mình thì khách hàng sẽ phải trả thêm một khoản phí tương đối lớn. Vì lý  
do lợi nhuận các công ty này sẽ không bao giờ cung cấp cho khác hàng sự tùy biến các  
chức năng, mà họ sẽ luôn muốn khách hàng phải lệ thuộc vào qui trình sản xuất của họ.  
Tuy nhiên, với sự ra đời của Asterisk thì điều đó đã được thay đổi. Đúng với tính chất của  
một phần mềm mã nguồn mở, Asterisk cung cấp cho chúng ta một cơ chế tùy biến cực kỳ  
mềm dẻo và linh hoạt, với Asterisk chúng ta đã có thể tự do xây dựng hệ thống của mình  
mà không gặp phải bất cứ một giới hạn nào nữa.  
Hiện nay, trong thực tế các PBX xây dựng bằng Asterisk đã và đang được rất nhiều  
doanh nghiệp triển khai ứng dụng. Đây là một xu hướng tất yếu bởi tất cả các công ty đều  
có một mạng máy tính,mạng điện thoại riêng và có luôn luôn có nhu cầu liên lạc với nhau  
trong công việc giữa các phòng ban, chi nhánh, và với Asterisk, các công ty có thể giảm  
thiểu được chi phí liên lạc,thậm chí là không phải tốn chi phí khi liên lạc giữa các máy  
trong mạng nội bộ của công ty. Không chỉ giới hạn trong phạm vi một công ty, tổ chức mà  
Asterisk còn cung cấp khả năng giao tiếp với , mạng PSTN và mạng VOIP, cho phép gọi  
điện tới tất cả các số điện thoại có trên mạng PSTN hoặc các softfone, IP phone trong  
mạng VOIP.  
Thông qua hình vẽ dưới đây, chúng ta sẽ có một cái nhìn chung, tổng quan nhất về  
hệ thống Asterisk:  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 4  
Báo cáo NCKH 2008  
Hình : Sơ đồ tổng quát Asterisk  
Qua đây chúng ta có thể thấy được khả năng giao tiếp rất phong phú của hệ thống,  
có thể giao tiếp với mạng PSTN, các nhà cung cấp dịch vụ VOIP, giao tiếp với các điện  
thoại analog thông thường, các điện thoại IP,.. và đó là một trong những điểm mạnh, ưu  
việt nhất của Asterisk!!!  
Một số khái niệm liên quan  
o PSTN - Public Switched Telephone Network: 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. PSTN được phát triển trên chuẩn ITU (International Engineering Task Force  
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  
o PBX - Private 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  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 5  
Báo cáo NCKH 2008  
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.  
o 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 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ách rộng  
rãi.  
o TDM - Time Division Multiplexing: là kỹ thuật ghép kênh phân chia thời gian 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.  
o FXO (Foreign Exchange Office) và FXS (Foreign Exchange Station): là hai hình  
thức báo hiệu giao tiếp của TDM. FXO 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…  
FXO giống như máy fax hay modem dial-up 56K dùng để kết nối với đường dây điện  
thoại. FXS là thiết bị tại nơi cung cấp đường dây điện thoại, 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. 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,  
trong đó 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  
o SIP - Session Initiation Protocol: là giao thức Internet dành cho báo hiệu VoIP được  
phát triển bởi IETF cung cấp vài chức năng giống hệ thống báo hiệu số nhưng dựa trên  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 6  
Báo cáo NCKH 2008  
nền IP. Chức năng đó là báo hiệu và thoại chuyển tải trên hai kênh riêng. Giao thức  
SIP thực hiện chức năng thiết lập và báo hiệu cuộc gọi (tín hiệu mời quay số, tín hiệu  
bận, …). Trong giao thức SIP còn có chức năng Proxy để linh hoạt hơn trong thiết lập  
cuộc gọi. Proxy Server sẽ làm nhiệm vụ ghi nhận tất cả các số điện thoại được phía  
client đăng ký đến qua bản tin “registration”. Khi một client khác thực hiện cuộc gọi  
thì client đó không biết số điện thoại cần gọi đang ở đâu nên thông qua Proxy Server  
để tìm kiếm thiết lập cuộc gọi.  
▪
o RTP (Real Time Protocol) và NAT (Network Address Translators): Các cuộc gọi trên  
Internet với giao thức SIP được chia thành các gói thoại và được chuyển qua giao thức  
RTP. RTP là giao thức không chỉ thực hiện chuyển các gói thoại qua Internet mà còn  
có cả video. Một cuộc gọi thông thường có hai hướng thông tin là nhận và phát, RTP  
làm việc chuyển các gói dữ liệu thoại cũng trên hai hướng. Còn NAT là một trở ngại  
lớn trong giao thức RTP. Mạng sử dụng NAT là một mạng chia sẻ nhiều địa chỉ IP nội  
bộ với một địa chỉ IP công cộng để kết nối với thế giới bên ngoài. NAT dùng để chia  
sẻ nhiều máy tính trong mạng LAN nội bộ sử dụng được Internet, nhưng cũng chính vì  
thế mà các máy tính nội bộ gặp khó khăn trong việc thực hiện cuộc gọi VoIP qua  
Internet. Đó chính là vấn đề trở ngại khi truyền thoại qua giao thức RTP. 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 đề này được giải quyết trong Asterisk  
bằng việc khai báo thông số NAT=yes trong file sip.conf  
o IAX - Inter Asterisk eXchange: 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 nhau giao thức SIP chuyển tải thoại và báo hiện trên hai kênh khác nhau, IAX  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 7  
Báo cáo NCKH 2008  
chuyển trên cùng 1 kênh, giải quyết được vấn đề NAT trong giao thức SIP. Mặt 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 trên  
cùng một IP header, cơ chế chuyển tải nhiều cuộc gọi trên cùng 1 gói IP được gọi là  
Trunk  
Một số ngữ cảnh ứng dụng Asterisk  
Từ các máy trong mạng LAN của một máy chủ Asterisk gọi điện cho nhau.  
Từ một máy trong mạng LAN của một máy chủ Asterisk gọi cho một máy khác trong  
mạng LAN của một máy chủ Asterisk khác.  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 8  
Báo cáo NCKH 2008  
Từ một máy điện thoại trong mạng LAN của một máy chủ Asterisk gọi qua Internet  
cho một thuê bao điện thoại PSTN qua một máy chủ Asterisk khác đặt tại một nơi khác.  
1.2. Kiến trúc của 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ư 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…  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 9  
Báo cáo NCKH 2008  
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 tùy vào kế hoạch quay số (Dialplan) được thực  
hiện cấu hình trong file extension.conf. Chức năng Application Launchar để rung chuông  
thuê bao, quay số, định hướng cuộc gọi, kết nối với hộp thư thoại… Scheduler and I/O  
Manager đảm nhiệm các ứng dụng nâng cao, các chức năng được phát triển bởi cộng đồng  
phát triển Asterisk. Codec Translator xác nhận các kênh nén dữ liệu ứng với các chuẩn  
khác nhau có thể kết hợp liên lạc được với nhau. Tất cả các cuộc gọi định hướng qua hệ  
thống Asterisk đều thông qua các giao tiếp như SIP, Zaptel IAX. Nên hệ thống Asterisk  
phải đảm trách nhiệm vụ liên kết các giao tiếp khác nhau đó để xử lý cuộc gọi.  
Hệ thống bao gồm 4 chức năng API chính  
▪ Codec translator API: các hàm đảm nhiệm thực thi và giải nén các chuẩn khác nhau  
như G711, GMS, G729…  
▪ Asterisk Channel API: giao tiếp với các kênh liên lạc khác nhau, đây là đầu mối  
cho việc kết nối các cuộc gọi tương thích với nhiều chuẩn khác nhau như SIP, IAX,  
H323, Zaptel…  
▪ Asterisk file format API: Asterisk tương thích với việc xử lý các loại file có định  
dạng khác nhau như mp3, wav, gsm…  
▪ Asterisk Aplication API: bao gồm tất cả các ứng dụng được thực thi tỏng hệ thống  
Asterisk như voicemail, caller ID,…  
▪ 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  
1.3. Các tính năng cơ bản của Asterisk  
1. Voicemail (hộp thư thoại)  
Đây là tính năng cho phép hệ thống nhận các thông điệp tin nhắn thoại, mỗi máy  
điện thoại được khai báo trong hệ thống Asterisk cho phép khai báo thêm chức năng hộp  
thư thoại.  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 10  
Báo cáo NCKH 2008  
Mỗi khi số điện thoại bận hay ngoài vùng phủ sóng thì hệ thống Asterisk định  
hướng trực tiếp các cuộc gọi đến hộp thư thoại tương ứng đã khai báo trước. Voicemail  
cung cấp cho người sử dụng nhiều tính năng lựa chọn như: password xác nhận khi truy cập  
vào hộp thư thoại, gửi mail báo khi có thông điệp mới.  
2. Call Forwarding (chuyển cuộc gọi)  
Khi không có ở nhà hoặc đi công tác mà người sử dụng không muốn bỏ lỡ tất cả  
các cuộc gọi đến thì hãy nghĩ ngay đến tính năng chuyển cuộc gọi.  
Đây là tính năng thường được sử dụng trong hệ thống Asterisk. Chức năng cho  
phép chuyển 1 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ư: khi bận, khi không trả lời, chuyển tức thời, chuyển  
cuộc gọi với thời gian định trước.  
3. Call ID (hiển thị số gọi)  
Chức năng này rất hữu dụng khi một ai đó gọi đến và ta muốn biết chính xác là gọi  
từ đâu và trong một số trường hợp biết chắc họ là ai. Ngoài ra Caller ID còn là chức năng  
cho phép chúng ta xác nhận số thuê bao gọi đến có nghĩa là dựa vào caller ID chúng ta có  
tiếp nhận hay không tiếp nhận cuộc gọi từ phía hệ thống Asterisk. Ngăn một số cuộc gọi  
ngoài ý muốn.  
4. Automated attendant (chức năng IVR)  
Chức năng tương tác thoại có rất nhiều ứng dụng trong thực tế, khi gọi điện thoại  
đến một cơ quan hay xí nghiệp thuê bao thường nghe thông điệp như “ Xin chào mừng bạn  
đã gọi đến công ty chúng tôi hãy nhấn phím 1 để gặp phòng kinh doanh, phím 2 gặp phòng  
kỹ thuật…” sau đó tùy vào sự tương tác của thuê bao gọi đến hệ thống Asterisk sẽ định  
hướng cuộc gọi theo mong muốn. Khi muốn xem điểm thi, muốn biết tiền cước điện thoại  
của thuê bao, muốn biết tỉ giá đô-la hiện nay như thế nào, hay kết quả sổ xố… tất cả những  
mong muốn trên đều có thể thực hiện qua chức năng tương tác thoại.  
5. Time and Date  
Với 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 số  
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.  
6. CallParking  
Đâ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 và thuê bao chủ  
gọi đang chờ trên đó và từ đây có thể gặp nhau và đàm thoại.  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 11  
Báo cáo NCKH 2008  
7. Remote call pickup  
Đâ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 hay đang thực hiện cuộc gọi.  
8. Privacy Manager  
Khi một người chủ doanh nghiệp triển khai Asterisk cho hệ thống điện thoại của  
công ty mình nhưng lại không muốn nhân viên trong công ty gọi đi ra ngoài trò chuyện với  
bạn bè, khi đó Asterisk cung câp 1 tính năng tiện dụng là chỉ cho phép số điện thoại được  
lập trình được phép gọi đến những số máy cố định nào đó thôi, còn những số không có  
trong danh sách định sẵn sẽ không thực hiện cuộc gọi được.  
9. Black List  
Giống với 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).  
1.4.Tổ chức thư mục trong Asterisk  
Asterisk sử dụng nhiều thư mục trên hệ thống linux để quản lý các khía cạnh khác  
nhau của hệ thống, như nghi nhận bản tin thoại, các bản tin nhắc thoại, hoặc  
các tập tin cấu hình. Phần này sẽ trình bày các thư mục chính yếu được tạo ra trong quá  
trình lắp đặt và được cấu hình trong tập tin Asterisk.conf.  
1. /etc/asterisk/  
Thư mục /etc/asterisk/ chứa tất cả các tập tin cấu hình của hệ thống Asterisk ngoại trừ  
tập tin Zaptel.conf được đặt tại thư mục /etc/. Phần cứng Zaptel đầu tiên được phát triển  
bởi Jim Dixon thuộc nhóm Zapata Telephony Group để giao tiếp giữa máy tính với mạng  
điện thoại, mà Asterisk lại sử dụng phần cứng này, với lý do đó mà file cấu hình  
zaptel.conf không nằm trong thư mục /etc/asterisk/.  
2. /usr/lib/asterisk/modules/  
Thư mục /usr/lib/asterisk/modules/ chứa tất cả các module cần thiết để asterisk hoạt  
động. Bên trong thư mục là các ứng dụng khác nhau, các codec, các định dạng âm  
thanh(format) và các kênh thông tin(channel). Theo mặc định Asterisk sẽ nạp tất cả các  
module vào lúc khởi động. Chúng ta có thể không cho nạp một module bất kỳ bằng  
cách không khai báo sử dụng trong tập tin modules.conf. Lưu ý khi không cho nạp  
module thì phải biết chắc module đó không làm ảnh hưởng hoạt động của asterisk nếu  
không lỗi sẽ xuất hiện.  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 12  
Báo cáo NCKH 2008  
3. /var/lib/asterisk  
Thư mục /var/lib/asterisk/ chứa tập tin astdb và một số thư mục con. Tập tin astdb định  
vị thông tin cơ sở dữ liệu của Asterisk giống như Microsoft Windows Registry. Các thư  
mục con của thư mục /var/lib/asterisk/ bao gồm:  
• agi-bin/  
Thư mục agi-bin/ chứa các script của người dùng mà Asterisk có thể định vị sử dụng  
qua các ứng dụng AGI. AGI là phần giao tiếp với ngôn ngữ lập trình script để thực hiện  
một số công việc của Asterisk từ bên ngoài.  
• firmware/  
Thư mục firmware/ chứa một số phần dẻo(firmware) cho các thiết bị khác nhau tương  
thích với Asterisk. Hiện tại chỉ có thư mục con /iax chứa firmware cho thiếy bị IAXy của  
Digium. IAXy là thiết bị ATA sử dụng giao thức IAX.  
• images/  
Các ứng dụng thông tin với các kênh hỗ trợ ảnh images thì sử dụng thư mục này.  
Nhưng hiện tại các kênh thông tin hầu như không hỗ trợ truyền ảnh images nên thư mục  
này cũng hiếm khi được sử dụng. Tuy nhiên nếu các thiết bị có hỗ trợ thì thư mục này trở  
nên hiệu dụng.  
• keys/  
Asterisk có thể sử dụng hệ thống khoá public/private để xác minh các kết nối giữa các  
server Asterisk thông qua chữ ký điện tử RSA. Nếu đặt một khoá public vào thư mục /keys  
thì kết nối của server đầu bên kia có thể được xác minh bằng kênh thông tin có hỗ trợ, đối  
với Asterisk thì kênh giao thức IAX hỗ trợ loại xác minh này. Một khoá private không bao  
giờ công bố, chúng ta chỉ công bố khoá public đến với server cần nối đến, sau đó sẽ được  
xác minh với khoá private này. Cả hai khoá public và private được lưu với đuôi .pub và  
.key đặt tại thư mục keys/.  
• mohmp3/  
Khi cấu hình Asterisk sử dụng tính năng Music on Hold, tính năng hoạt động sẽ thực  
hiện lấy các tập tin mp3 tại thư mục mohmp3/. Tập tin định dạng theo chuẩn của Asterisk  
nên khi sử dụng các file Mp3 thông thường cần có sự chuyển đổi thích hợp trước khi chép  
vào thư mục trên để sử dụng.  
• sounds/  
Tấ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  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 13  
Báo cáo NCKH 2008  
đặt tại thư mục mã nguồn của Asterisk. Còn nội dung của các tập tin âm thanh được mở  
rộng thêm được liệt kê trong tập tin sounds-extra.txt đặt trong thư mục được trích ra khi  
bung gói asterisk-sounds.  
4. /var/spool/asterisk/  
Thư mục /var/spool/asterisk/ Chứa nhiều thư mục con bao gồm outgoing/, qcall, tmp/,  
voicemail/. Asterisk luôn kiểm qua thư mục outgoing và qcall vì đây là hai thư mục chứa  
các tập tin dạng text chứa thông tin yêu cầu cuộc gọi. Các tập tin đó cho phép tạo ra cuộc  
gọi đơn giản bằng cách chép tập tin đúng cấu trúc quy định vào thư mục outgoing/. Sau  
đây là cấu trúc cây thư mục:  
Hình Cây thư mục /var/spool/asterisk/  
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/.  
5. /var/run/  
Thư mục /var/run/ chứa thông tin process ID(pid) cho tất cả các tiến trình đang hoạt  
động trong hệ thống, bao gồm cả Asterisk. Lưu ý là ứng với mỗi hệ điều hành thư mục  
/var/run/ có thể khác.  
6. /var/log/asterisk/  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 14  
Báo cáo NCKH 2008  
Thư mục /var/log/asterisk/ là nơi Asterisk chứa tất cả các tập tin nhật ký hay còn gọi là  
tập tin log. Chúng ta có thể tuỳ biến các loại thông tin được lưu trong các tập tin log khác  
nhau qua tập tin cấu hình logger.conf đặt tại thư mục /etc/asterisk.  
7. /var/log/asterisk/cdr-csv  
Thư mục /var/log/asterisk/cdr-csv được sử dụng để lưu chi tiết cuộc gọi CDR, Thông  
tin mặc định về chi tiết thông tin cuộc gọi lưu trữ trong tập tin Master.CVS, nhưng thường  
thì ứng với mỗi mã accountcode sẽ tạo một thư mục riêng để lưu chi tiết cuộc gọi cho máy  
đó.  
1.5. Cài đặt Asterisk  
1.5.1 Yêu cầu hệ thống  
• Về phần cứng: yêu cầu tối thiểu 300Mhz Pentium với 256Mb Ram. Asterisk không  
yêu cầu dung lượng nhiều (khoảng 100Mb) nhưng các thành phần khác như source  
code, voicemail hay những hướng sử dụng khác đều yêu cầu dung lượng. Để dễ  
dàng phát triển hệ thống, cần khoảng 4Gb. Để khám phá được đầy đủ sức mạnh của  
Asterisk, bạn nên cài đặt thêm các thiết bị phần cứng của Digium.  
Với các mục đích khác nhau cho việc triển khai hệ thống Asterisk, yêu cầu phần cứng  
có thế thay đổi.  
• Hệ điều hành: Asterisk được thiết kế cho hệ điều hành Linux, nhân 2.4 hoặc cao  
hơn (như Redhat, Fedora, Debian,…) và nay đã có thể cài đặt trên Windows.  
Ở đây sẽ hướng dẫn cài đặt chủ yêu trên Fedora Core cho hệ thống Asterisk.  
1.5.2 Các bước cài đặt  
a) Cài đặt các gói của Linux  
Tên gói  
Câu lệnh cài đặt  
Tác dụng  
Sử dụng bởi  
GCC3.x  
yum install -y  
Required to compile  
libpri, zaptel,  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 15  
Báo cáo NCKH 2008  
gcc  
zaptel,libpri,and asterisk  
asterisk  
ncurses-devel  
yum install -y  
ncurses-devel  
yum install -y  
libtermcap-devel  
yum install -y  
kernel-devel  
yum install -y  
kernel-smp-devel  
yum install -y  
gcc-c++  
Required by menuselect  
menuselect  
libtermcap-devel  
Required by asterisk  
asterisk  
kernel development  
header  
Required to compile zaptel zaptel  
Required to compile zaptel zaptel  
kernel development  
headers (SMP)  
GCC C++ 3.x  
Required by asterisk  
asterisk  
OpenSSL (optional)  
yum install -y  
openssl-devel  
Dependency of OSP, IAX2 asterisk  
encryption,res_crypto  
(RSA  
key support)  
newt-devel (optional)  
zlib-devel (optional)  
yum install -y  
newt-devel  
Dependency of zttool  
zaptel  
yum install -y  
zlib-devel  
Dependency of DUNDi  
asterisk  
unixODBC;  
unixODBC-devel  
(optional)  
yum install -y  
Dependency of func_odbc, asterisk  
unixODBC-devel cdr_odbc,  
res_config_odbc,  
res_odbc,  
ODBC_STORAGE  
Dependency of  
libtool  
yum install -y  
asterisk  
(optional;recommended) libtool  
ODBC-related modules  
GNU make (version  
3.80 or higher)  
yum install -y  
make  
Required to compile zaptel asterisk  
and asterisk  
Một tiện ích rất hay cho phần này là giao diện đồ họa yumex cho lệnh yum. Cài đặt  
tiện ích này bằng lệnh yum install yumex  
Khi sử dụng yumex, giao diện đồ họa sẽ cho phép ta quản lý dễ dàng việc cài đặt các  
gói như tìm kiếm, tháo bỏ, cài đặt thêm  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 16  
Báo cáo NCKH 2008  
b) Mã nguồn phần mềm  
Download các gói asterisk,zaptel,libpri phiên bản mới nhất tại các địa chỉ sau:  
Chú ý là phiên bản mới nhất của các gói trên không nhất thiết phải cùng số hiệu.  
Chúng ta download tất cả các gói này và giải nén ra một thư mục nào đó, giả định đó  
là thư mục /usr/src  
c) Zaptel  
Các câu lệnh sau sẽ giúp cho việc cài đặt gói Zaptel và các module của nó  
# cd /usr/src/zaptel-version  
# make clean  
# ./configure  
# make menuselect  
# make  
# make install  
Để module zaptel được nạp khi khởi động, chúng ta dùng lệnh  
# make config  
d) Libpri  
Thư viện libpri được sử dụng bởi rất nhiều nhà sản xuất các thiết bị dồn kênh phân  
chia thời gian TDM (Time Division Multiplexing), nhưng cho dù bạn không có một thiết  
bị phần cứng chuyên dụng nào thì bạn cũng nên cài thư viện này trước khi cài đặt Asterisk.  
Sau đây là các câu lệnh để cài đặt  
# cd /usr/src/libpri-version  
# make clean  
# make  
# make install  
e) Cài đặt Asterisk  
Đây là gói cài đặt chính của Asterisk, chứa toàn bộ các thư mục cần thiết cho việc xây  
dựng một tổng đài Asterisk hoàn thiện.  
# cd /usr/src/asterisk-version  
# make clean  
# ./configure  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 17  
Báo cáo NCKH 2008  
# make menuselect  
Phải chọn cài đặt các modules của Asterisk liên quan đến cơ sở dữ liệu bao gồm  
cdr_odbc, func_odbc, func_realtime,pbx_realtime, res_config_odbc, res_odbc.  
Để thực hiện chức năng lưu giữ voicemail trong cơ sở dữ liệu, chúng ta phải chọn  
ODBC_STORAGE trong Voicemail Build Options menu  
# make install  
Chạy lệnh dưới để tạo các tập tin cấu hình mặc định cho hệ thống như sip.conf,  
extensions.conf  
# make samples  
Chạy lệnh dưới để Asterisk tự chạy mỗi khi khởi động máy (bạn có thể làm hoặc  
không)  
# make config  
f) Asterisk Add-ons  
Đây là gói bắt buộc để sau này kết nối với CSDL MYSQL  
• Link download mã nguồn  
# cd asterisk-addons-version  
# make clean  
# make install  
# make samples  
# make config  
• Chú ý một lỗi khi cài đặt gói Addons đó là sau lệnh make install chúng ta sẽ thấy  
lỗi :  
“cp: cannot stat  
:No such file or directory”  
Chúng ta phải vào thư mục asterisk-ooh323c/.libs đổi tên file giống như tên trong  
câu báo lỗi. Sau khi đổi tên, chúng ta chạy lệnh #make install một lần nữa  
g) Asterisk Sounds  
Chúng ta download gói Extra Sound tại địa chỉ:  
m/pub/telephony/sounds/asterisk-extra-sounds-en-gsm-current.tar.gz sau đó giải nén  
vào thư mục /var/lib/asterisk/sounds  
Các lỗi mắc phải và cách xử lý  
• configure: error: no acceptable C compiler found in $PATH  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 18  
Báo cáo NCKH 2008  
Nếu bạn gặp phải lỗi này thì tức là bạn thiếu thư viện GCC. Các thư viện cần thiết khác  
o gcc  
o cpp  
o glibc-headers  
o glibc-devel  
o glibc-kernheaders  
Sử dụng lệnh yum install gcc để giải quyết vấn đề này  
• configure: error: C++ preprocessor "/lib/cpp" fails sanity check  
Sử dụng lệnh yum install gcc-c++ để giải quyết vấn đề này  
o gcc-c++  
o libstdc++-devel  
• configure: error: *** termcap support not found  
Sử dụng lệnh yum install libtermcap-devel để giải quyết vấn đề này  
o libtermcap-devel  
2. Cấu hình Card Digium TDM400P  
2.1 Lắp đặt phần cứng  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 19  
Báo cáo NCKH 2008  
• Ports được đánh số bao nhiêu thì tương ứng với module được đánh số đó.  
• Ví dụ Port1 tương ứng với module FXS 1, Port 3 tương đương với module FXO 3.  
• Các module được FXO và FXS là rời nhau và được tùy biến cắm vào card. Card tại  
trung tâm HPCC có 2 module. Module FXS cắm ở khe 1 ứng với port 1, Module  
FXO cắm ở khe 4 ứng với port 4. Cắm card vào khe PCI trên main, cắm nguồn  
tương tự nguồn ổ cứng vào phần Power Supply Connection.  
• Cắm điện thoại analog vào port FXS ( port 1) , cắm đường dây điện thoại vào port  
FXO (port Một ví dụ minh họa :  
Sinh viên thực hiện: Đào Quang Minh – K54B  
Page 20  
Tải về để xem bản đầy đủ
doc 37 trang yennguyen 21400 Free
Bạn đang xem 20 trang mẫu của tài liệu "Báo cáo Hệ thống cung cấp và tích hợp dịch vụ thông tin", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • docbao_cao_he_thong_cung_cap_va_tich_hop_dich_vu_thong_tin.doc