5.2.7.a. Giới thiệu
Chức năng hội thọai cho phép nhiều người có thể cùng nhau trao đổi, nơi mà mọi người cùng gọi đến để đàm thoại gọi là phòng hội thoại . Asterisk cho phép tạo ra nhiều phòng hội thoại tùy vào nhu cầu sử dụng . Trong hệ thống điện thoại truyền
thống PSTN để có thể sử dụng được tính năng này chúng ta phải trả tiền, còn đối với
5.2.7.b. Cấu hình
Để cấu hình thực hiện một phòng hội thoại chúng ta lần lượt cấu hình như sau :
• Tạo ra phòng hội thoại “room” trong tập tin cấu hình meetme.conf . Khi chúng ta mở
tập tin này, chúng ta có thể thấy như sau
;
; configuration file for MeetMe simple conference rooms ;
[room] ;
; Usage is conf => confno[,pin] ; conf => 1234
; conf => 2345,9938
• Khai báo phòng hội thoại “room” trong kế hoạch quay số để cho mọi người có thể
gọi đến.
Tạo phòng hội thoại “room”
Để tạo phòng hội thoại “room” chúng ta khai báo trong tập tin meetme.conf theo cú pháp sau :
conf => conference_number[,pin][,adminpin]
trong đó :
- conf=> là từ khóa để tạo phòng hội thoại.
- conference_number: con số đặt tên cho phòng hội thoại, thuê bao gọi con số này để được vào phòng hội thoại
- pin: mật khẩu nhận dạng đăng nhập, thuê bao muốn vào phòng hội thoại phải
nhậpđúng mật khẩu này.
- adminpin: mật khẩu quản trị phòng hội thoại , khi thuê bao nhập đúng mật
khẩu này thì có thể quản trị được hệ thống phòng hội thoại như khóa phòng chẳng hạn.
Ví dụ:
• khai báo phòng hội thoại trong tập tin meetme.conf : [rooms]
;hội thoại của phòng kinh doanh conf => 2000,123456
;hội thoại của phòng kỷ thuật có adminpin là 1111 conf = >2001,2222,1111
Để tiếp nhận các cuộc gọi hội thoại chúng ta dùng hàm ứng dụng MeetMe() trong kế
hoạch quay số
Cú pháp :
MeetMe([confno][,[option][,pin]])
trong đó:
• confno: con số của phòng hội thoại, nếu thông số này không khai báo thì khi đăng nhập hệ thống sẽ yêu cầu nhập vào.
• pin: số mật khẩu đăng nhập .
• options: là thông số lựa chọn không có hoặc có nhiều thông số kết hợp với
nhau để xác định một số chức năng hoạt động của phòng hội thoại, các chức năng có thể liệt kê ra như sau:
Tham
số Chức năng
m Người tham gia hội thoại chỉ nghe, không được nói chuyện . t Người hội thoại chỉ nói không được nghe .
i Phát thông báo có người kết nối hay rời khỏi phòng
p User có thể rời khỏi phòng hội thoại bằng cách nhấn phím #
X
User có thể thoát khỏi phòng hội thoại bằng cách nhập vào extension hợp
lệ, (thiết lập qua biến ${MEETME_EXIT_CONTEXT}), nếu biến này
không được thiết lập thì sử dụng extension trong ngữ cảnh hiện tại. d Thêm động vào phòng hội thoại không cần thiết lập số pin
D Thêm động vào phòng hội thoại phải cần thiết lập số pin
e Chọn phòng hội thoại trống đầu tiên
E Chọn phòng hội thoại trống đầu tiên không cần số pin
v Hội thoại với chế độ Video
r
Nếu chức năng này được chọn thì cuộc đàm thoại trong phòng hội thoại sẽ được thu âm với định dạng tập tin ${MEETME_RECORDINGFORMAT} và lưu vào vị trí ${MEETME_RECORDINGFILE}
q Thiết lập mode yên lặng (Không phát âm khi có thuê bao vào/rời khỏi
phòng hội thoại )
M Cho phép Music On Hold khi phòng chỉ có một cuộc gọi.
x Đóng phòng hội thoại khi user chủ trì đã thoát phòng hội thoại. w Đợi cho đến khi user chủ trì đến phòng hội thoại .
b Chạy AGI script để thiết lập biến ${MEETME_AGI_BACKGROUND}, script mặc định là conf-background.agi
s Vào menu(user and administrator) khi nhấn phím *
P Luôn luôn hỏi số Pin ngay cả đã chỉ định trong đối số hàm ứng dụng
meetme()
Các biến sử dụng trong hàm ứng dụng MeetMe()
Cú pháp Chức năng
${MEETME_RECORDINGFILE} Tập tin thu âm cuộc hội thoại(option ‘r’)
${MEETME_RECORDINGFORMAT} Định dạng tập tin thu âm (gsm,wav,…) ${MEETME_EXIT_CONTEXT} Ngữ cảnh thoát ra từ phòng hội thoại
${MEETME_AGI_BACKGRUOND} AGI script
${MEETMESECS} Số giây thuê bao trong phòng hội thoại
5.3.Tạo kế hoạch quay số(Dialplan) cho hệ thống
5.3.1. Giới thiệu
Kế hoạch quay số là trái tim của hệ thống Asterisk. Kế hoạch quay số cho biết các
cuộc gọi sẽ được xử lý như thế nào qua hệ thống Asterisk . Kế hoạch quay số 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. Để cấu hình thành công hệ thống
Asterisk thì điều kiện tiên quyết là phải hiểu rõ kế hoạch quay số .
Hệ thống chúng ta hoạt động có ổn định và phong phú về chức năng hay không phụ
thuộc rất nhiều vào việc chúng ta thiết kế một kế hoạch quay số như thế nào.
5.3.2. Tạo một ngữ cảnh (context)
Đầu tiên ngữ cảnh là gì ? Định nghĩa một cách đơn giản, một ngữ cảnh là một nhóm
các extension. Mỗi extension phải tồn tại trong một ngữ cảnh và mỗi extension thường đi qua nhiều ngữ cảnh khác nhau .
Trong tập tin extensions.conf, một ngữ cảnh được định nghĩa bởi dấu ngoặc vuông
“[]”, có dạng : [mycontext] …
Một ngữ cảnh bao gồm một nhóm vô hạn các extensions, trong thực tế chúng ta cần rất
nhiều các ngữ cảnh để tạo ra nhiều kế hoạch quay số cũng như những chức năng mềm
dẽo, phong phú cho hệ thống .Ví dụ trong một công ty, không phải tất cả các nhân viên
đều có khả năng gọi điện thoại theo nhu cầu của họ. Một nhân viên còn quá mới, làm những công việc không quá quan trọng có lẽ không cần thiết phải cho phép gọi những
cuộc gọi quốc tế . Cũng vậy một giám đốc cũng không muốn bị quấy rầy liên tục vì những thắc mắc từ khách hàng bình thường …, Chúng ta có thể thiết lập toàn bộ các
qui luật hoạt động cho các extension bằng cách nhóm chúng vào những context riêng
để xử lý.
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] include =>default
Dòng cú pháp trên cung cấp cho các extension trong ngữ cảnh [mycontext] khả năng
truy nhập tới tất cả các extension trong ngữ cảnh [default].Điều này cũng có nghĩa là nếu ngữ cảnh [default] có bao gồm một số ngữ cảnhkhác nhau như [conference] thì tất
cả các extension trong [mycontext]đều có thể gởi tới extension trong [conference].
5.3.3. Tạo một extension
Một estension là một nhóm các lệnh báo cho Asterisk thực thi một số công việc .Kế
hoạch quay số là một tập gồm nhiều extension, khi một cuộc gọi tương ứng với
extension nào thì ứng dụng cho cuộc gọi đó sẽ được thực hiện, extension có thể đơn
giản với một đích danh cụ thể như 1234 hay là một chuỗi số mẫu như sau: _9xxx . Một extension hoàn chỉnh trong tập tin extensions.confcó định dạng như sau :
exten => extensionnum,priority,action
trong đó :
• exten => : mỗi dòng bắt đầu với lệnh exten => , chúng ta không được thay đổi điều
này
• extensionnum: là tên, số ,hoặc là một số đại diện tổng quát của extension . Một extensionnum có nhiều dạng như sau:
Định dạng Giá trị
8000 Số cụ thể :8000
4321/4321 Số extension với callerID
_4xxxx Số đại diện tổng quát
s Extension khởi tạo. Nếu không có số
extension nào khác được đưa vào, thì đây
là extension để thực thi
_(gạch dưới) Bắt đầu một số đại diện tổng quát
.(dấu chấm) Số bất kỳ
[13-9]bao gồm các số 1,3,4,5,6,7,8,9
X Số bất kỳ từ 0-9
Z Số bất kỳ từ 1-9
t Extension timeout .Nếu một user được đòi hỏi nhập một phím hoặc làm một tác vụ nào đó nhưng không kịp, extension này sẽ được gọi
i Extension không có giá trị. Nếu một user
chọn sai các tùy chọn cho phép, extension này sẽ được gọi
fax Các cuộc gọi fax . Nếu Asterisk nhận thấy
tín hiệu fax, cuộc gọi sẽ được định tuyến đến extension này.
• priority : là thứ tự thực hiện các ứng dụng trong kế hoạch quay số, Astersik sẽ bắt đầu ở priority 1, kế tiếp là ứng dụng tại priority2 được thực hiện . Một vài lệnh có thể
buộc Asterisk nhảy đến priority n +1 .
Kể từ version 1.2 của Astersik, thay vì gán một con số cụ thể cho thứ tự thực hiện như
trên, ta có thể gán thư tự “n” cho mọi dòng “exten=>” , điều này sẽ nói với Astersik là
ứng dụng với thứ tự tiếp theo sẽ thực hiện.
Ví dụ:
exten => 123,1,Answer() exten => 123,n, do something exten => 123,n, do something else exten => 123,n, do one last thing exten => 123,n,Hangup()
Version 1.2 cũng cho phép chúng ta gán các nhãn dạng text vào priority.Để gán một
nhãn dạng text vào một priority, đơn giản chỉ là thêm nhãn vào bên trong dấu ngoặc
“()” sau prioritynhư sau :
exten => 123,n(label),do something
• action: đây là nơi chúng ta báo cho Astersik biết chúng ta muốn làm gì ,tức là ứng
dụng nào sẽ được thực hiện mỗi khi extesion nào đó được gọi, 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 máy hay gác máy … Một vài ứng
dụng tiêu biểu thường hay được dùng gồm :
Ứng dụng Chú thích
Answer() Trả lời cuộc gọi này .Rất nhiều ứng dụng đòi hỏi
rằng cuộc gọi phải được trả lời trước khi chúng
có thể thực thi các tác vụ khác.
Playback(tên_tập tin) Dùng để phát một file âm thanh dạng .wav hoặc
.gsm. Cuộc gọi phải được trả lời trước khi thực
Background(tên_tập tin) Giống như ứng dụng Playback, tuy nhiên nó
được dùng để chờ một phím nhập vào từ user, không bắt buộc phải nghe hết file âm thanh rồi
mới chuyển tới extension khác .Ứng dụng này
đòi hỏi cuộc gọi phải trả lời trước
Goto(contex,extension,priority) Ứng dụng này giúp chúng ta gởi một cuột gọi đến một context, extension và priority được chỉ định cụ thể.
Voicemail(extendsion) Chức năng này dùng để chuyển cuộc gọi hiện
tại vào hộp thư thoại.
VoicemailMain() Ứng dụng này cho phép user lắng nghe các tin
nhắn thoại, cũng như ghi âm các lời chào, tên và thiết lập các tùy chọn cấu hình khác .
Dial(technology/id,options,timeout) Đây là nơi chúng ta báo cho Asterisk biết để
rung chuông một điện thoại khi nó được quay
số. Các tùy chọn bao gồm:
t : cho phép user bị gọi chuyển cuộc gọi
bằng cách nhấn phím # .
T : cho phép user gọi chuyển cuộc gọi bằng
cách nhấn phím # .
r : rung chuông m: cung cấp nhạc chờ
H : cho phép gác máy bằng cách nhấn phím
*
Ngoài ra còn rất nhiều ứng dụng linh hoạt khác . Để biết thêm thông tin về các ứng
dụng cũng như các tham số kèm theo, dùng lệnh show aplications ở giao tiếp dòng lệnh của Asterisk.
CLI> show Aplications
5.3.4. Tạo các Extension gọi ra (outgoing)
Với kế hoạch quay số, chúng ta không chỉ quan tâm đến việc xử lý các cuộc gọi vào mà tất nhiên còn cần phải tạo các extension để gọi ra .
Các extension gọi ra hoạt động như thế nào phụ thuộc vào kế hoạch mà chúng ta thiết
như thế nào .Cần tạo các kế hoạch mềm dẻo nhưng phải thật gần gũi với các hệ thống
truyền thống để người dùng không phải lạ lẫm khi tiếp xúc.
Hầu hết các hệ thống thường đòi hỏi user phải nhấn một phím nào đó để chiếm trung
kế gọi ra trước khi có thể quay số ra ngoài .Để làm điều này, ta dùng cú pháp như sau
(giả sử là phím 9): [outgoing]
exten => _9.,1,Dial(Zap/g1/${EXTEN:1})
trong đó:
• extensionnum :chúng ta đang dùng một số tổng quát (pattern) để đại diện cho phần
extensionnum.
• g1 :là nhóm các kênh Zap của giao diện Zaptel.Chúng ta nhóm các đường dây (hoặc
các kênh )lại với nhau để các cuộc gọi có thể tự động nhận thấyđường dây (hay kênh) nào rỗi và thực hiện cuộc gọi trên đó.
• ${EXTEN:1}: là biến lưu số mà chúng ta đã quay trừ đi số đầu tiên. Asterisk sẽ bỏ đi
số lượng số bằng với số mà chúng ta đã chỉ ra sau dấu hai chấm“:”, nếu chúng ta quay 9123456789 thì sốđược gởi đi sẽ là 123456789. Tương tự, nếu chúng ta muốn bỏ qua
2 số đầu, ta dùng ${EXTEN:2}
5.3.5. Hệ thống trả lời tương tác thoại (Automated Attendant)
Ứng dụng tương tác thoại là ứng dụng thường gặp đối với bất cứ hệ thống tổng đài PBX nào.Cho phép các thuê bao tương tác với hệ thống qua các thông điệp thoại . Ví dụ khi thuê bao gọi đến PBX, sẽ có thông điệp phát ra “Hân hạnh chào bạn đã gọi đến
công ty ABC của chúng tôi , mời nhấn phím 1để gặp phòng kinh doanh, nhấn phím 2 để gặp phòng hỗ trợ khách hàng…
Trong phần này sẽ trình bày từng bước xây dựng hệ thống tương tác thoại một cách dễ
hiểu nhất, khai báo trong tập tin extensions.confnhư sau :
extensions.conf [default]
exten => 100,1,Dial(SIP/100) exten => 200,1,Dial(SIP/200) [mainmenu]
exten => s,1,Answer()
exten => s,n,Background(thanks); phát thông điệp cảm ơn khi gọi đến công ty
exten => s,n,WaitExten()
exten => 1,1,Goto(submenu,s,1) exten => 2,1,Hangup()
[submenu]
exten => s,1,Ringing ; rung chông trong vòng 2 giây exten => s,n,Wait(2)
kinh doanh
exten => s,n,WaitExten() exten => 1,1,Goto(default,A,1) exten => 2,1,Goto(default,B,2)
Đoạn trên có thể giải thích như sau: tất cả các cuộc gọi đến đều được chuyển đến ngữ
cảnh [mainmenu], trong ngữ cảnh này hàm ứng dụng Background(thanks) sẽ thực hiện phát ra thông điệp “ Cám ơn quí khách đã gọi điện đến công ty chúng tôi, mời nhấn phím 1 để gặp phòng kinh doanh …” , sau khi thuê bao nhấn phím 1 sẽ được đưa đến
ngữ cảnh [submenu] ứng với ngữ cảnh của phòng kinh doanh.
Tại ngữ cảnh của phòng kinh doanh hàm ứng dụng Background(submenuopts) sẽ phát thông điệp “ cám ơn đã gọi đến phòng kinh doanh , mời nhấn phím 1 để gặp ông
A, phím 2 để gặp ông B” , Tại đây tùy vào thuê bao nhấn phím 1 hoặc 2 sẽ được
CHƯƠNG VI: THI CÔNG HỆ THỐNG IP-PBX CƠ BẢN
6.1. Các thiết bị và phần mềm sử dụng
- Yêu cầu cấu hình tối thiểu của Asterisk server:
Mục đích Số lượng các kênh Cấu hình tối thiểu
Thử nghiệm, học tập 1- 5 400-MHz x86, 256 MB RAM
Hệ thống cho văn phòng hoặc nhà riêng
5-10 1-GHz x86, 512MB RAM Hệ thống cho doanh nghiệp
nhỏ
Tới 15 3-GHz x86, 1GB RAM
Hệ thống thương mại cỡ
vừa và lớn
Hơn 15 Dual CPUs, hay cũng có thể là nhiều server trong một cấu trúc
phân tán.
(nguồn: bảng 2.1 [2])
- Asterisk server trong mô hình cơ bản ở trên có: + Cấu hình:
• CPU: Pentium IV 2.2 GHz • RAM: 512MB
• HDD: 10GB
+ Hệ điều hành Linux: Fedora core 6.0 + Phần mềm mã nguồn mở Asterisk:
• asterisk: version 1.4.21.2 • asterisk-addons: version 1.4.7 • zaptel: version 1.4.12.1 • libpri: version 1.4.7
- Card giao tiếp với PSTN: TDM01B (0 FXS, 1 FXO) của Digium, hỗ trợ giao thức
SIP, IAX, H.323 .
- SoftPhone: Phần mềm X-Lite version 3.0 (download từ www.xten.com), cài trên máy tính, hỗ trợ giao thức SIP:
Để cấu hình tài khoản SIP cho X-Lite (máy 3006), vào Show Menu - SIP Account Setting, ta nhập các thông số như hình sau đây:
Sau khi nhập đầy đủ các thông tin như trên, X-Lite sẽ tiến hành đăng ký với Asterisk
server . Nếuđăng ký thành công, ta có màn hình hiển thị của X-Lite như sau:
- Điện thoại IP: IP Phone AT-530, hai cổng RJ45, hỗ trợ giao thức SIP :
- Điện thoại Analog thông thường
6.2. Kế hoạch quay số
Hướng gọi Kế hoạch quay số-cách sử dụng
Gọi ra( out-going calls) Bấm số “9” để chiếm trung kế gọi ra
Gọi vào ( in-coming calls) Quay số vào trực tiếp
Nội bộ(internal) Quay số Bấm trực tiếp số
Voicemail -để lại tin nhắn:nếu
sau 10 hồi chuông không có người nhấc
máy, có thể để lại tin
nhắn sau tiếng “bip”(để
“#”)
-truy xuất vào voice mail : quay số 9000
6.3. Một số chức năng cơ bản
Stt Chức năng Cách sử dụng
1 Hiển thị số thuê bao chủ gọi
2 Nhấc máy từ xa (Call pickup) Từ máy điện thoại bất kỳ trong cùng
nhóm, quay *8 để nhận cuộc gọi đang