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脚本里的函数相关推荐

  1. Unity+C#开发笔记(七)| unity中继承MonoBehaviour类的脚本里的函数怎么调用 | ╭(●`∀´●)╯╰(●’◡’●)╮

    继上文,有个蠢货单例模式只是用来引用,突然遇到了一个继承了MonoBehaviour的类,然后unity跟你讲:不!你不可以在我这里这么用! 啊这--吓得我当场百度... ************** ...

  2. export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...

    高阶函数的定义 在<javascript设计模式和开发实践>中是这样定义的. 函数可以作为参数被传递: 函数可以作为返回值输出. 结合这两个特点,首先想到的肯定是回调函数,回调函数也是高阶 ...

  3. ASP基础教程:ASP脚本变量、函数、过程和条件语句

    在上一期中作者向诸位简要介绍了 ASP 脚本语言之一 VBScript 的一些基本常识,本期将继续给大家讲解 VBScript 的脚本编写方法,并通过展示 VBScript 在 ASP 程序编写过程中 ...

  4. python中可以使用变量来引用函数-python如何引用其他py文件里的函数

    python引用其他py文件里的函数方法 Python中在脚本中引用其他文件函数的方法 在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys. ...

  5. html页面调用js文件里的函数报错onclick is not defined问题(作用域问题)

    // 多个tr标签<tr> <td><a href="javascript:void(0);">删除</a></td> ...

  6. matlab 脚本是什么意思,MATLAB提示不能在脚本中定义函数,是什么意思?

    点击查看MATLAB提示不能在脚本中定义函数,是什么意思?具体信息 答:你试图在命令窗口定义函数,这种做法是错误的. 你需要建立一个.m文件,文件名是Chebyshev.m,然后在里面输入源程序. 答 ...

  7. shell脚本编程之函数

    技术交流QQ群:1027579432,欢迎你的加入! 1.基本的脚本函数 脚本函数出现的目的:为了解决大型处理过程中,需要将相同的重复代码封装起来,提高代码的复用性. 函数是一个脚本代码块,你可以为其 ...

  8. loadrunner写脚本常用C函数

    loadrunner写脚本常用C函数 strcat的串连两个字串. strchr返回指向第一次出现的字符串中的字符. STRCMP比较两个字符串来确定的字母顺序. STRCPY一个字符串复制到另一个地 ...

  9. DLL回调EXE里的函数

    EXE call Dll里的函数,然后Dll里的函数callback EXE里的函数 /*EXE代码   作者:SysProgram   日期:2011年3月23日 */ void Msg(TCHAR ...

最新文章

  1. python读取json文件报 No JSON object could be decoded
  2. JSONP的实现原理
  3. ios 缺少合规证明
  4. 论文笔记:Weighted Graph Cuts without Eigenvectors:A Multilevel Approach
  5. 9.03-Springboot要点记录
  6. JAVA入门级教学之(赋值运算符)
  7. shell脚本报错“^M: bad interpreter”解决方法
  8. [手把手教]discuzX2插件制作教程__最菜鸟级别的入门坎 【三】
  9. IPython高级用法(一)定制命令别名及存储别名
  10. 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
  11. bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
  12. 区块链开发公司解析区块链在银行应用的优势
  13. 自己写的BMFont导入工具,快速把图片转换为美术字体
  14. matlab 触发脉冲建模,简单五步实现 MATLAB/Simulink 锂电池建模
  15. 1055 习题4-9-3 逆序输出正整数各位上数字
  16. 科研工具篇|看完之后能提高你80%的科研工作效率
  17. 微信抢红包算法实现(JAVA)
  18. pureftp部署优化
  19. 【机器学习】线性分类——高斯判别分析GDA(理论+图解+公式推导)
  20. javascript判断浏览器

热门文章

  1. 面试官都在问 | Linux命令mpstat详解
  2. linux读取 第一个分区 命令,partprobe命令
  3. 给年后准备跳槽的提个醒!
  4. 数组去重es6的几种写法
  5. KVM虚拟机模板制作
  6. Nginx+IIS分布式部署和负载均衡
  7. vue 项目引入 第三方样式
  8. 1M都不到的极简动态壁纸软件,爱了爱了!
  9. 安卓Activity详解
  10. 各种技术基础研究(小计划)