GIỚI THIỆU HỆ THỐNG ASTERISK
Tác giả: Nguyễn Thanh Phước
Giới thiệu chung
Asterisk là 1 phần mềm mã nguồn mở có tính năng tương đương như 1 tổng đài PBX. Với Asterisk, 1 chiếc máy tính PC chạy hệ điều hành Linux có thể trở thành 1 hệ thống điện thoại lớn.
Asterisk đem đến cho người sử dụng tất cả các tính năng và ứng dụng của hệ thống tổng đài PBX và cung cấp nhiều tính năng mà tổng đài PBX thông thường không có được, đó là sự kết hợp giữa chuyển mạch VOIP và chuyển mạch TDM, đó là khả năng mở rộng đáp ứng nhu cầu cho từng ứng dụng…
Asterisk là hệ thống chuyển mạch mềm, là phần mềm nguồn mở được viết bằng ngôn ngữ C chạy trên hệ điều hành linux thực hiện tất cả các tính năng của tổng đài PBX và hơn thế nữa. Asterisk ra đời vào năm 1999 bởi một chàng trai sinh năm 1977 tên là Mark Spencer, Anh ta viết phần mềm này ban đầu không ngoài mục đích hỗ trợ cho công ty của mình trong việc liên lạc đàm thoại hỗ trợ cộng đồng người sử dụng và phát triển Linux.
Asterisk là một PBX và nhiều hơn thế. Asterisk là một phần mềm mang tính cách mạng, tin cậy, mã nguồn mở và miễn phí mà biến một PC rẻ tiền thông thường chạy Linux thành một hệ thống điện thoại doanh nghiệp mạnh mẽ. Asterisk là một bộ công cụ mã nguồn mở cho các ứng dụng thoại và là một server xử lý cuộc gọi đầy đủ chức năng. Asterisk là một nền tảng tích hợp điện thoại vi tính hoá kiến trúc mở. Nhiều hệ thống Asterisk đã được cài đặt thành công trên khắp thế giới. Công nghệ Asterisk đang phục vụ cho nhiều doanh nghiệp.
Hiện nay Asterisk trên đà phát triển nhanh được rất nhiều doanh nghiệp triển khai ứng dụng cho công ty của mình. Đây là xu thế tất yếu của người sử dụng điện thoại, vì các công ty đều có mạng máy tính và cần liên lạc với nhau trong công việc giữa các phòng ban hoặc chi nhánh và cần một chi phí thấp thậm chí không phải tốn chi phí khi thực hiện các cuộc gọi trên mạng nội bộ của công ty.
Không gói gọn thông tin liên lạc trong công ty mà các ứng dụng giao tiếp với mạng PSTN hoặc mạng VOIP (như voice777) cho phép gọi ra bất cứ số điện thoại.
Ngoài ra việc tích hợp vào các ứng dụng như CRM và hệ thống Outlook làm cho khả năng ứng dụng của Asterisk linh hoạt hơn đáp ứng nhu cầu cần thiết cho người sử dụng điện thoại.
Asterisk thoạt đầu được phát triển trên GNU/Linux nền x86 (Intel), nhưng giờ đây nó cũng có thể biên dịch và chạy trên OpenBSD, FreeBSD và Mac OS X và Microsoft Windows
Cấu trúc và tính năng Asterisk
a. Cấu trúc của Asterisk
Asterisk có thể được coi là một phần trung gian ở giữa dùng để kết nối Ineternet và điện thoại hay các ứng dụng thoại. Các ứng dụng của Asterisk có thể kết nối bất cứ điện thoại, đường dây điện thoại hay gói tin thoại nào đến một dịch vụ hay giao diện khác. Asterisk có thể triển khai dễ dàng và tin cậy từ quy mô nhỏ đến rất lớn và hỗ trợ các ứng dụng dày đặc.
Asterisk hỗ trợ mọi khả năng có thể có của công nghệ telephony. Công nghệ này gồm có VoIP, SIP, H.323, IAX và MGCP (cho điện thoại và gateway). Asterisk có thể hợp tác hoạt động với hầu hết các thiết bị thoại tiêu chuẩn và các phần cứng kết nối với Asterisk thì có giá không cao. Asterisk hỗ trợ công nghệ điện thoại truyền thống như ISDN PRI và sóng mang T bao gồm cả T1 hay E1. Các ứng dụng thoại bao gồm gọi điện, hội thảo, voicemail, trả lời tự động và nhiều ứng dụng khác nữa.
Asterisk server kết nối với một mạng LAN có thể điều khiển điện thoại truyền thống. FXO và bo mạch giao diện sóng mang T từ Digium có thể kết nối một Asterisk server với mạng PSTN. Điều này cho phép các cuộc gọi có thể được gọi và được nhận từ mạng PSTN.
Các cuộc gọi có thể được chuyển giữa Asterisk server này với Asterisk server khác. Một điện thoại được điều khiển bởi một Asterisk server có thể chuyển sang Asterisk server khác và sau đó đi vào mạng PSTN.

