ACD (Automatic Call Distribution): Phân phối cuộc gọi tự động. Đây là chức năng ứng dụng cho nhu cầu chăm sóc khách hàng hay nhận phản hổi từ phía khách hàng. Công ty có khả năng tiếp nhận cùng một lúc 10 cuộc gọi nhƣ thế cuộc gọi thứ 11 gọi đến thì hệ thống giải quyết nhƣ thế nào?. Bình thƣờng thì sẽ nghe tín hiệu bận nhƣng với chức năng phân phối cuộc gọi sẽ đƣa thuê bao đó vào hàng đợi để chờ trả lời, trong khi chờ trả lời cuộc gọi thuê bao có thể nghe những bài hát hay do asterisk cung cấp, trong lúc này nếu 1 trong mƣời số điện thoại trở về trạng thái rỗi thì cuộc gọi đang chờ sẽ đƣợc trả lời. Giống nhƣ chức năng của dịch vụ 1080 hay 116 của Bƣu Điện Thành Phố vậy.
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
3.6 Tổ chức thư mục của Asterisk
/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/.
/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ôngtin(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.
/var/lib/asterisk
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.
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 moh/. 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 đặ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.
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
/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 3.6 Cấu trúc cây thƣ mục
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ạora một thƣ mục con tƣơng ứng cho máy nội bộ đó tại thƣ mục voicemail/.
/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.
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
/var/log/asterisk/
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.
/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, hô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, hƣ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 đó.
3.7 Một số lệnh thao tác trên hệ thống asterisk
Asterisk có hai thành phần đƣợc xây dụng tích hợp với nhau và chạy song song nhau:
Asterisk Server bình thƣờng chạy ở chế độ nền(background) giống các sevices rong window.
Asterisk Client ở chế độ dòng lệnh CLI giao tiếp với Asterisk Server, thực thi các lệnh để kiểm tra, hay xem các thông tin của server.
Để Chạy và dừng Asterisk ở chế độ nền chúng ta thực hiện lệnh sau:
#/etc/init.d/asterisk (start|stop)
Một khi Asterisk đã chạy chúng ta có thể chuyển qua chế độ CLI từ dấu nhắc lệnh của linux nhƣ sau:
#asterisk –r
Khi vào chế độ lệnh nếu muốn thoát về lại dấu nhắc linux chúng ta dùng lệnh: CLI>exit
Các lệnh cơ bản thực hiện tại CLI>:
Bất cứ khi nào chỉnh sửa các tập tin cấu hình chúng ta đều cần phải nạp lại để các thay đổi có hiệu lực, điều đó thực hiện bằng lệnh:
#CLI>reload
Bật chế độ debug cho kênh thông tin SIP hoặc IAX2
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
#CLI> SIP debug
Tắt chế độ debug cho kênh thông tin SIP hoặc IAX2
#CLI> IAX2 no debug #CLI> SIP no debug
Hiển thị các trạng thái thông tin của users, peers và channels của SIP hoặc IAX2:
#CLI> sip show users
#CLI> sip show peers #CLI> sip show channels #CLI> iax2 show peers #CLI> iax2 show users #CLI> iax2 show channels
3.8 Cách thức cấu hình trên các tập tin cơ bản
Tất cả các file cấu hình cho hệ thống Asterisk đều nằm tại thƣ mục
etc/asterisk ngoại trừ file zaptel.conf cấu hình cho phần cứng TDM nằm tại thƣ mục
/etc. Cách thức cấu hình giống nhƣ tập tin .ini của Window. Các nội dung sau dấu chấm phảy “;”là nội dung chú thích trong file cấu hình. Tất cả các khoảng trắng trong file cấu hình đều đƣợc bỏ qua và không có ý nghĩa.Cú pháp thực hiện giống nhau
Trong file cấu hình còn có hai phép gán rất thƣờng xuyên đƣợc sử dụng, phép gán “=” là dùng cho việc gán các biến, còn phép gán “=>” dùng cho việc gán các đối tƣợng sau đây là một ví dụ cho file cấu hình:
Extension.conf
;
;Đây là các dòng chú thích ;
[section]
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
[section2]
Key=>object ; Gán giá trị cho đối tượng
Cú pháp thực hiện giống nhau cho tất cả các file cấu hình nhƣng có vài kiểu khác nhau cho mỗi file cầu hình dựa vào thức cách hoạt động của chúng.
3.9 Cách thức hoạt động của tập tin cấu hình
Có ba kiểu cách thức hoạt động của tập tin cấu hình nhƣ sau:
Simple Group
Có hiệu lực trên từng dòng trong file. Đây là kiểu cấu hình đơn giản nhất thƣờng sử dụng trong các file extention.conf, meetme.conf, voicemail.conf tƣơng ứng với mỗi dòng khai báo là một đối tƣợng có ý nghĩa trên dòng đó. Ví dụ:
Extention.conf
[section]
object1=> op1,op2,op3 object2=> op1b,op2b,op3b
Trong ví dụ trên mỗi dòng tƣơng ứng với các toán tử khác nhau object1 có các toán từ op1, op2, op3 trong khi đó object2 lại có các toán từ op1b, op2b, op3b.
Option inheritance
Đây là cấu hình kiểu thừa kế thƣờng đƣợc cấu hình trong các file zapata.conf, agent.conf. với kiểu cấu hình này thì các dòng phía dƣới có thể thừa kế các thông số dòng phía trên, tƣơng ứng với mỗi section các dòng phía dƣới có thể thay đổi các thông số cho tƣơng ứng.
Ví dụ: Extention.conf [section] Op1=bas Op2=adv Object1=>1 Op1=int Object1=>2
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
Với cấu hình trên có thể giải thích nhƣ sau object1=>1 thừa hƣởng hai thông số ở phía trên đó là op1=bas và op2=adv trong khi đó đối với object1=>2 với thông số op1=int đƣợc khai báo lại nên object1=>2 đƣợc thừa kế từ hai thông số op1=int và op2=adv.
Complex Entity
Với cấu kiểu này đƣợc tổ chức thành nhiều entity, ứng với mỗi entity có nhiều thông số đƣợc khai báo, mỗi entity ở đây chính là các section để khai báo các kênh thông tin. Cấu hình thƣờng đƣợc sử dụng trong các file iax.conf, sip.conf. Ví dụ: Extention.conf [entity1] Op1=value1 Op2=value2 [entity2] Op1=value3 Op2=value4
Entity1 có các giá trị value1 và value2 cho thông số op1 và op2, trong khi đó cũng là thông số op1 và op 2 nhƣng có các giá trị khác là value3 và value4 cho entity2.
3.10 Tập tin cấu hình
3.10.1 Giới thiệu dialplan
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ừ
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
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. Extentions
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ƣ 8051, letoan hay là một chuỗi so mẫu đƣợc thực hiện nhƣ _9xxx. Ví dụ :
/etc/asterisk/extention.conf
exten=>8051,1,dial(sip/8051,20) exten=>8051,2,hangup()
“exten=>” giống nhau cho mỗi dòng thực hiện trong dialplan, 8051 là số điện thoại mà thuê bao quay hay là 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ố 8051 thì đỗ chuông máy ip sip 8051 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. Extenstion hoàn chỉnh gồm có các phần :
exten => Name,priority,application( )
Name (Tên ký tự hoặc con số) của extension.
Priority (Mỗi extension có thể bao gồm nhiều bƣớc mỗi bƣớc đƣợc gọi là“priority”).
Application (or command) Thực hiện một ứng dụng cụ thể nào đó cho cuộc gọi.
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
Một extensionnum có nhiều dạng nhƣ sau: Một ví dụ cụ thể nhƣ sau:
/etc/asterisk/extention.conf
exten => 7325010,1,Dial(Zap/1,20)
exten => 7325010,2,Voicemail(u7325010)
exten => Tƣơng ứng với mỗi ứng dụng thực hiện
7325010 là con số nhận đƣợc khi thuê bao chủ gọi quay số. 1, 2 là các “priority” thứ tự đƣợc thực hiện 1 rồi tới 2…
Trong ví dụ của chúng ta con số 7325010 sẽ đƣợc gửi đến kênh zap/1 rung chuông tối đa 20 giây. Nếu sau 20 giây không trả lời thì cuộc gọi sẽ đƣợc định hƣớng đến hộp thƣ thoại u7325010 chữ u ở đây có nghĩa là “ 'u'navailable message”.
Priorities – Thứ tự thực hiện
Priorities là thứ tự thực hiện các ứng dụng trong dialplan, khi thứ tự “1” đƣợc thực hiện thì kế tiếp là ứng dụng tại thứ tự số “2” đƣợc thực hiện, kể từ vertion 1.2 của Asterisk thay vì sử dụng gán một con số cụ thể cho thứ tự thực hiện nhƣ trên thì ở đây có thể gán ký tự “n” cho mọi dòng “exten=>” điều này sẽ nói với asterisk là ứng dụng với thứ tự tiếp theo sẽ thực hiện.
Ví dụ:
/etc/asterisk/extention.conf
exten=>8051,2,hangup()
exten=>8051,1,dial(sip/8051,20)
Ở ví dụ trên dòng có thứ tự “2” đứng trƣớc dòng có thứ tự “1”, nhƣng khi thực hiện diaplan thì dòng có thứ tự Priorities “1” ƣu tiên thực hiện trƣớc bất kể thứ tự sắp xếp nhƣ thế nào.
Aplications – Các hàm ứng dụng
Đây là phần quan trọng trong diaplan tức là ứng dụng nào sẽ đƣợc thực hiện trên mỗi dòng, các ứng dụng nhƣ thực hiện quay số,trả lời cuộc gọi hay đơn giản là nhấc gác máy để biết thêm thông tin về các ứng dụng cũng nhƣ các thông số kèm
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk
theo thì hãy dùng lệnh show Aplications trên giao tiếp dòng lệnh của asterisk: CLI>
show Aplications
Contexts - Ngữ cảnh
Đầu tiên hãy hình dung nhƣ thế này, khi Cô Giáo và Sinh Viên trao đổi về môn cơ sở tin học viễn thông có nghĩa là ngữ cảnh(context) lúc này chỉ tập trung vào lĩnh vực viễn thông mà thôi. Nhƣ vậy ngữ cảnh (context) đã đƣợc giới hạn trong một tình huống cụ thể, đối với Asterisk ở đây cũng thế khi nói đến ngữ cảnh (context) thì thƣờng quan tâm đến trƣờng hợp cụ thể nào đó, điều này rõ ràng rằng trong hệ thống sẽ có rất nhiều ngữ cảnh(context) khác nhau. Ví dụ khi gọi đến tổng đài Asterisk có một thông điệp thông báo nhƣ sau “Chào mừng các 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…” khi ngƣời gọi chọn phím 1 thì hệ thống sẽ chuyển đến một ngữ cảnh (context) là [PhongKinhDoanh] khi ngƣời gọi nhấn phím 2 thì hệ thống sẽ định hƣớng cuộc gọi qua ngữ cảnh (context) [PhongKyThuat] nhƣ vậy ứng với mỗi trƣờng hợp hệ thống sẽ có ngữ cảnh khác nhau, ngữ cảnh đƣợc đặt trong dấu []. Ví dụ: /etc/asterisk/extention.conf [PhongKinhDoanh] exten => 7325010,1,Dial(SIP/${EXTEN}),20) exten => 7325010,2,Voicemail(u${EXTEN}) [PhongKyThuat] exten => _9.,1,Dial(SIP/${EXTEN})
Ngoài ta đối với việc cấu hình cho các kênh thoại thì ngữ cảnh ở đây là việc xử lý các cuộc gọi tƣơng ứng với kênh đó qua kế hoạch diaplan.
/etc/asterisk/sip.conf [8051] Type=friend Context=Tu_SIP ……… [8052]
Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk Type=friend Context=noibo ……… /etc/asterisk/extention.conf [noibo] exten=>8051,1,dial(sip/8051,20) exten=>8051,2,hangup() [Tu_SIP] exten=>8052,1,dial(sip/8052,20) exten=>8052,2,hangup()
Khi thuê bao 8052 nhấc máy thì Asterisk chuyển cuộc gọi này đến ngữ cảnh [noibo] và chờ nhận con số quay, nếu thuê bao 8052 quay số 8051 thì số máy 8051 sẽ rung chuông trong vòng 20 giây, nếu qua 20 giây mà thuê bao 8051 không nhấc máy thì cuộc gọi sẽ kết thúc. Khi thuê bao 8051 nhấc máy thì Asterisk chuyển cuộc gọi này đến ngữ cảnh [Tu_SIP] và chờ nhận con số quay, nếu thuê bao 8051 quay số 8052 thì số máy 8052 sẽ rung chuông trong vòng 20 giây, nếu qua 20 giây mà thuê bao 8052 không nhấc máy thì cuộc gọi sẽ kết thúc.
Chúng ta có thể gọi một ngữ cảnh khác từ ngữ cảnh hiện tại bằng cách dùng cú pháp:
include =>other_context
Ví dụ chúng ta có một ngữ cảnh tên là [mycontext].Nếu chúng ta muốn [mycontext] bao gồm cả ngữ cảnh [default] đã tồn tại từ trƣớc, chúng ta thêm các dòng sau trong tập tin extensions.conf:
[mycontext]