Asterisk dialplan中部分function使用说明

来源:互联网 发布:linux测试oracle 编辑:程序博客网 时间:2024/05/29 00:33
这里介绍一下Asterisk Dialplan中使用比较多的function,帮助大家理解。这些function在Asterisk1.8.5.0上验证通过。
CUT()
根据分隔符,从字符串中获取子串。
语法:
CUT(varname,char-delim,range-spec)
varname: 字符串
char-dellim: 分隔符,默认为"-"
range-spec: 子串范围
举例说明:
Set(var_string=abcde,fghij,klmno,pqrst);
Set(cut_string=${CUT(var_string,\,,1&3)});
NoOp(++ ${var_string} ++); // ++ abcde,fghij,klmno,pqrst ++
NoOp(++ ${cut_string} ++); // ++ abcde,klmno ++
TOUPPER()
将字符串中小写的字母转换为大写字母。
举例说明:
${TOUPPER(Example)} 结果为 EXAMPLE
TOLOWER()
将字符串中小写大写字母转换为小写字母。
举例:
${TOLOWER(Example)} 结果为example
BASE64_ENCODE() / BASE64_DECODE()
利用base64对字符串参数进行编/解码。
BASE64_ENCODE(aabbccdd); // YWFiYmNjZGQ=
BASE64_DECODE(c3RyaW5nc3RyaW5n); // stringstring
RAND()
语法:
RAND([min][,max])
随机生成一个指定范围内的数。
RAND(1,1000); // 数值必落在1~1000之内。
NoOp(${RAND(1,1000)}); // 423
SYSINFO()
参数:parameter
parameter
    loadavg - 系统过去1分钟的负载平均值
    numcalls - 正在进行的呼叫数
*   uptime - 系统运行时长,单位为小时。
*   totalram - 总的内存,单位是KB.
*   freeram - 可用的内存大小,单位是KB.
*   bufferram - buffers占用的内存大小,单位是KB.
*   totalswap - 总交换分区(swap)的大小,单位是KB.
*   freeswap - 空闲交换分区的大小,单位是KB.
*   numprocs - 当前进程数
注:带*的参数依赖于操作系统。CentOS上是可用的
举例:
Set(loadavg=${SYSINFO(loadavg)}); // 系统过去1分钟的负载平均值
REGEX()
正则表达式匹配。匹配成功为1;匹配不成功为0。
语法:
REGEX("regular expression" string)
表达式和字符串之间有一个空格。
举例:
string=abc323dfdsade;
Set(regex_text=${REGEX("[abc]{2,3}\d?[a-d]{1,}" ${string})}); // regex_text=1
该function的功能还不完善,一些正则表达式中使用的规则在此暂无法使用。
SPRINTF(format,arg1[,arg2[,...][,argN]])
字符串格式化输出。类似于C语言函数的sprintf。
举例:
Set(tel=01087120766);
NoOp(-- ${SPRINTF("Phone number is %s",${tel})} --); // Phone number is 01087120766
NoOp(-- ${SPRINTF("Phone number is %d",${tel})} --); // Phone number is 1087120766
STRFTIME([epoch][,timezone[,format]])
UNIX时间的格式化输出。
format的取值可以参看strftime说明。[ man strftime 3 ]
举例:
NoOp(-- ${STRFTIME(${EPOCH},,%Y-%m-%d@%H:%M:%S)} --); // -- 2012-11-23@14:40:25 --
SHIFT(varname[,delimiter])
获取变量中,根据给定的分隔符,将变量截断,并返回第一部分。
Set(array=abc,def,ghi,jkl,mno,pqr);
NoOp(-- ${SHIFT(array)} --); // -- abc --
NoOp(-- ${array} --);   // -- def,ghi,jkl,mno,pqr --
while($["${SET(var=${SHIFT(array)})}" != ""]){
    NoOp(var is ${var});// 依此输出:abc def ghi jkl mno pqr
}
STAT()
检查一个指定的文件
用法:
STAT(flag,filename)
参数:
flag
    d - 检查文件是否为目录。返回值:是,1;否,0。
    e - 检查文件是否存在。返回值:存在,1;否则,0。
    f - 检查文件是否为普通文件(regular file,除设备文件、字符文件、管道文件、socket文件等之外的文件)。返回值:是,1;否则,0。
    m - 返回文件的模式属性,读、写、可执行等,十进制的形式显示。
    s - 返回文件的字节大小。
    A - 返回文件最后一次被访问(读取)的UNXI时间,如1352794323
    C - 返回文件的索引节点inode最后一次被修改的UNIX时间。比如文件位置、用户属性、组属性等修改。
    M - 返回文件内容能被最后修改的UNIX时间。
filename
文件名字,绝对路径.
举例:
Set(is_exist=${STAT(e, /tmp/abc.txt)}; // 文件/tmp/abc.txt,若存在,则${is_exist}值为1;若不存在其值为0。
Set(is_exist=${STAT(d, /tmp/abc)};      // 目录/tmp/abc,若存在,则${is_exist}值为1;若不存在其值为0。
NoOp(${STAT(m, /tmp/a.wav); // 100644
NoOp(${STAT(A, /tmp/a.wav)}); // 1352794323,即2012-11-26 15:34:18
QUOTE()

给字符串加引号

用法:

QUOTE(string)

举例:

NoOp(-- ${QUOTE(ab"c"de)} --); // -- "ab\"c\"de" --

注明:CLI命令core show function QUOTE输出结果中提到的示例有误,以本示例为准。

原创粉丝点击