TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 12(73).2013, Quyển 2
70
TỐI ƯU HÓA CÔNGC THÔNG TIN NỘI BỘ BẰNG CÁCH TRIỂN KHAI
HỆ THỐNG ASTERISK VÀ XÂY DỰNG MỘT SỐ MODULE
OPTIMIZING INTERNAL COMMUNICATION USING ASTERISK SYSTEM
AND BUILDING SOME MODULES
Phạm Hồ Trọng Nguyên
Trường Cao đẳng Công nghệ Thông tin, Đại học Đà Nẵng
Email: trongnguyen@live.com
TÓM TẮT
Hiện nay, việc triển khai sử dụng hthống tổng đài nội bộ đang dần trở thành một nhu cầu thiết yếu
cho hoạt động thông tin liên lạc của các tổ chức trên toàn thế giới. Có thể dễ dàng thấy được điều này do lợi ích
to lớn về công sức quản lý, chi phí điều hành, thực thi các chính sách bảo mật, thiết lập và quản lý cơ sở dữ liệu
người dùng một cách linh hoạt, triển khai các dịch vụ kèm theo một cách đa dạng. Do vậy, việc xây dựng các
module linh hoạt đáp ứng cho nhiều nhu cầu đa dạng nhằm tối ưu hóa các công tác ở trên thực sự cần thiết.
Bài báo này trình bày về việc xây dựng một số module như vậy trên nền tảng asterisk nhằm mang lại sự tiện lợi
hơn cho việc sử dụng của người dùng.
Từ khóa: asterisk; tổng đài nội bộ; tối ưu hóa; module; thông tin liên lạc
ABSTRACT
At the present, the deploying and using internal telephone exchange system are becoming essential
demands for communicating operation of many organizations all over the world. This reality is easy for us to
observe because of its big benefits of management effort, running cost, executing security policy, establishing and
managing database of user flexibly, implementing multi attached services. Therefore, building flexible modules for
satisfying a lot of various demands to optimize tasks mentioned above is really necessary. This article presents
the ways to build some modules like that on the asterisk platform and to bring more conveniences for the user’s
communication activity as well as administrators.
Key words: asterisk; internal telephone exchange; optimizing; module; communicating
1. Đặt vấn đề
Ngày nay, với sự tiến bộ vượt bậc của
công nghệ thông tin, ngày càng nhiều ứng
dụng giải pháp được đưa vào cuộc sống để
đáp ứng các nhu cầu đa dạng của con người.
Trong các yêu cầu đặc thù, sự hỗ trợ của công
nghệ đóng vai trò tiên quyết trong việc gia tăng
năng suất lao động giảm thiểu hao phí cho
con người. Riêng với lĩnh vực mạng, đặc biệt
sự cải tiến liên tục của VOIP đã góp phần giúp
các tổ chức, hệ thống lớn linh hoạt hơn trong
việc lựa chọn giải pháp cho nhu cầu thông tin
liên lạc nội bộ i chung c bài toán biệt
nói riêng. Điều này cho thấy, công nghệ thông
tin gắn liền với hoạt động của tổ chức trở thành
một nhu cầu tất yếu, phù hợp với xu thế phát
triển chung của hội. Với vị thế một trường
chuyên về công nghệ thông tin, định hướng xây
dựng và phát triển trường thành một trong những
đơn vị hàng đầu trong việc ứng dụng công nghệ
vào quy trình hoạt động một động thái tích
cực cần thiết cho sự phát triển của trường nói
riêng và Đại học Đà Nẵng nói chung.
Tại Việt Nam, lĩnh vực VOIP từ lâu đã trở
nên quen thuộc với nhiều tổ chức, đơn vị lớn với
mục tiêu hướng đến tốc độ, gọn nhẹ, đơn giản
trong việc xây dựng, duy trì vận hành hệ
thống liên lạc nội bộ. Ta thể thấy điều này
khi thử so sánh đơn giản với một hệ thống dùng
nhiều đầu điện thoại cố định, quản phân tán,
không bảo mật, tốn kém với một hệ thống quản
tập trung, bảo mật, tiết kiệm chi phí do hoạt
động trên kết nối internet [1]. Asterisk, từ lâu đã
nổi lên như một lựa chọn phù hợp cho các tổ
chức với các ưu điểm như trên. Do vậy, trong bài
báo này sẽ đề cập đến việc xây dựng, thay thế hệ
thống liên lạc hiện tại bằng tổng đài Asterisk,
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 12(73).2013, Quyển 2
71
đồng thời xây dựng một số module đặc trưng đ
phục vụ cho công tác liên lạc được hoàn thiện
hơn.
2. Kết quả nghiên cứu và khảo sát
2.1. Sử dụng nền tảng asterisk để xây dựng các
tổng đài
Asterisk là phần mềm thực hiện chức năng
của một tổng đài PBX (Private Branch Exchange
Tổng đài nhánh nhân) giúp các máy điện
thoại trong cùng một công ty, cơ quan, cùng một
vùng… - gọi chung là các máy nội bộ kết nối với
nhau kết nối với các mạng khác như mạng
điện thoại công cộng PSTN hay VoIP.
Asterisk được thiết kế dưới dạng các
module riêng rẽ nên dễ khắc phục lỗi dễ mở
rộng. Ngoài ra, Asterisk cũng có thể tích hợp với
những phần mềm ứng dụng khác để đáp ng
được nhu cầu của người sử dụng với giá thành
thấp, chất lượng dịch vụ tốt.
Khi mới ra đời, Asterisk được viết bằng
ngôn ngữ C và chỉ được triển khai trên Linux [2]
Nhưng hiện nay, Asterisk đã có thể chạy trên các
hệ điều hành khác như Mac OS X, Free BDS,
Open BDS và Windowns.
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 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 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 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 các ứng dụng giao tiếp với mạng
PSTN hoặc mạng VoIP cho phép gọi ra bất cứ s
điện thoại nào trên mạng PSTN. Ngoài ra,
việc tích hợp vào các ứng dụng như CRM hệ
thống Outlook làm cho khả năng ứng dụng của
Asterisk linh hoạt hơn, đáp ứng được nhu cầu
cần thiết cho người sử dụng điện thoại. Thoạt
đầu Asterisk được phát triển trên GNU/Linux
nền x86 (Intel), nhưng giờ đây cũng thể
biên dịch và chạy trên OpenBDS, FreeBDS, Mac
OS X và Microsoft Windows.
2.2. Sử dụng các chức năng của asterisk để xây
dựng module
Như đã giới thiệu ở trên, trong bài báo này
ta sẽ triển khai hệ thống asterisk phiên bản 1.8
trên nền Centos 5, trên cơ sở đó xây dựng một số
module liên quan để tối ưu hóa công tác thông
tin liên lạc của tổ chức. Trong khuôn khổ hạn
của i báo, tác giả sẽ đề cập chủ yếu cách thức
xây dựng 2 module đặc thù hỗ trợ đó là:
- Module nhắc việc từ tổng đài;
- Module IVR, tạo tổng đài trả lời
tổ chức cuộc họp tức thì.
Với hệ thống asterisk, dial plan chính trái
tim của mọi hành động. quy định cách tổng
đài xử các truy vấn, quy trình xử các cuộc
gọi và nhu cầu cá biệt của user Tiếp theo, ta sẽ
lên phương án cho hai modulei trên.
3. Đề xuất giải pháp
3.1. Module nhắc việc tự động
3.1.1. Đặt vấn đề
Xuất phát từ nhu cầu thực tế người
dùng muốn chức năng nhắc việc tự động từ tổng
đài, nghĩa sau khi gọi với pháp nhất định
thì đúng thời gian đã quy định từ người dùng,
tổng đài sẽ tự gọi đến để nhắc việc.
3.1.2. Giải quyết vấn đề
Với hệ thống asterisk, sau khi đã kịch
bản phù hợp, điều cần làm tiếp theo tác động
vào file extension.conf nằm trong /etc/asterisk
[3]. Ta thực hiện như sau:
[hen-gio-bao-thuc]
exten =>
_*09*XXXXXXXXXXXX,1,Answer() ;
${EXTEN} ;nam - thang -ngay - gio - phut,so
exten =>
_*09*XXXXXXXXXXXX,n,Set(year=${EXTE
N:4:4}) ; set bien year
exten =>
_*09*XXXXXXXXXXXX,n,Set(month=${EX
TEN:8:2}) ; set bien month
exten =>
_*09*XXXXXXXXXXXX,n,Set(day=${EXTE
N:10:2}) ; set day
exten =>
_*09*XXXXXXXXXXXX,n,Set(hours=${EXT
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 12(73).2013, Quyển 2
72
EN:12:2}) ;set gio
exten =>
_*09*XXXXXXXXXXXX,n,Set(minutes=${E
XTEN:14:2}) ;set minutes
;tao file *.call
exten =>
_*09*XXXXXXXXXXXX,n,System(echo -e
"Channel: SIP/${CALLERID(num)}\\nCallerid:
bao-thuc <090>\\nContext: bao-
thuc\\nExtension: 10" >
/tmp/${UNIQUEID}.call)
exten =>
_*09*XXXXXXXXXXXX,n,System(touch -t
${year}${month}${day}${hours}${minutes}
/tmp/${UNIQUEID}.call) ; sua ngay gio tao file
exten =>
_*09*XXXXXXXXXXXX,n,System(mv
/tmp/${UNIQUEID}.call
/var/spool/asterisk/outgoing/) ;move file call =>
outgoing
exten =>
_*09*XXXXXXXXXXXX,n,Playback(rqsted-
wakeup-for) ;da lam xong
exten =>
_*09*XXXXXXXXXXXX,n,SayNumber($hours)
exten =>
_*09*XXXXXXXXXXXX,n,SayNumber($min
utes)
exten =>
_*09*XXXXXXXXXXXX,n,Hangup()
Khi 1 user nhu cầu nhắc việc, user sẽ
nhắn tin đến tổng đài với pháp
_*09*XXXXXXXXXXXX trong đó các
XXXXXXXXXXXX với độ dài 12 tự là
chuỗi năm-4 tự, tháng-2 tự, ngày-2 tự,
giờ-2 ký tự, phút-2 tự. Khi request được gửi
đến, server sẽ tự tạo ra một file.cal gửi vào
thư mục /var/spool/asterisk/outgoing sẽ tạo
cuộc gọi đến user theo thời gian của file được
tạo ra. Nhưng ở đây có một vấn đề, thời điểm mà
file được tạo ra chính thời điểm user gửi
request đến hệ thống, nhưng thời điểm cần nhắc
việc lại nằm trong tương lai, do vậy ta thực hiện
thêm một bước nữa set lại created-time của
file thông qua đoạn code:
Exten=>_*09*XXXXXXXXXXXX,n,Sys
tem(touch-t
${year}${month}${day}${hours}${minutes}
/tmp/${UNIQUEID}.call)
3.1.3. Kết quả
Đúng ngày giờ theo tin nhắn của user gửi
đến tổng đài, một cuộc gọi sẽ được thực hiện từ
tổng đài để nhắc việc cho user, nội dung cuộc
gọi sẽ được thực hiện tự động bằng việc đọc thời
gian lúc đó cho user nghe.
3.2. Module tổng đài trả lời tích hợp phòng họp
ảo
3.2.1. Đặt vấn đề
Xuất phát từ nhu cầu thực tế về một tổng
đài trả lời tự động, giới thiệu hướng cuộc
gọi của người dùng đến các phòng chức năng
tích hợp một phòng họp ảo để phục vụ công tác.
3.2.2. Giải quyết vấn đề
[IVR-menu]
; audio phat thong bao
;------------------------------
;1 -> quay 100
;2 -> quay 101
;3 -> conference 88888
;4 -> cup may
;-----------------------------
exten => 1811,1,Answer()
exten =>
1811,n,Background(/srv/welcome) ;audio phat
thong bao
exten => 1811,n,WaitExten(20); cho
client nhap lua chon, trong 20 s k bam se timeout
exten => 1,1,Answer()
exten => 1,n,Dial(SIP/100,45) ; bam 1
quay so 100 trong 45s
exten => 1,n,hangup()
exten => 2,1,Answer()
exten => 2,n,Dial(SIP/101,45) ; bam 2
quay so 101 trong 45s
exten => 2,n,Hangup()exten =>
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 12(73).2013, Quyển 2
73
3,1,Answer()
exten => 3,n,MeetMe(8888,,) ;=> goi
phong 8888;
exten => 3,n,hangup()
exten => 4,1,hangup()
exten => t,1,Playback(het-gio) ;het gio
khong bam
exten => t,n,hangup()
exten => i,1,playback(bam-sai) ;bam sai
exten => i,n,hangup()
User gọi đến tổng đài theo số 1811, đầu
tiên sẽ nghe thông báo. Tùy theo nhu cầu của
đơn vị sử dụng đây thể một đoạn giới
thiệu, hoặc đưa ra các lựa chọn về số cụ thể.
Trong trường hợp này, sau khi nghe thông báo
user sẽ có các lựa chọn như nhấn phím 1 để gọi
đến extension 101, phím 2 để gọi đến extension
102, phím 3 để tham gia vào phòng họp ảo với
8888 (ở đây, các số lẻ như 101, 102, room
8888 những extension đã được tạo trước trên
server) hoặc nhấn phím 4 để kết thúc cuộc gọi.
Nếu sau 20s user không thực hiện lựa chọn từ
khi gọi đến tổng đài, cuộc gọi sẽ bị hủy bỏ.
3.2.3. Kết quả
Với module này 2, 3 hoặc nhiều user
thể cùng gọi vào phòng 8888 để cùng nói
chuyện, liên lạc với nhau tạo phòng họp
“nóng” ngay bất cứ khi nào nhu cầu, cùng
tiện lợi hữu ích. Ngoài ra, user còn thể
nhấn các phím lẻ để kết nối ngay đến các phòng
ban cụ thể, không cần ghi nhớ nhiều số cố
định trong máy.
4. Thực nghiệm đánh giá
Để những kết quả thực tế trong việc
triển khai và sử dụng hai module nói trên, tác giả
đã thử nghiệm tại Trường Cao đẳng Công nghệ
Thông tin, Đại học Đà Nẵng với dliệu thực tế
thông tin về các phòng ban, số lượng người
dùng trên từng phòng, nhu cầu thực tế về hội
họp của đơn vị. Kết quả thu được rất khả quan,
tổng đài đáp ứng nhanh và tức thì các yêu cầu từ
người dùng, chất lượng thoại tốt, ít nghẽn và
tiếng ồn. Đây bằng chứng cho thấy sự ưu việt
của giải pháp mà bài báo đề ra. Để cụ thể hơn, ta
có thể so sánh đánh giá với các hệ thống đang có
như sau:
- Với hệ thống truyền thống, trường có
khoảng 10 điện thoại cố định tương ứng với các
khoa, các phòng ban với các số khác nhau, chi
phí hàng tháng phải trả cho nhà mạng là rất lớn.
- Với hệ thống mới, chcần đầu cho 10
IP phone với giá khoảng 1 triệu đồng/ 1 IP
phone, 1 card chuyển mạch để quay số lẻ đến
các phòng ban khi từ ngoài gọi vào, tận dụng
kết nối internet sẵn, hàng tháng chi phí phải
đóng chỉ còn là cước internet, như vậy, giải pháp
này vô cùng kinh tế.
Hình 1. Hình ảnh triển khai mô hình hệ thống
5. Kết luận
Với tổng đài asterisk, việc ứng dụng
triển khai trong thực tế để giải quyết các bài toán
cụ thể của tổ chức, doanh nghiệp mang lại nhiều
lợi ích to lớn. Lợi ích lớn nhất có thể kể ra chính
lợi ích kinh tế. Thay vì phải trả một khoản phí
lớn cho các thuê bao điện thoại cố định hàng
tháng thì nay, mọi hoạt động liên lạc đều được
thực hiện trên kết nối internet. Nếu muốn đảm
bảo chất lượng của tổng đài, ta chỉ việc đầu
một khoản nhỏ cho việc nâng băng thông của kết
nối internet, ngoài ra chỉ tốn một khoản đầu
ban đầu cho hệ thống phần cứng của tổng đài, số
chi phí này đếu so sánh với cước phí viễn thông
hàng tháng trong tầm nhìn dài hạn thì cùng
khác biệt.
Hơn nữa, không chỉ dừng lại vấn đề
kinh tế, hoạt động thông tin liên lạc của tổ chức
cũng được cải thiện rệt. Thay người dùng
phải lưu rất nhiều số của các phòng, ban… thì
nay chỉ cần gọi đến tổng đài và nhấn số lẻ để kết
TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 12(73).2013, Quyển 2
74
nối trực tiếp đến. Ngoài ra, việc tích hợp phòng
họp ảo vào tổng đài trả lời tự động cũng giúp ích
cho bộ phận điều hành trong việc tổ chức các
cuộc gặp tức thời, không phụ thuộc vào địa điểm
của các nhân viên, chcần chủ động tạo
quản lý phòng họp ảo trên tổng đài vào bất cứ
thời điểm nào, rất dễ dàng và tiện lợi.
Trong khuôn khổ bài báo nhỏ, việc thiếu
sót điều không thể tránh khỏi. Mặt khác, với
sự giới hạn của phạm vi bài báo, thật khó để đưa
ra nhiều hơn các module hữu ích khác do tác giả
nghiên cứu xây dựng, rất mong sự đóng góp
quan tâm của các chuyên gia kinh nghiệm
trong lĩnh vực này để việc nghiên cứu ng
dụng tổng đài số nhằm tối ưu hóa công việc
được mạnh mẽ và sâu rộng hơn.
TÀI LIỆU THAM KHẢO
[1] Tổng đài IP, http://vi.wikipedia.org/Tổng_đài_IP
[2] Asterisk PBX, http://vi.wikipedia.org/wiki/Asterisk_(PBX)
[3] Jim Van Meggelen, Leif Madsen, Jared Smith, “Asterisk: The future of technology”, O’Reilly,
2007.
(BBT nhận bài: 23/09/2013, phản biện xong: 21/12/2013)