Giới thiệu dialplan

Một phần của tài liệu xây dựng trung tâm quà tặng âm nhạc trên nền asterisk (Trang 64 - 128)

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] 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ảnh khác nhau nhƣ [conference] thì tất cả các extension trong [mycontext]đều có thể gởi tới extension trong [conference].

Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk

3.10.2 Giao thức SIP

Giao thức khởi tạo phiên (Session Initiation Protocal-SIP), là một trong các chuẩn giao thức truyền thoại trên nền IP . Giao thức này chủ yếu dựa vào giao thức thời gian thực (Real-time Transport Protocal), sử dụng cổng UDP trong bộ TCP/IP để truyền thoại . Nó cũng địng nghĩa các địa chỉ có định dạng giống nhƣ một email, vídụ user@domain . Chúng ta sẽ cấu hình giao thức này bằng cách chỉnh sửa tập tin

/etc/asterisk/sip.conf. Tập tin này gồm một số thiết lập trong phần tổng quát [general], và tiếp theo là các định nghĩa của chúng ta cho các user.

Các tùy chọn trong phần [general] bao gồm:

 context: thiết lập ngữ cảnh mặc định cho các cuộc gọi vào. Các cuộc gọi này có thể từ các user của chúng ta, hoặc nếu chúng ta kết nối đến Internet thì nó có thể đến từ bất nơi nào . Mặc định là “default”.

 port: thiết lập cổng UDP để lắng nghe đối với các kết nối. Mặc định là 5060 và chúng ta không nên thay đổi, trừ khi chúng ta có một lý do thực sự tốt.

 bindport: xác định địa chỉ IP mà chúng ta muốn SIP phục vụ đến .

 srvlookup:quyết định có kích hoạt chức năng DNS SRV lookup hay không .

 tos: đây là thông số thiết lập chất lƣợng dịch vụ (Quality of Service- QoS). Chúng ta có thể chỉ ra một giá trị số cụ thể nào đó hoặc có thể dùng từ khóa “lowdelay”, ”throughput”,”reliability”,”mincost” hoặc “none”. Chúng ta nên thiết lập giá trị này là “lowdelay” nếu khi đàm thoại nghe những tạp âm nhƣ tiếng lộp bộp, sôi hoặc các âm thanh không phù hợp khác.

 videosupport: chúng ta có thể thiết lập tham số này thành “yes” để cho phép hổ trợ hình ảnh trong SIP.Asterisk hiện tại hỗ trợ các codec hình ảnh nhƣ H.263 và H.263+

 musicclass: là nơi thiết lập các bản nhạc chờ mặc định cho tất cả các cuộc gọi SIP. Mặc định là “default”.

 accountcode: thiết lập các mã tài khoản cho các SIP user. Tính năng này ứng dụng trong việc tính cƣớc .

Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk

 relaxdtmf: giúp cho Asterisk nhận đƣợc các xung dạng DTMF của các phím đƣợc nhấn trong quá trình đàm thoại.

 rtptimeout: nơi đây chúng ta có thể cấu hình chu kì im lặng tối đa cho 1cuộc gọi .Nếu RTP stream không hoạt động trong một khoảng thời gian đƣợc thiết lập .Cuộc gọi sẽ đƣợc kết thúc .Mặc định là 60

 localnet: nơi đây chúng ta sẽ định nghĩa các địa chỉ IP bên trong cho Asterisk servser. Điều này sẽ chỉ cho Astersik biết các bản tin SIP nào dùng cho địa chỉ IP ngoài và những cái nào cần cho địa chỉ IP bên trong .

 register: tham số này dùng đăng ký với một nhà cung cấp hoặc dịch vụ bằng giao thức SIP nào đó .

Ví dụ : abc@def@sipprovider.com. ,trong đó adb là username, def là password và sipprovider.com là SIP của nhà cung cấp dịch vụ đó .

 codes: chúng ta phải định nghĩa loại codec(encoder/decoder) nào đƣợc sử dụng cho các cuộc gọi SIP mà chúng ta cho phép thông qua Astersik. Đầu tiên chúng ta nên thiết lập disalow=all để vô hiệu tất cả các codec. Sau đó thêm từng codec bằng cách dùng allow=codec.

