Xây dựng hệ thống hội thoại

Một phần của tài liệu Toàn tập về Asterisk (Trang 56 - 79)

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

Một phần của tài liệu Toàn tập về Asterisk (Trang 56 - 79)

Tải bản đầy đủ (PDF)

(79 trang)