biến Global có thể được áp dụng cho tất cả các extension trong tất cả các context trong Dialplan.

Similar documents
HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Chương 5. Network Layer 19/09/2016 1

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Tài liệu hướng dẫn: Stored Procedure

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

CẤU TRÚC DỮ LIỆU NÂNG CAO

Tình huống 1: PPPoE với Username và Password

BELGIUM ONLINE APPOINTMENT

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

SIEMENS INDUSTRIAL NETWORKS

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

STACK và QUEUE. Lấy STACK

Bài tập lớn số 1. Giả lập bộ định thời

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

LÂ P TRI NH WEB ASP.NET

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

PHÁT TRIỂN ỨNG DỤNG WEB

Hướng dẫn cài đặt FPT

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Google Search Engine. 12/24/2014 Google Search Engine 1

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

SIMULATE AND CONTROL ROBOT

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

Entity Framework (EF)

Tạo Project với MPLAB

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

Nhấn nút New để tạo 1 biến mới Trang 17

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

TỔNG QUAN VỀ.NET VÀ C#

Tìm hiểu Group Policy Object và các ví dụ

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Exceptions. Outline 7/31/2012. Exceptions. Exception handling is an important aspect of objectoriented. Chapter 10 focuses on:

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

Lecture 12. Trees (1/2) Nội dung bài học:

Mô hình dữ liệu quan hệ (Relational data model)

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

Dọn "rác" Windows 7 vào dịp cuối năm

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

GIỚI THIỆU TỔNG ĐÀI KX-HTS824. September, 2016

LẬP TRÌNH TEB308 / 824 CƠ BẢN BẰNG BÀN KEY

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

Time Picker trong Android

Giao tiếp giữa các tiến trình

BẢO MẬT TRONG SQL SERVER

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

Đa ngôn ngữ (Internationalization) trong Servlet

Khoa Công Nghệ Thông Tin Trường Đại Học Cần Thơ. Những hỗ trợ tiên tiến khác của SQL. Đỗ Thanh Nghị

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Tröôøng Ñaïi Hoïc Baùch Khoa Tp.HCM LẬP TRÌNH MINICHAT. Bài giảng 3. Trang1. Khoa Khoa Học Và Kỹ Thuật Máy Tính

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

1 Bước 1: Test thử kit LaunchPad.

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Bài 10: Cấu trúc dữ liệu

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

Bài 7: Các cấu trúc điều khiển

LINQ TO SQL & ASP.NET

Bài thực hành 1: Chỉ mục trong SQL Server

GV: Phạm Đình Sắc or

Bài thực hành số 2 QUYỀN và ROLE

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

LẬP TRÌNH 8051 SỐ HỌC VÀ LÔ GIC

JAVASCRIPT. Giảng viên : Ths. PHẠM ĐÀO MINH VŨ

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

PHÁT TRIỂN ỨNG DỤNG DI ĐỘNG NÂNG CAO

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

BÀI 6a LẬP TRÌNH ĐA TUYẾN (MULTI THREAD)

NHÚNG. Vi ñiều khiển BM Kỹ Thuật ðiện Tử - ðh Bách Khoa TP.HCM 2

TỔNG QUAN LẬP TRÌNH JAVA

Các kiểu định địa chỉ họ MSC-51

I. Hướng Dẫn Đăng Nhập:

Qu n ả tr h ố g t p ậ tin

B3: Bên khung Package Explore bên trái đi tới thư mục res, bạn sẽ thấy có 3 thư mục con:

Kích hoạt phương thức xa (RMI- Remote Method Invocation )

Tính kế thừa-2. Bởi: Thanh Hiền Vũ. Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất:

HƯỚNG DẪN SỬ DỤNG NHANH MINDJET MIND MANAGER

Transcription:

Sử dụng biến trong Dialplan có ba loại biến được sử dụng: Global, channel, enviroment. biến Global có thể được áp dụng cho tất cả các extension trong tất cả các context trong Dialplan. Biến Global thường được khai báo trong phấn context [globals] ở phần đầu của file extensions.conf hoặc thông qua hàm GLOBAL(). Biến channel chỉ sử dụng trong một cuộc gọi cụ thể nào đó, cho một kênh cụ thể nào đó trong khi thực hiện một cuộc gọi. Biến channel được đặt thông qua application Set() exten => 125,1,Set(MAGICNUMBER=42) Biến Enviroment là một cách thức truy nhập môi trường Linux của Asterisk. Bạn tham chiếu biến của môi trường Linux thông qua cú pháp ${ENV(var)} với var là tên biến mà bạn muốn tham chiếu. ví dụ sử dụng biến [globals] JOHN=Zap/1 JANE=SIP/Jane [incoming] exten => 123,1,Answer() exten => 123,n,Background(enter-ext-of-person) exten => 123,n,WaitExten() exten => 1,1,Dial(${JOHN},10) exten => 1,n,Playback(vm-nobodyavail) exten => 1,n,Hangup() exten => 2,1,Dial(${JANE},10) exten => 2,n,Playback(vm-nobodyavail) exten => 2,n,Hangup() exten => i,1,playback(pbx-invalid) 1 / 8

