7. Kết cấu của đề tài:
1.5.4. Một số tính năng cơ bản của Asterisk
1.5.4.1. Hộp thư thoại (Voicemail)
Đâ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 (Voice messages), mỗi số điện thoại 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 hoặc không liên lạc được thì tổng đài Asterisk sẽ đị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. Tin nhắn thoại sẽ được lưu trên hệ thống và sẽ được gửi tới email hoặc cảnh báo trên điện thoại.
Hộp thư thoại cung cấp cho người sử dụng nhiều tính năng lựa chọn như: xác nhận mật khẩu khi muốn truy cập vào hộp thư thoại, gửi email thông báo khi có tin nhắn thoại mới.
1.5.4.2. Chuyển hướng cuộc gọi (Call Forwarding)
Khi người sử dụng không có ở nhà hoặc đang đi công tác mà người dùng không muốn bỏ lỡ những cuộc gọi đến nhất là những cuộc gọi quan trọng 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ố diệ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.5.4.3. Hiển thị số đang gọi đến (Caller ID)
Chức năng này rất hữu dụng khi một ai đó gọi đến và người nghe 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 đang gọi đến, có nghĩa là dựa vào Caller ID chúng ta có thể tiếp nhận hay không tiếp nhận cuộc
gọi từ hệ thống Asterisk. Ngoài ra, với chức năng này chúng ta có thể ngăn ngừa một số cuộc gọi ngoài ý muốn.
1.5.4.4. Hội thoại (Conference Call)
Chức năng hội thoại cho phép nhiều người có thể cùng nhau trao đổi, nói chuyện với nhau, nơi mà mọi người cùng gọi đến để trao đổi, nói chuyện được gọi là phòng hội thoại (room). Asterisk cho phép tạo ra nhiều phòng hội thoại khác nhau tùy vào nhu cầu của người sử dụng.
1.5.4.5. Tổng đài trả lời tự động
Interactive Voice Response (IVR) hay Automated Attendant (AA) đều được dùng để chỉ chức năng tương tác thoại hay là hệ thống tổng đài trả lời tự động.
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 đến một cơ quan, xí nghiệp hay trường học người gọi thường được nghe những thông điệp như: “Xin chào mừng bạn đến với tổng đài dịch vụ của trường đại học XYZ, hãy nhấn phím 1 để gặp phòng đào tạo, phím 2 để gặp phòng công tác sinh viên …” sau đó tùy vào sự tương tác của người gọi đến Asterisk sẽ định hướng cuộc gọi theo mong muốn của người gọi đến.
1.5.4.6. Thời gian (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 đ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.
1.5.4.7. 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.
1.5.4.8. 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.
1.5.4.9. Quản lý cuộc gọi (Privacy Manager)
Khi một doanh nghiệp triển khai hệ thống Asterisk cho hệ thống điện thoại của mình nhưng lại không muốn nhân viên trong công ty của mình gọi ra ngoài trò chuyện với bạn bè hoặc thực hiện những cuộc gọi ra ngoài không cần thiết khác, khi đó Asterisk cung cấp một tính năng tiện dụng là chỉ cho phép số điện thoại được cấu hính chỉ được phép gọi đến một số số điện thoại nhất định nào đó, còn những số khônng có trong danh sách định sẵn thì sẽ không thực hiện được.
1.5.4.10. Backlist
Backlist cũng giống như Privacy Manager nhưng có một sự khác biệt là những số điện thoại có trong danh sách sẽ không thể gọi đến được máy của mình (thường được sử dụng trong trường hợp hay bị quấy rối).
1.5.4.11. Chi tiết cuộc gọi (Call Detail Records)
Asterisk giữ lại các dữ liệu chi tiết cuộc gọi đầy đủ. Chúng ta có thể chứa thông tin này trong một flat file hoặc tốt hơn là một database để lưu trữ và tra cứu hiệu quả. Sử dụng thông tin này chúng ta có thể giám sát sự sử dụng của hệ thống Asterisk hoặc có thể so sánh các dữ liệu này với hóa đơn mà công ty điện thoại gửi đến, cho phép chúng ta phân tích lưu lượng cuộc gọi.
1.5.4.12. Ghi âm cuộc gọi (Call Recording)
Asterisk đưa đến cho chúng ta khả năng để ghi âm cuộc gọi. Tính năng này được sử dụng để chứng minh nội dung cuộc gọi nào đó làm thỏa mãn một yêu cầu nào đó của khách hàng khi cần thiết cũng như khả năng giúp đỡ trong các trường hợp có liên quan đến pháp luật.
Và còn rất nhiều tính năng nữa mà hệ thống Asterisk có thể cung cấp cho người sử dụng, trên đây chỉ là một số tính năng thường được sử dụng mà thôi. Để biết nhiều hơn chi tiết các tính năng còn lại có thể tham khảo tại website chính của Asterisk tại địa chỉ: www.asterisk.org.
Lệnh Mô tả
dialplan showcontext_name Hiển thị cấu hình của context mà mình muốn
xem.
core restart now Khởi động lại Asterisk ngay lập tức.
core restart when convenient Khởi động lại Asterisk khi không có bất cứ
cuộc gọi nào được thiết lập.
core reload Cập nhật lại những file cấu hình của Asterisk.
core show applications Hiện thị những ứng dụng của Asterisk.
core show codecs Hiển thị những codec mà Asterisk hỗ trợ.
core show version Hiện thị thông tin về phiên bản của Asterisk.
sip show channels Hiển thị những channel
sip show peers Hiển thị những user đã đăng kí trong server.
sip show users Hiện thị tất cả user có trong hệ thống.
sip set debug on Mở chế độ hiển thị kiểm tra lỗi.
sip set debug off Tắt chế độ hiển thị kiểm tra lỗi.
sip reload Cập nhật lại file cấu hình sip.conf.
voicemail show users Hiển thị những user đã đăng kí voicemail.
1.5.7. Dial Plan
Dial Plan là trái tim thật sự của bất kì hệ thống Asterisk nào, nó định nghĩa Asterisk xử lý các cuộc gọi đến và đi như thế nào. Một cách ngắn gọn, nó chứa danh sách các lệnh hoặc các bước mà Asterisk sẽ làm theo. Không giống như hệ thông điện thoại analog truyền thống, Dial Plan của Asterisk có thể tùy biến hoàn toàn. Để hiểu và cài đặt hệ thống Asterisk thành công, điều thiết yếu nhất là phải hiểu được Dial Plan.
DialPlan của Asterisk được đặc tả trong file cấu hình “extensions.conf”. Dial Plan được tạo thành từ 4 phần chính: context, extensions, priority và application. Các thành phần này làm việc với nhau để tạo nên một Dial Plan.
File cấu hình “extensions.conf” được chia làm 3 phẩn:
[general] : Phần này đã được cấu hình sẵn.
[global] : Phần này định nghĩa những biến toàn cục và những giá trị khởi tạo ban đầu của nó.
Context và những extensions.
1.5.7.1. Context
Context được dùng để đặt tên cho một nhóm các extensions. Việc đặt tên này nhằm phân biệt context này với context khác trong sự tương tác lẫn nhau giữa chúng trong Dial Plan. Hai extensions giống nhau ở hai context khác nhau thì hoàn toàn tách biệt với nhau, trừ trường hợp có một sự tương tác đặc biệt được cho phép.
Ví dụ: Có hai Context là [mainmenu] và [submenu]. Trong hai context này đều có extensions là 200. Tuy nhiên extensions 200 trong [mainmenu] sẽ không phải là extensions 200 trong [submenu], đây là hai extensions hoàn toàn tách biệt, giống như hai người giống tên nhưng ở trong hai gia đình khác nhau.
Context được biểu thị bằng cách đặt tên nó trong ngoặc vuông [context]. Việc đặt tên này có thể sử dụng bất kì kí tự hay số nào.
1.5.7.2. Extensions
Extensions tượng trưng cho số điện thoại của người dùng nhưng khác với điện thoại analog truyền thống là extensions có thể biểu diễn bằng những kí tự, kí tự số hoặc kết hợp cả hai.
Cú pháp để thực hiện một tác vụ nào đó đối với extensions gồm có 3 thành phần chính:
Tên (Name) của extensions.
Độ ưu tiên (Priority) cho từng tác vụ của extensions.
Lệnh (Application) để thực hiện tác vụ. Ba thành phần này được cách nhau bởi dấu phẩy “,”.
Exten => name,priority,application() Ví dụ:
Exten => dung,1,Answer() Hoặc Exten => 200,1,Answer()
1.5.7.3. Priority
Mỗi extensions có thể thực hiện nhiều tác vụ, vì vậy priority (độ ưu tiên) được đặt ra là để thực thi các tác vụ một cách tuần tự. Mỗi độ ưu tiên thực thi một tác vụ cụ thể.
Lưu ý: Độ ưu tiên được đặt một cách tuần tự, không cách quãng. Nếu bỏ qua một độ ưu tiên nào đó trong thứ tự thì hệ thống Asterisk sẽ bỏ qua những tác vụ phía sau, dẫn đến hệ thống Asterisk sẽ không hoạt động được.
Ví dụ:
Exten => dung,1,Anwser() Exten => dung,2,Hangup()
Unnumbered Priorities: Trong phiên bản Asterisk mới, có thể dùng “n” thay cho số thứ tự để chỉ độ ưu tiên kế tiếp. Với cách này người viết không cần phải nhớ số thứ tự.
1.5.7.4. Application
Application (ứng dụng) gánh vác hầu hết toàn bộ công việc của Dial Plan. Mỗi ứng dụng thực hiện một tác vụ nào đó được chỉ ra trên extensions hiện hành như: Anwser (nghe máy), Hangup (gác máy), Playback (chơi nhạc)…
Trong vài ứng dụng, như Answer(), Hangup(), không cần các lệnh khác để thực hiện. Tuy nhiên, trong vài ứng dụng lại cần thêm các thông tin bổ xung. Các phần thông tin thêm vào đó được gọi là argument. Argument được đặt trong dấu ngoặc đơn “( )”, các argument phân biệt với nhau bằng dấu phẩy.
Ví dụ: Exten => dung,1,Anwser()
1.5.7.5. Biến trong Dial Plan
Trong Dial Plan có thể sử dụng biến để giảm đi nhữnghành động lặp đi lặp lại nhiều lần trong quá trình cấu hình, hoặc sử dụng biến sẽ làm cho dial plan trở nên mạch lạc, rõ ràng, sáng sủa hơn.
Có hai cách để truy cập đến một biến trong Dial Plan. Một là truy cập đến tên biến: cách này đơn giản chỉ là đánh tên của biến. Hai là truy cập đến giá trị của biến: cách này có cú pháp như sau : ${tên biến}.
Ví dụ: Nếu cần tạo một biến là “Test” có giá trị là SIP/200 thì khai báo như sau: Test=SIP/200. Vậy khi cần truy cập đến tên biến thì chỉ việc gõ tên biến là “Test”, khi cần truy cập tới giá trị SIP/200 của biến thì dùng ${Test}.
Ví dụ truyền biến vào trong Dial Plan: Exten => 200,1,Dial(${Test},20). Có hai loại biến thường dùng trong dial plan, đó là biến toàn cục (Global) và biến cục bộ (Channel).
Biến toàn cục (Global)
Biến toàn cục được sử dụng cho tất cả extensions, kể cả những extensions ở những context khác nhau. Biến toàn cục có thể sử dụng ở bất kì đâu trong dial plan.
Biến toàn cục thường được định nghĩa trong context [global] của file extensions.conf hoặc cũng có thể được định nghĩa trong những context khác bằng lệnh SetGlobalVar(). Ví dụ:[global] Test=SIP/200 Hoặc [incoming] Exten => 200,1,SetGlobalVar(Test=SIP/200) Biến cục bộ (Channel)
Biến cục bộ được sử dụng trong một phạm vi nhất định là một cuộc gọi riêng biệt. Biến cục bộ được định nghĩa chỉ trong khoảng thời gian mà cuộc gọi đó được thiết lập. Biến cục bộ được định nghĩa thông qua lệnh Set().
Ví dụ: Exten => 200,1,Set(Demo=123) Một số biến đặc biệt:
${CONTEXT}: giá trị trả về là Context hiện hành. ${EXTEN}: giá trịtrả về là Extensions hiện hành.
${EXTEN:n}: giá trịtrả về là Extensions hiện hành nhưng bỏ qua n Extensions đầu tiên.
${PRIORITY}: giá trị trả về là số Priority hiện hành.
${CALLERID}: giá trị trả về là Caller ID hiện hành (bao gồm cả tên và số). ${CALLERIDNUM}: giá trị trả về là số Caller ID hiện hành.
${CALLERIDNAME}: giá trị trả về là tên Caller ID hiện hành.
1.5.7.6. Pattern Matched
Pattern Matched là phương pháp dùng một số ký tự để đại diện cho các kí tự số từ 0 đến 9.
Kí tự đại diện Pattern Matched
[024-7] Đại diện cho các số trong phạm vi được chỉ ra. Ví dụ như
trong trường hợp này là các số 0, 2, 4, 5, 6 và 7.
X Đại diện cho tất cả các số từ 0 đến 9.Tương đương [0-9].
Z Đại diện cho các số từ 1 đến 9. Tương đương [1-9].
N Đại diện cho các số từ 2 đến 9. Tương đương [2-9]. Kí tự này thường được sử dụng trong mã vùng.
. Đại diện cho bất kì kí tự nào.
Lưu ý: Phải rất cẩn thận khi sử dụng kí tự “.” vì nó có thể làm cho Dial Plan hoạt động không giống với mong muốn của người quản trị. Không được đặt một extensions với Pattern Matched là “_.” vì nó có thể đại diện cho bất kể kí tự nào, kể cả những extensions đặc biệt (sẽ nói rõ hơn trong phần sau) như là s,i… Thay vì “_.” thì nên đặt là “_X.” thì nó sẽ không đại diện cho những extensions đặc biệt nhưng vẫn giữ được ý nghĩa đại diện giống như “_.”.
Cú pháp của Pattern Matched: Pattern Matched sẽ bắt đầu bằng kí tự “_” và tiếp sau đó là các kí tự đại diện hoặc các kí tự khác. Kí tự “_” sẽ thông báo cho tổng đài Asterisk biết rằng đây không phải là tên của một extensions mà là đại diện của một số extensions.
Ví dụ: Exten => _2XX,1,Anwser().
Ví dụ: Trong tổng đài Asterisk có 100 extensions từ 200 đến 299, và người quản trị phải cấu hình những extensions này trong Dial Plan như sau:
[local] Exten => 200,1,Anwser() Exten => 200,2,Dial(SIP/200,20) Exten => 200,3,Playback(welcome) Exten => 200,4,Hangup() Exten => 201,1,Anwser() Exten => 201,2,Dial(SIP/201,20) Exten => 201,3,Playback(welcome) Exten => 201,4,Hangup() … Exten => 299,1,Anwser() Exten => 299,2,Dial(SIP/299,20) Exten => 299,3,Playback(welcome) Exten => 299,4,Hangup()
Việc người quản trị phải cấu hình cho từng extensions như trường hợp trên sẽ gặp khó khăn và tốn nhiều thời gian cấu hình nếu như có sự bổ sung thêm nhiều extensions mới vào trong hệ thống hay vì lí do gì đó mà Dial Plan cần được sửa đổi Vì vậy mới thấy việc sử dụng Pattern Matched có lợi ích to lớn như thế nào. Thay vì phải cấu hình 100 extensions như ví dụ trên thì việc cấu hình đã trở nên rất đơn giản và dễ dàng:
Exten => _2XX,2,Dial(SIP/${EXTEN},20) Exten => _2XX,3,Playback(welcome) Exten => _2XX,4,Hangup()
1.5.7.7. Một số extensions đặc biệt.
Extensions Tên Mô tả
s Start Sử dụng khi không biết được số đang gọi đến tổng đài Asterisk.
i Invalid Sử dụng khi gọi tới một extensions không được định nghĩa trong context hiện hành.
h Hangup Sử dụng khi người gọi cúp máy.
t Time out Sử dụng khi người gọi không phản hồi trong thời gian cho phép
1.6. Tiểu kết
Những cơ cở lý thuyết nêu trên là những phần quan trọng, là những kiến thức được giảng dạy cũng như những kiến thức được tìm hiểu thêm. Chúng cùng với các kiến thức đã được tiếp thu trong suốt quá trình học sẽ là tiền đề để lấy nền tảng cho việc xây dựng hệ thống của chúng tôi ở chương 2.
CHƯƠNG 2: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG TỔNG ĐÀI 2.1. Về phần cứng
Máy tính phải có cấu hình từ CPU Intel Pentium 4 trở lên
Card âm thanh, loa, speaker.
RAM tối thiểu 1GB.
IP phone.
2.2. Về phần mềm
Máy tính chạy chương trình máy ảo VMWare để cài hệ điều hành CentOS 6 hoặc có thể cài trực tiếp trên máy.
Phần mềm mã nguồn mở Asterisk 11.2.1, kèm theo đó là phần mềm FreePBX 2.11.
Chương trình duyệt web như: Google Chrome, IE, Firefox….
Softphone: X-Lite 4.5.5 7.12.36 dành cho hệ điều hành Windows, hay trên các thiết bị điện thoại thông minh như 3CX (cho hệ điều hành iOS) hay CSipSimple (cho hệ điều hành Android)
2.3. Chức năng của hệ thống:
Cũng như đã giới thiệu ở phần đầu luận văn, hệ thống tổng đài cho phép các extension có thể gọi điện thoại cho nhau. Không dừng lại ở đó, người dùng có thể gọi điện thoại tới các số điện thoại thông thường. Từng tài khoản sẽ có một hộp thư thoại để lưu trữ các lời nhắn của người gọi đến khi không thể nghe máy.
Một trong những chức năng không thể thiếu của một tổng đài điện thoại đó chính là hệ thống trả lời tự động, khi gọi vào số điện thoại tổng đài, thuê bao gọi sẽ