Ví dụ để chỉ cho phép sử dụng codec g.723 và ulaw, ta dùng : disallow=all

allow=g723 allow=ulaw

Chúng ta đã cấu hình các tùy chọn tổng quát trong phần [general], tiếp theo chúng ta phải định nghĩa cho các user .Sau đây là cấu hình cụ thể cho một user:

type: gồm các gia trị :

user: kết nối này đƣợc phép gởi các cuộc gọi đến chúng ta. peer: chúng ta đƣợc phép gởi các cuộc gọi đến kết nối này. friend: kết nối này là user lẫn peer.

username: thiết lập usename dùng cho việc xác thực. secret: thiết lập password dùng cho việc xác thực.

Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk

md5secret:mã hóa dạng MD5 hash của chuỗi<user>:asterisk:<secret> cho việc xác thực thêm bảo mật.

 callerid: thiết lập caller ID . Ví dụ callerid=Myname<1234> .

 host: thiết lập địa chỉ host cho user .Địa chỉ này có thể là một địa chỉ tĩnh hoặc một từ khóa “dynamic”.

 mailbox: thiết lập mailbox để kiểm tra tin nhắn cho user.Điều này có thể chỉ là một mailbox ID, hoặc có thể là mailbox ID và theo sau là @tên ngữ cảnh.

 qualify: thiết lập bao nhiêu milisecond thiết bị có thể mất kết nối(trạng thái unreachale) đƣợc xem nhƣ là down.

 security: chúng ta có thể dùng từ khóa “permit” hoặc “deny” để thiết lập các mức độ bảo mật.

 deny: thiết lập danh sách các địa chỉ IP không cho phép đăng ký, nếu chúng ta thiết lập deny=0.0.0/0.0.0.0 thì tất cả các đăng ký sẽ bị từ chối. Nếu cấu hình deny= 192.168.1.0/255.255.255.0 thì tất cảc đăng ký xuất phát từ địa chỉ lớp C của 192.168.1.0 sẽ bị từ chối.

Sau đây là 1 cấu hình mẫu trong tập tin sip.conf . Giả sử các tùy chọn tổng quát đã đƣợc thiết lập .Chúng ta có 3 user: một cho tất cả các cuộc gọi vào, một cho các cuộc gọi ra đến dịch vụ Free World Dial(FWD) và một cho một điện thoại SIP

[1000] ; đây là extension của điện thoại SIP type=friend contex=longdistance username=1000 callerid=Myname<1000> host=dynamic defaultip=192.168.1.100 secret=2manysecrets nat=no

Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk canreinvite=yes dtmfmode=info mailbox=1000 disallow=all allow=ulaw accountcode=company123.

3.10.3 Hộp thư thoại (Voicemail)

Asterisk cung cấp khả năng xây dựng ứng dụng Voicemail, với khả năng này giúp cho ngƣời sử dụng điện thoại không bỏ lỡ bất kỳ cuộc gọi điện thoại nào. Một số tính năng của hệ thống voicemail:

Khi user không trả lời, user không đƣợc kết nối mạng hay user đang bận, hệ thống đều có thông điệp riêng để thông báo tình trạng của thuê bao đƣợc gọi và phát thông điệp mời để lại tin nhắn .

Mỗi hộp thƣ đều đƣợc quản lí bằng password và thƣ mục riêng. Khi thông điệp đƣợc nhận, hệ thống VoiceMail có thể gởi qua mail để thông báo, tất nhiên có kèm theo file thông điệp.Có thể kiểm tra VoiceMail trực tiếp trên máy điện thoại.

Những thông điệp lời chào trong hệ thống hoàn toàn có thể thay đổi phù hợp với ngữ cảnh sử dụng, không nhất thiết phải sử dụng thông điệp mặc định .

Cấu hình chức năng voicemail