exten => i,n,goto(incoming,123,1) exten => t,1,playback(vm-goodbye) exten => t,n,hangup() [employees] exten => 101,1,Dial(${JOHN}) exten => john,1,dial(${john}) exten => 102,1,Dial(${JANE}) exten => jane,1,dial(${jane}) hai biến global JOHN và JANE được sử dụng cho mọi extension trong Dialplan Pattern Matching Cho phép bạn tạo một extension dùng cho những trường hợp bạn quay số với những số được gọi khác nhau, dùng cho những trường hợp người sử dụng truy cập ra mạng bên ngoài thông qua hệ thống Asterisk (như thực hiện các cuộc gọi ra mạng PSTN thông qua tổng đài Asterisk nội bộ). Chuỗi ký tự muốn đối sánh bắt đầu bằng ký tự _ Các ký tự sử dụng để đối sánh: X: tương ứng với một giá trị số từ 0-9 Z: tương ứng với một giá trị số từ 1-9 N: tương ứng với một giá trị số từ 2-9 [A-B]: tương ứng với một giá trị số có giá trị nằm trong phạm vi A-B.: tương ứng với một hay nhiều ký tự bất kỳ!: tương ứng với không, một hay nhiều ký tự bất kỳ _NXXXX: tương ứng với dãy số trong phạm vi 20000-99999 _ZXNXX: tương ứng với dãy số trong phạm vi 10200-99999 2 / 8

chuỗi ký tự đối sánh thường được sử dụng kết hợp với biến kênh ${EXTEN} để lấy về giá trị số đã được nhấn. Cú pháp có dạng ${EXTEN:x:y} x: thể hiện vị trí trong chuỗi đối sánh được trích ra đầu tiên (tính từ trái sang phải) y: số ký tự được trích ra application SayDigits( number ) có chức năng đọc các giá trị số trong dãy number exten => _XXX,1,SayDigits(${EXTEN:1}) đọc chuỗi số mà bạn đã nhấn có giá trị 000-999 exten => _ZZXZXXNN,1,SayDigits(${EXTEN:2:6}) đọc chuỗi số mà bạn đã nhấn trong phạm vi 101002 999999. Asterisk cho phép bạn sử dụng lại những extension trong một context khác thông qua từ khoá include theo cú pháp: include => context. Operators Cũng giốn như các ngôn ngữ lập trình, Asterisk sử dụng một sô toán hạng như sau: - expr1 expr2 hoặc - expr1 & expr2 và - expr1 {=, >, >=, <, <=,!=} expr2 so sánh - expr1{+,-,*,/,%}expr2 tính toán Expressions là sự kết hợp các biến, giá trị và các toán hạng để cho ra một giá trị. Nó được dùng để kiểm tra các giá trị, sửa chuỗi ký tự hoặc thực hiện các tính toán toán học. ví dụ exten => 321,1,Set(COUNT=3) exten => 321,n,Set(NEWCOUNT=$[${COUNT} + 1]) exten => 321,n,SayNumber(${NEWCOUNT}) 3 / 8

hệ thống sẽ đọc giá trị 4 Condition Branching Khi thực hiện một Dialplan nhất là đối với những Dialplan có tổ chức phức tạp, việc rẽ nhánh trong Dialplan (chuyển sang một extension khác, một context khác ) là điều thường gặp. chìa khoá của việc rẽ nhánh trong Dialplan là sử dụng một số application như sau: Sử dụng application Goto() để nhẩy đến một phần khác của Dialplan cú pháp sử dụng như sau: exten => extension,priority,goto(context,extension,priority) [incoming] exten => 123,1,Answer() exten => 123,n,Background(main-menu) exten => 123,n,WaitExten(3) exten => 1,1,Goto(kythuat,s,1) exten => 2,1,Goto(kinhdoanh,s,1) [kythuat]... [kinhdoanh]... Khi bạn quay số 123 hệ thống sẽ thực hiện trả lời và chạy một thông báo cho bạn biết có dạng để gặp phòng kỹ thuật mời bạn nhấn phím 1, để gặp phong kinh doanh mời bạn nhấn 2. Khi bạn nhấn phím tương ứng hệ thống sẽ chuyển bạn đến context dành cho phòng mà bạn muốn gọi tới. Sử dụng application GotoIf() theo cú pháp: GotoIf(expression?destination1:destination2) điều kiện trong expression là true, cuộc gọi sẽ được chuyển đến destination1 ngược lại cuộc gọi sẽ được chuyển đến destination2. 4 / 8

