Dialplan gồm 4 phần chắnh: contexts, extensions, priorities, và applications. Nhóm giải thắch chi tiết từng phần như sau.
a) Contexts:
Contexts là tên của một nhóm các nhánh, với mỗi nhánh có một ứng dụng. Như vậy, trong mỗi context này sẽ thực hiện các chức năng mà nhóm mong muốn cho mỗi context. Vắ dụ: Context A thì nhóm quy ựịnh chỉ thực hiện ựược gọi ựến tài khoản X, có thể sử dụng ựược hộp thư thoại, trong khi context B nhóm quy ựịnh có thể thực hiện ựược gọi ựến tài khoản Y, và không sử dụng ựược hộp thư thoại.
Các nhánh trong những context khác nhau là cách li hoàn toàn, tức là nhánh trong context có thể giống với nhánh trong context khac, nhưng Asterisk vẫn phân biệt ựược các nhánh này.
Context ựược chứa trong dấu ngoặc vuông Ộ[]Ợ.
Tên của context có thể ựược thiết lập với các chữ cái (A Z),chữ số (09) và gạch nối. Vắ dụ: [abc].
b) Extension:
Extension là một cấu trúc mà Asterisk sẽ cho phép thực hiện cuộc gọi vào một kênh. extensions chỉ rõ những cái mà xảy ra trong cuộc gọi khi chúng thực hiện những cách thức thông qua dialplan.
Cú pháp thực hiện extension là:Ộexten =>Ợ Một extension hoàn chỉnh bao gồm 3 thành phần: + Tên (hoặc số).
+ Thứ tự thực hiện lệnh.
+ Ứng dụng (hoặc lệnh) thực hiện vài hành ựộng trong cuộc gọi. Cả 3 thành phần này ựược tách biệt bởi các dấu phẩy.
exten=> name,priority,application(). Vắ dụ: exten => 123,1,Answer(). Các các tên của nhánh ựặc biệt:
Tên của nhánh Miêu tả
S Khi những cuộc gọi ựến một context với không một nhánh ựắch xác ựịnh, chúng ựược ựiều chỉnh tự ựộng bởi nhánh này.
i (invalid) Khi người gọi nhấn phắm không có giá trị, thì cuộc gọi sẽ ựược chuyển ựến nhánh i.
t (timeout) Người gọi không nhấn phắm nào trong 1 khoảng thời gian nhất ựịnh (timeout), thì cuộc gọi sẽ ựươc chuyển ựến nhánh t.
Ta có thể thiết lập các nhánh tùy biến, bằng cách sử dụng những ký tự hoặc ký hiệu ựể ựại diện cho những số có thể chúng ta muốn làm cho phù hợp. Những hình thức luôn luôn bắt ựầu dấu gạch dưới (_).
Sau dấu gạch dưới, bạn có thể sử dụng 1 hoặc nhiều ký tự theo sau: X: những số từ 09
Y: những số từ 19 Z: những số từ 29
[15-7]: một số hoặc dãy số ựặc biệt. .(period): từ kết hợp 1 hoặc nhiều ký tự. Ộ.Ợ: dùng cho nhiều số
để sử dụng tùy biến trong Dialplan của bạn, ựặt hình thức (pattern) tại nơi tên (số) nhánh. Vắ dụ: exten => _NXX,1,Playback(auth-thankyou).
Ở ựây hình thức là bất kỳ nhánh gồm 3 số từ 200 ựến 999 (N là 1 trong các số từ 2-->9) mà khi người gọi gọi vào nhánh bất kỳ trong 3 số này (NXX) thì họ sẽ nghe âm thanh từ file auth- thankyou.gsm.
Sử dụng biến kênh truyền ${EXTEN}:
Khi gọi ựến 1 nhánh, Asterisk thiết lập biến kênh truyền ${EXTEN} ựến số ựược gọi. Biến này nhận giá trị mà chúng ta nhấn vào.
Chúng ta có thể sử dụng ứng dụng gọi SayDigits() ựể kiểm tra biến: exten=> _XXX,1,SayDigits(${EXTEN})
Xóa x số ựứng ở vị trắ bên trái bằng cú pháp: exten => _XXX,1,SayDigit(${EXTEN:x})
Vắ dụ: giá tri của EXTEN là 95551212, ${EXTEN:1} bằng 5551212 đọc ngược lại y số ựứng ở vị trắ bên phải
exten => _XXX,1,SayDigit(${EXTEN:-y})
c) Priority:
Mỗi nhánh có nhiều bước gọi là những priorities. Mỗi priority là những số tuần tự bắt ựầu từ 1 và thực thi một ứng dụng ựặc biệt.
Vắ dụ: Thực hiện nhánh 123 cho các ứng dụng Answer, Dial, Hangup lần lượt cho các thứ tự 1,2,3 tương ứng. (Các ứng dụng sẽ ựược hướng dẫn ở phần sau)
exten => 123,1,Answer(). exten => 123,2,Dial(SIP/9999) exten => 123,3,Hangup().
d) Application:
Mỗi ứng dụng thực thi một hành ựộng chỉ ựịnh rõ trên kênh. Một số ứng dụng cơ bản ựể tham gia xây dựng một tổng ựài IP PBX:
Ứng dụng Miêu tả
Answer() Là trả lời một kênh. điều này thực hiện thiết lập ban ựầu cho kênh mà nó nhận cuộc gọi vào
Playback() Chạy file âm thanh ựược ghi lại sẵn trên 1 kênh. Khi sử dụng ứng dụng này, ngõ vào từ người sử dụng bị từ chối, tức là user không thể thực hiện bất kỳ thao tác nào.
Background(): Giống như Playback() nó play file âm thanh, và khác với Playback() là khi người gọi nhấn một phắm hay một chuỗi phắm trên ựiện thoại, nó sẽ ngắt Background() và chạy nhánh mà ựáp ứng với việc nhấn số.
Thông thường việc dùng ứng dụng Background() nhằm tạo ra những menu voice ựể những công ty hướng người sử dụng vào nhưng extension thắch hợp.
Hangup() Từ chối kênh chủ ựộng. Ngừơi gọi sẽ nhận tắn hiệu cuộc gọi bị từ chối. Bạn sẽ sử dụng ứng dụng khi bạn muốn kết thúc một cuộc gọi Goto() được sử dụng ựể gửi cuộc gọi ựến context, extension và priority
khác. Ứng dụng này làm cho nó dễ dàng di chuyển một cách lập trình cuộc gọi giữa những phần khác của dialplan
Dial() Ứng dụng này giúp kết nối những máy trạm lại với nhau. điều này là lợi ắch ựặc biệt cho những máy trạm ựang sử dụng những phương pháp thông tin liên lạc khác nhau. Vắ dụ, máy trạm A có thể thông tin liên lạc qua chuẩn mạng ựiện thoại tương tự, trong khi máy trạm B sử dụng IP phone. Cả 2 có thể liên lạc với nhau bằng tổng ựài sử dụng Asterisk với ứng dụng Dial().
Cú pháp: Dial(channel,timeout,r)
GotoIf() Cú pháp:
GotoIf(expression?destination1:destination2)
Nếu giá trị expression là true, người gọi se ựược chuyển ựến destination1 và ngược lại
Destination có thể là:
_ Một priority trong cùng extension, như 10
_ Một extension và một priority trong cùng context, như 123,10 _ Một context, extension, priority, như incoming, 123,10 _ Tên priority trong cùng extension.
GotoIfTime() Dựa vào thời gian hiện hành của hệ thống và sử dụng nó ựể quyết ựịnh hoặc không ựể thực hiện các ứng dụng khác nhau trong dialplan.
Cú pháp cho hàm GotoIfTime():
GotoIfTime(times,days_of_week,days_of_month,months?label) Hàm GotoIfTime() chuyển cuộc gọi ựến label ựặc biệt nếu ngày hiện hành và thời gian phù hợp vời tiêu chuẩn chỉ ựịnh bởi times, days_of_week, days_of_month và months
Chi tiết về các thông số:
times: ựây là danh sách một hay nhiều khoảng thời gian, trong mặc ựịnh là 24h.
days_of_week: gồm 1 hay nhiều ngày trong tuần. Các ngày ựược chỉ ựịnh là: mon, tue, wen, thu, fri, sat, sun.
days_of_month: gồm 1 hay nhiều ngày trong tháng. Các ngày ựược chỉ ựịnh bởi những số từ 1 ựến 31.
Thông số label là :
_ Một priority trong cùng extension.
_ Một extension và một priority trong cùng context. _ Một context, extension, và priority.
_ Tên priority trong cùng extension.
MeetMe() Ứng dụng này cho phép nhiều người nói chuyện với nhau trong phòng thoại. Các ựặc ựiểm chắnh:
_ Khả năng tạo mật mã bảo vệ.
_ Quản trị hội thảo (chặn tiếng hội thoại, khóa hội thoại, lọai bỏ một thành viên).
_ Sự tạo ra hội thoại tĩnh hoặc ựộng.
Kết hợp file cấu hình cho hệ thống hội thoại MeetMe là
meetme.conf.