Hình 4 1: Sơ đồ khối của Asterisk
Như hình trên ta có thể thấy, Asterisk bao gồm các cơ chế cho phép thực hiện các hàm chính. Khi Asterisk khởi động, bộ phận Dynamic Module Loader bắt đầu nhập và khởi tạo các driver. Các driver cung cấp các chi tiết điều khiển kênh, định dạng file, chi tiết cuộc gọi, mã hoá và giải mã và các ứng dụng.
Bộ phận Asterisk PBX Switching Core chấp nhận các cuộc gọi từ các giao diện. Bộ chuyển mạch lõi điều khiển cuộc gọi tuỳ theo các câu lệnh trong dial plan. PBX Switching Core dùng Application Launcher để gửi chuông, kết nối với voicemail, hay quay đến một đường nào đấy ra ngoài.
PBX Switching Core bao gồm một bộ Scheduler và I/O Manager, được sử dụng cho các driver và ứng dụng. Codec Translator kết nối các kênh một cách hoàn hảo và nén với nhiều luật nén khác nhau. Hầu hết tính mềm dẻo của Asterisk đến từ các ứng dụng, luật nén, điều khiển kênh, định dạng file và các tương tác với nhiều ứng dụng lập trình khác.
b. Tính năng của Asterisk
Ngoài những tính năng tương tự như tổng đài PBX, Asterisk còn có thêm nhiều tính năng khác mà chỉ có thể có được ở những tổng đài rất đắt tiền. Đó là các tính năng:
+ Voicemail Services with Directory
+ Conferencing Server
+ Packet Voice Server
+ Encryption of Telephone or Fax Calls
+ Heterogeneous Voice over IP gateway (H.323, SIP, MGCP, IAX)
+ Custom Interactive Voice Response (IVR) system
+ Soft switch
+ Number Translation
+ Calling Card Server
+ Predictive Dialer
+ Call Queuing with Remote Agents
+ Gateway and Aggregation for Legacy PBX systems
+ Remote Office or User Telephone Services
+ PBX long distance Gateway
+ Telemarketing Block
+ Standalone Voicemail System