exten => 123,1,GotoIf($[${CALLERID(num)} = 85551212]?reject:allow) exten => 123,n(allow),Dial(Zap/4) exten => 123,n,Hangup() exten => 123,n(reject),Playback(abandon-all-hope) exten => 123,n,Hangup() Giới hạn user có callerid = 85551212 không được phép thực hiện cuộc gọi. Khi extension 123 được thực hiện (quay số 123), nếu callerid của người thực hiện cuộc gọi là 85551212 cuộc gọi sẽ được chuyển đến extension có label là reject để đưa ra thông báo không cho phép thực hiện cuộc gọi. Ngược lại cuộc gọi được chuyển đến extension có label là allow cho phép thực hiện cuộc gọi thông qua channel Zap/4. Sử dụng application GotoIfTime() theo cú pháp sau để thực hiện việc rẽ nhánh theo thời gian. GotoIfTime(times,days_of_week,days_of_month,months?label) times: khoảng thời gian trong ngày. days_of_week: thể hiện ngày trong tuần days_of_month: thể hiện ngày trong tháng months: thể hiện tháng label: nhãn của extension chuyển đến. trong trường hợp bạn muốn chấp nhận mọi giá trị trong trường so sánh bạn dùng ký tự *. Đối label có thể có dạng như sau: - priority label của cùng extension đó. - extension và priority của cùng extension đó - context, extension,priority exten => 3000,1,GotoIfTime(9:00-17:00 mon-fri * *?open,s,1) extension này sẽ chuyển cuộc gọi đến context open, extension s, priority 1 nếu cuộc gọi tới trong khoảng 9:00-17:00 các ngày từ thứ hai đến thứ sáu. Macro 5 / 8

Macro là một cấu trúc giúp cho bạn tránh phải viết lại những đoạn giống nhau trong Dialplan của mình. Để tạo một macro bạn thực hiện trong Dialplan của mình theo cú pháp sau: [macro- name of macro ] Để gọi macro bạn trong Dialplan của mình bạn sử dụng application Macro() theo cú pháp: Macro(macroname, arg1,arg2...) [macro-stdexten] exten => s,1,dial(${arg2},20) exten => s,2,goto(s-${dialstatus},1) exten => s-noanswer,1,voicemail(${arg1},u) exten => s-noanswer,2,goto(default,s,1) exten => s-busy,1,voicemail(${arg1},b) exten => s-busy,2,goto(default,s,1) exten => _s-.,1,goto(s-noanswer,1) exten => a,1,voicemailmain(${arg1}) để gọi macro này exten => 1234,1,Macro(stdexten,1234,SIP/7960) ở đây biến ${ARG1} thể hiện extension, ${ARG2} thể hiện thiết bị được gọi tới. hoạt động của macro này như sau: thực hiện gọi tới thiết bị, tuỳ thuộc vào trạng thái thiết bị (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) để nhấy đên extension tương ứng. chương trình Macro() định nghĩa sẵn một số biết đặt biệt để bạn tiện sử dụng trong các macro. ${MACRO_CONTEXT} 6 / 8

thể hiện context mà macro đã gọi ${MACRO_EXTEN} thể hiện extension mà macro đã gọi ${MACRO_PRIORITY} thể hiện priority mà macro đã gọi ${ARGn} thể hiện biến mà bạn truyền vào khi gọi macro. [globals] JOHN=Zap/1 JANE=SIP/Jane JACK=SIP/Jack [macro-voicemail] exten => s,1,dial(${arg1},10) exten => s,n,gotoif($["${dialstatus}" = "BUSY"]?busy:unavail) exten => s,n(unavail),voicemail(${macro_exten}@voicemail,u) exten => s,n,hangup() exten => s,n(busy),backgound(busy-calllater) exten => s,n,hangup() [internal] exten => 101,1,Macro(voicemail,${JOHN}) exten => 102,1,Macro(voicemail,${JANE}) exten => 103,1,Macro(voicemail,${JACK}) 7 / 8

Ở ví dụ trên macro [macro-voicemail] thực hiện việc quay số, tuỳ thuộc vào trạng thái kết nối nếu máy bận hệ thống sẽ đưa ra thông báo bận để người gọi gọi lại sau, nếu cuộc gọi không thực hiện được hệ thông cho phép người gọi gửi lại lời nhắn vào hộp thư thoại của người được gọi tương ứng. 8 / 8