Dialplan是整个Asterisk的核心。
关于Dialplan的配置涉及的配置文件有extensions.conf extension.ael 和 extensions.lua。
extensions.ael和extensions.lua是Dialplan的两个脚本文件,分别用AEL和LUA写的。
extensions.conf是一般Dialplan配置的文件。
Dialplan有4个基本的元素:Context, Extension, Priority, Application
1、Context
Asterisk把Dialplan分割成一个个区域叫作context。context一般以一组extensions命名。
format:
[context]
...
特殊的context
[general]
;Dialplan的一般设置
[globals]
;Global Variables
2、Extensions
extensions通常是一个数字号码,或者是一类数字号码
format:
exten => number,priority,application
exten =>: extensions的固定格式 对于同一个extension 也可以使用same => 后面可以省略number
number:号码,服从正则表达式规则,
特殊的符号:
_:模式匹配的开头
X:0-9之间任意一个数字
Z:1-9之间任意一个数字
N:2-9之间任意一个数字
.:匹配0个或多个数字
[]:匹配括号中的任意一个数字
!:当没有其它可能的匹配存在时,结束匹配过程(不明)
_9[1-378]XX 匹配91、92、93、97、98开头的四位数号码
3、Priority
priority是以1开始的数字或者n(next).连续的操作,priority必须是连续的。例如
exten => 1234,1,Answer()
exten => 1234,2,Dial(SIP/2345)
exten => 1234,3,Hangup
会依次执行Answer-->Dial-->Hangup
exten => 1234,1,Answer()
exten => 1234,2,Dial(SIP/2345)
exten => 1234,4,Hangup
只会执行 Answer-->Dial
4、Application
Application是asterisk提供的一些接口,例如Answer,Dial,Hangup,详见ast_app.c
Application可以带参数也可以不带参数,多个参数之间用逗号分割。
Note:
Answer是呼叫者与Asterisk之间的Answer
Asterisk
/2.Answer \3.Dial
sip/ \sip
channel/ \channel
/ \
1.Dial/ 5.RTP \4.Answer
User1<-------------> User2
RTCP
待续...