Hình 4 2: Ví dụ về hệ thống Asterisk
+ Voicemail (hộp thư thoại)
Đây là tính năng cho phép hệ thống nhận các thông điệp tin nhắn thoại, mỗi máy điện thoại được khai báo trong hệ thống Asterisk cho phép khai báo thêm chức năng hộp thư thoại.
Mỗi khi số điện thoại bận hay ngoài “vùng phủ sóng” thì hệ thống asterisk định hướng trực tiếp các cuộc gọi đến hộp thư thoại tương ứng đã khai báo trước.
Voicemail cung cấp cho người sử dụng nhiều tính năng lựa chọn như : password xác nhận khi truy cập vào hộp thư thoại, gửi mail báo khi có thông điệp mới.
+ Call Forwarding (chuyển cuộc gọi)
Khi không ở nhà, hoặc đi công tác mà người sử dụng không muốn bỏ lỡ tất cả các cuộc gọi đến thì hãy nghĩ ngay đến tính năng chuyển cuộc gọi.
Đây là tính năng thường được sử dụng trong hệ thống Asterisk. Chức năng cho phép chuyển một cuộc gọi đến một hay nhiều số máy điện thoại được định trước.
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.
+ Caller ID (hiển thị số gọi)
Chức năng này rất hữu dụng khi một ai đó gọi đến và ta muốn biết chính xác là gọi từ đâu và trong một số trường hợp biết chắc họ là ai.
Ngoài ra Caller ID còn là chức năng cho phép chúng ta xác nhận số thuê bao gọi đến có nghĩa là dựa vào caller ID chúng ta có tiếp nhận hay không tiếp nhận cuộc gọi từ phía hệ thống Asterisk. Ngăn một số cuộc gọi ngoài ý muốn.
+ Automated attendant (chức năng IVR)
Chức năng tương tác thoại có rất nhiều ứng dụng trong thực tế, khi gọi điện thoại đến một cơ quan hay xí nghiệp thuê bao thường nghe thông điệp như “Xin chào mừng bạn đã gọi đến công ty chúng Tôi hãy nhấn phím 1 để gặp phòng kinh doanh, phím 2 gặp phòng kỹ thuật…” sau đó tuỳ vào sự tương tác của thuê bao gọi đến, hệ thống Asteisk sẽ định hướng cuộc gọi theo mong muốn.
Khi muốn xem điểm thi, muốn biết tiền cước điện thoại của thuê bao, muốn biết tỉ giá Đôla hiện nay như thế nào, hay kết quả sổ số … tất các những mong muốn trên đều có thể thực hiện qua chức năng tương tác thoại.
+ Time and Date
Vào từng thời gian cụ thể cuộc gọi sẽ định hướng đến một số điện thoại hay một chức năng cụ thể khác, ví dụ trong công ty giám đốc muốn chỉ cho phép nhân viên sử dụng máy điện thoại trong giờ hành chánh còn ngoài giờ thì sẽ hạn chế hay không cho phép gọi ra bên ngoài.
+ Call Parking
Đây là chức năng chuyển cuộc gọi có quản lý. Có một số điện thoại trung gian và hai thuê bao có thể gặp nhau khi thuê bao được gọi nhấn vào số điện thoại mà thuê bao chủ gọi đang chờ trên đó và từ đây có thể gặp nhau và đàm thoại.
+ 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
+ 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.
+ Backlist
Backlist cũng giống như Privacy Manager nhưng có một sự khác biệt là những máy điện thoại nằm trong danh sách sẽ không gọi được đến máy của mình (sử dụng trong tình trạng hay bị quấy rối điện thoại)
c. Các giao thức VoIP được Asterisk hỗ trợ
Asterisk hỗ trợ hai giao thức chuẩn và một giao thức dành riêng cho Asterisk
+ Inter-Asterisk Exchange (IAX)
IAX là giao thức chuẩn dành riêng cho Asterisk. Nó cung cấp hoạt động liên kết trong suốt với tường lửa NAT và PAT. Nó hỗ trợ việc thiết lập, nhận, chuyển cuộc gọi và đăng ký cuộc gọi. Với IAX, các điện thoại hoàn toàn cơ động. Chỉ cần kết nối điện thoại với Asterisk server bất cứ đâu trên mạng Internet, chúng sẽ đăng ký với PBX chủ và được định tuyến cuộc gọi ngay tức thì.
IAX có đoạn mào đầu rất nhỏ. Với bốn byte của mào đầu, so sánh với 12 byte mào đầu của SIP hay H.323, bản tin IAX có thể nói là nhỏ hơn rất nhiều.
IAX hỗ trợ xác thực đối với các cuộc gọi đến và đi. Asterisk cung cấp năm phương thức điều khiển truy nhập. Ta có thể giới hạn truy cập vào từng phần của dial plan.
+ Session Initiation Protocol (SIP)
SIP là chuẩn của IETF dành cho VoIP. Giao thức này đã được mô tả chi tiết ở phần trên. Cấu trúc điều khiển của SIP bao gồm cả SMTP, HTTP, FTP và các chuẩn khác của IETF. SIP chạy trên nền TCP/IP và điều khiển các phiên RTP (Real Time Protocol). RTP truyền dữ liệu với mỗi phiên của VoIP. SIP là một chuẩn thiết yếu của VoIP bới vì tính đơn giản của nó khi so sánh với các giao thức khác như H.323. Giao thức SIP trong Asterisk hỗ trợ tốt việc giao tiếp giữa các thiết bị của các nhà cung cấp khác nhau, trong đó có cả SNOM và Cisco.
+ H.323
H.323 là chuẩn ITU dành cho VoIP. Trong khi H.323 vẫn được sử dụng trong Asterisk thì ngày nay nó càng ngày càng ít được sử dụng. Nó đang dần được thay thế bằng các chuẩn hiện đại hơn như SIP và IAX.
d. Các định dạng file
Asterisk sử dụng nhiều file khác nhau để lưu trữ dữ liệu âm thanh bao gồm voicemail và music on hold. Asterisk hỗ trợ nhiều định dạng file và file âm thanh khác nhau. Các định dạng được hỗ trợ bao gồm:

