opensips脚本中没有类似function这样的关键字来定义函数,它的函数主要有两个来源。
- opensips核心提供的函数:
- 模块提供的函数: lb_is_destination(), consume_credentials()
函数特点
opensips函数的特点
- 最多支持6个参数
- 所有的参数都是字符串,即使写成数字,解析时也按照字符串解析
- 函数的返回值只能是整数
- 所有函数不能返回0,返回0会导致路由停止执行,return(0)相当于exit()
- 函数返回的正数可以翻译成true
- 函数返回的负数会翻译成false
- 使用return(9)返回结果
- 使用$rc获取上个函数的返回值
虽然opensips脚本中无法自定义函数,但是可以把route关键字作为函数来使用。
可以给
# 定义enter_log函数
route[enter_log]{
xlog("$ci $fu $tu $param(1)") # $param(1) 是指调用enter_log函数的第一个参数,即wangdd
return(1)
}
route{
# 调用enter_log函数
route(enter_log, "wangdd")
# 获取enter_log的返回值 $rc
xlog("$rc")
}
如何传参
某个函数可以支持6个参数,全部都是的可选的,但是我只想传第一个和第6个,应该怎么传?
不想传参的话,需要使用逗号隔开
siprec_start_recording(srs,,,,,media_ip)