Sau đây là các bƣớc xây dựng hệ thống Voicemail

Tạo hộp thƣ có tên là [hopthu] trong tập tin voicemail.conf : [hopthu]

3003=>1234,hai,lyhai06@yahoo.com. Trong tập tin sip.conf khai báo nhƣ sau: [3003]

type=friend username=3003

Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk

secret=121212 host=dynamic context=testhopmail mailbox=3003@hopthu.

Trong tập tin extensions.conf khai báo nhƣ sau: [testhopmail]

exten => 3003,1,Dial(SIP|3003,45)

exten => 3003,2,VoiceMail(u3003@hopthu) ; nếu không trả lời thì chuyển đến hộp thƣ thoại

exten =>3003,102,VoiceMail(b3003@hopthu) ; ứng dụng Dial() gởi cuộc gọi đến priority n+101 nếu đƣờng dây bận.

Kiểm tra Voicemail:

Ứng dụng VoicemailMain() quản lí các user của PBX để truy cập vào voicemail của họ.

Ví dụ:

exten => 500,1,VoiceMailMan()

Extension 500 đƣa đến hệ thống voicemail.Trong trƣờng hợp này, hệ thống sẽ nhắc user đƣa vào số của mailboxpassword, nếu giá trị đƣa vào hợp lệ, user sẽ nghe đƣợc nội dung của mailbox đó .

3.10.4 Nhạc chờ (Music On Hold MOH)

Tính năng MOH của Asterisk với nhiều ứng dụng thực tế rất thiết thực, một số ứng dụng tiêu biểu nhƣ trong khi giử máy để gặp ngƣời khác, thuê bao có thể nghe âm nhạc giải trí để quên đi thời gian chờ đợi, khi chờ trả lời cuộc gọi thuê bao sẽ nghe âm nhạc thay vì hồi âm chuông, hoặc phát ra một thông điệp thông báo cho một tác vụ nào đó.

Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk

Chép toàn bộ tập tin nhạc vào thƣ mục mặt định /var/lib/asterisk/mohmp3

.Sau đó khai báo trong tập tin cấu hình /etc/asterisk/musiconhold.conf với nội dung: [default]

mode=files

directory=/var/lib/asterisk/mohmp3 random=yes

Nếu random=no thì tất cả các tập tin âm thanh trong thƣ mục mohmp3 sẽ thực hiện theo thứ tự.

Nếu random=yes sẽ thực hiện một tập tin âm thanh ngẫu nhiên trong thƣ mục. Sau khi cấu hình xong chúng ta có thể test bằng cách cấu hình kế hoạch quay số trong tập tin /etc/asterisk/extensions.conf nhƣ sau :

;các dòng này phải đƣợc đặt cùng ngữ cảnh với các thuê bao exten => 9000,1,Answer()

exten => 9000,n,SetMusicOnHold(default) exten => 9000,n,WaitMusicOnHold(15) exten => 9000,n,Hangup()

Khi thuê bao quay số 9000 hệ thống sẽ trả lời sau đó phát ra một bài nhạc ngẫu nhiên trong thƣ mục default, trong vòng 15s sau đó gác máy

Chúng ta có thể tạo ra một lớp thƣ mục khác với lớp default sau đó chép tất cả các tập tin âm nhạc vào thƣ mục này và đồng thời khai báo trong tập tin cấu hình

/etc/asterisk/musiconhold.conf thì chúng ta có thể sử dụng chức năng MOH. Sau đây là quá trình thực hiện :

Tạo thƣ mục mới

#mkdir /var/lib/asterisk/mohmp3/newclass

Khai báo tập tin cấu hình /etc/astersik/musiconhold.conf

Chương III : Các mô hình ứng dụng và cấu hình hoạt động cho Asterisk

mode=files

directory=/var/lib/asterisk/mohmp3/newclass random=yes

Đoạn kế hoạch quay số trong tập tin extensions.conf nhƣ sau:

Một phần của tài liệu xây dựng trung tâm quà tặng âm nhạc trên nền asterisk (Trang 64 - 128)