Hình Error! No text of specified style in document. 3: Các định dạng file
Hệ thống quản lý file của Asterisk



+ Dialplan trong Asterisk:
Dialplan là trái tim của hệ thống asterisk. Dialplan cho biết các cuộc gọi sẽ được xử lý như thế nào qua hệ thống asterisk. Dialplan bao gồm tập hợp các dòng lệnh hay các ứng dụng theo một trình tự nào đó mà hệ thống phải thực hiện để đáp ứng nhu cầu chuyển mạch cuộc gọi. Để hiểu rõ và cấu hình thành công hệ thống asterisk thì điều kiện tiên quyết là phải biết như thế nào dialplan hoạt động.
Dialplan là công việc thiết lập cho hoạt động của hệ thống như định hướng các cuộc gọi vào và ra hệ thống, đó là một danh sách các bước hay các lệnh liên tục nhau để thực hiện một tác vụ nào đó mà hệ thống phải thực hiện theo. Khác biệt với các hệ thống điện thoại truyền thống tất cả các công việc cấu hình hệ thống đều là từ phía người sử dụng. Hệ thống chúng ta có hoàn chỉnh tốt hay không phụ thuộc rất nhiều vào việc chúng ta hiểu rõ vào dialplan hay không?.
Dialplan được cấu hình qua tập tin extension.conf, liên quan đến việc cấu hình dialplan có những khái niệm cần nắm đó là:
+ Extentions: Điện thoại nội bộ
+ Priorities: Thứ tự thực hiện
+ Applications: Các ứng dụng
+ Contexts: Các ngữ cảnh
Dialplan là một tập gồm nhiều extention, khi một cuộc gọi tương ứng với extention nào thì ứng dụng cho cuộc gọi đó sẽ được thực hiện. extention có thể đơn giản với một đích danh cụ thể như “101, softphone1” hay là một chuỗi so mẫu được thực hiện như “9xxx.”
Ví dụ:
exten=>101,1,dial(sip/softphone1,20)
exten=>101,2,hangup()
“exten=>” giống nhau cho mỗi dòng thực hiện trong dialplan, 101 là số điện thoại mà thuê bao quay hay còn gọi là số nội bộ(extention), còn các con số 1 và 2 là các priorites tức là thứ tự thực hiện các lệnh. Khi thuê bao quay số 101 thì đổ chuông máy điện thoại ip sip softphone1 nếu trong vòng 20 giây mà thuê bao không nhấc máy thì kết thúc cuộc gọi.
Extension là thành phần mà asterisk thực hiện theo, được kích hoạt khi có cuộc gọi vào extension chính là con số mà thuê bao đó cần gọi. Trong mỗi ngữ cảnh sẽ có thể có nhiều extension. Extenstion chính là hạt nhân để hệ thống xác định cuộc gọi cần thực hiện.
Mô hình thực hiện: sẽ đề cập chi tiết trong phần thực hành LAB.