openSIPS脚本里的函数
OpenSIPS 脚本中,路由块可以调用的函数分为两种类型:一种是由OpenSIPS core提供的;另一种是由外围模块提供的。
OpenSIPS core实现的函数通常简约而不简单,其原型是非常灵活,它们的参数数量不固定(不限制参数数量),任何路由块都能调用,它们接受的参数类型也是可变的。保持这种灵活性是为了保证core函数不受内核与模块之间的接口限制限制。
模块提供的函数,原型定义比较严格,它们最多只能有六个参数,只能接受string类型的参数,即使参数本质上是数字,也必须以string形式传递。比如:
sl_send_reply("404","Not Found");
模块函数可以限定其使用范围,只允许某些特定类型的路由调用。具体的限定,请参考对应的模块文档。如果在受限范围之外调用函数,那么启动时的检查会返回错误。
返回值
所有OpenSIPS 函数都会返回一个int值,说明执行结果。后续脚本可以通过$rc变量捕获函数返回值,并实现相应的处理逻辑。
注意:后续的函数调用会覆盖$rc的值,即$rc只反应最近一次函数调用的返回结果。返回值为正整数表示true;负整数表示false;返回零则直接退出脚本的执行。所以,如非必要,永远不要返回零。
参数的含义是什么,返回码应该如何解释,因功能而异; 具体请查阅说明文档。
最后,看一段简单的实例代码
lookup("location");
#here the $rc holds the return code of the lookup$var(n) = $rc;
xlog("The return code of lookup() is $var(n)\n");
#here the $rc holds the return code of the xlog function
switch ( $var(n) ) {
case -1:# no contacts foundsend_reply("404","Not Found");break;
case -2:# contacts found but method not supportedsend_reply("405","Method not supported");break;
case -3:# some error occurredsend_reply("500","Server error");break;
default:xlog("registration found\n");
}
openSIPS脚本里的函数相关推荐
- Unity+C#开发笔记(七)| unity中继承MonoBehaviour类的脚本里的函数怎么调用 | ╭(●`∀´●)╯╰(●’◡’●)╮
继上文,有个蠢货单例模式只是用来引用,突然遇到了一个继承了MonoBehaviour的类,然后unity跟你讲:不!你不可以在我这里这么用! 啊这--吓得我当场百度... ************** ...
- export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...
高阶函数的定义 在<javascript设计模式和开发实践>中是这样定义的. 函数可以作为参数被传递: 函数可以作为返回值输出. 结合这两个特点,首先想到的肯定是回调函数,回调函数也是高阶 ...
- ASP基础教程:ASP脚本变量、函数、过程和条件语句
在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在 ASP 程序编写过程中 ...
- python中可以使用变量来引用函数-python如何引用其他py文件里的函数
python引用其他py文件里的函数方法 Python中在脚本中引用其他文件函数的方法 在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys. ...
- html页面调用js文件里的函数报错onclick is not defined问题(作用域问题)
// 多个tr标签<tr> <td><a href="javascript:void(0);">删除</a></td> ...
- matlab 脚本是什么意思,MATLAB提示不能在脚本中定义函数,是什么意思?
点击查看MATLAB提示不能在脚本中定义函数,是什么意思?具体信息 答:你试图在命令窗口定义函数,这种做法是错误的. 你需要建立一个.m文件,文件名是Chebyshev.m,然后在里面输入源程序. 答 ...
- shell脚本编程之函数
技术交流QQ群:1027579432,欢迎你的加入! 1.基本的脚本函数 脚本函数出现的目的:为了解决大型处理过程中,需要将相同的重复代码封装起来,提高代码的复用性. 函数是一个脚本代码块,你可以为其 ...
- loadrunner写脚本常用C函数
loadrunner写脚本常用C函数 strcat的串连两个字串. strchr返回指向第一次出现的字符串中的字符. STRCMP比较两个字符串来确定的字母顺序. STRCPY一个字符串复制到另一个地 ...
- DLL回调EXE里的函数
EXE call Dll里的函数,然后Dll里的函数callback EXE里的函数 /*EXE代码 作者:SysProgram 日期:2011年3月23日 */ void Msg(TCHAR ...
最新文章
- python读取json文件报 No JSON object could be decoded
- JSONP的实现原理
- ios 缺少合规证明
- 论文笔记:Weighted Graph Cuts without Eigenvectors:A Multilevel Approach
- 9.03-Springboot要点记录
- JAVA入门级教学之(赋值运算符)
- shell脚本报错“^M: bad interpreter”解决方法
- [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【三】
- IPython高级用法(一)定制命令别名及存储别名
- 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
- 区块链开发公司解析区块链在银行应用的优势
- 自己写的BMFont导入工具,快速把图片转换为美术字体
- matlab 触发脉冲建模,简单五步实现 MATLAB/Simulink 锂电池建模
- 1055 习题4-9-3 逆序输出正整数各位上数字
- 科研工具篇|看完之后能提高你80%的科研工作效率
- 微信抢红包算法实现(JAVA)
- pureftp部署优化
- 【机器学习】线性分类——高斯判别分析GDA(理论+图解+公式推导)
- javascript判断浏览器