opensips开启lua支持
操作系统 :CentOS 7.6_x64
opensips版本 :2.4.9
lua版本:5.1
今天整理下CentOS7环境下opensips2.4.9的lua模块笔记及使用示例,并提供运行效果截图。我将从以下几方面进行展开:
模块安装说明
模块参数说明
模块函数说明
模块使用示例
lua模块官方文档:
https://opensips.org/docs/modules/2.4.x/lua.html

一、安装lua模块
1)安装lua模块依赖的开发库
yum install lua-devel.x86_64 libmemcached-devel.x86_64
2)进入opensips源码目录
cd opensips-2.4.9
3)编译时选中 lua 模块

4)编译及安装opensips
make && make install

CentOS7环境下源码安装opensips,可参考如下文章:
二、模块参数说明
这里列举下常用参数,完整内容参考官方文档。模块文件:lua.so模块参数如下:
luafilename
lua脚本文件的路径,该文件包含需要调用的lua函数。
该参数只能设置一次,设置多次的话后面的会把前面的替换掉,只加载最后一个lua文件。
示例如下:
modparam("lua", "luafilename", "/usr/local/etc/opensips/op-test1.lua")
三、函数说明
这里列下常用的函数,其它函数参考官方文档。
1、模块函数(op配置文件中使用)
lua_exec
用于执行lua函数。
2、lua脚本可用函数
这里列下常用的函数,其它函数参考官方文档。
- xlog
输出日志,级别(可选)如下:
ALERT
CRIT
ERR
WARN
NOTICE
INFO
DBG
示例如下:
xlog("luaTest1 return true\n");
- getMethod
获取sip msg的方法,比如INVITE等。
示例如下:
xlog("msg method : " .. getMethod(msg) .. "\n")
- getType
获取sip msg的类型,返回 "SIP_REQUEST" 或 "SIP_REPLY"
示例代码:
xlog("Type : " .. getType(msg) .. "\n")
- getURI_User
获取dst uri里面的值
示例代码:
xlog("URI_User: " .. getURI_User(msg) .. "\n")
- getHeader
获取sip头,示例如下:
xlog("sip.Content-Type: " .. getHeader(msg,"Content-Type") .. "\n")
- moduleFunc
调用opensips其它模块的函数。
比如:
moduleFunc(msg,'sl_send_reply',"483","Too Many Hops")
四、使用示例
这里演示下lua模块的加载,及使用该模块进行简单测试。
opensips机器:192.168.137.33
Freeswitch机器:192.168.137.32
1、模块加载及日志打印
使用 xlog 函数打印日志。
示例代码(op-test1.lua):
function luaTest1(msg)
xlog("this is a lua test message\n")
return 1
end
其中,msg是默认参数。
opensips.cfg配置如下:
#### lua module
loadmodule "lua.so"
modparam("lua", "luafilename", "/usr/local/etc/opensips/op-test1.lua") ####### Routing Logic ######## # main request routing logic route{ if (lua_exec("luaTest1")) {
xlog("luaTest1 return true\n");
}
重启opensips :opensipsctl restart
呼叫测试:
originate {}sofia/external/111@192.168.137.33:5060 &echo
运行效果如下:

2、调用msg函数
lua脚本示例如下:
function luaTest2(msg)
xlog("Type : " .. getType(msg) .. "\n")
xlog("msg method : " .. getMethod(msg) .. "\n")
xlog("URI_User: " .. getURI_User(msg) .. "\n")
xlog("sip.Content-Type: " .. getHeader(msg,"Content-Type") .. "\n")
moduleFunc(msg,'sl_send_reply',"483","Too Many Hops")
return 1
end
opensips.cfg配置如下:

重启opensips :opensipsctl restart
呼叫测试:
originate {}sofia/external/111@192.168.137.33:5060 &echo
运行效果如下:

好,就这么多了,别忘了点赞哈!
opensips开启lua支持的更多相关文章
- windows 下 gvim/vim lua支持问题,neocomplete等插件支持
此文是按照知乎 https://www.zhihu.com/question/29333426 "windows下vim的lua支持问题?" 一文汇总的解决方案. 题主提供了不错的 ...
- Tomcat7开启CGI支持的方法
tomcat默认没有开启cgi支持,因此有了tomat开启cgi的探索.因为原本对tomcat没多了解,所以中间或多或少走了点弯路.还好最终配置成功了,现在jy也用上这个方法了. 该方法在apa ...
- 为cocos2d-x项目增加Lua支持
开始为游戏增加Lua脚本支持,今天主要配置了一下开发环境:cocos2d-x 2.2.1,xcode5. 1. 创建cocos2d-x-lua项目 类似于创建C++项目,用以下命令即可: python ...
- Nginx安装lua支持
Nginx安装lua支持 需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.下载安装LuaJIT-2.0.4.tar.gz wget -c ...
- 11: Nginx安装lua支持
1.1 Nginx 使用lua脚本 注:需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.Nginx安装lua支持 wget -c http ...
- Ubuntu中vim添加lua支持
系统:Ubuntu 15.10/16.04 因为Ubuntu15.10系统自带vim不支持lua,所以得自己编译安装. $ sudo apt install vim-nox vim-nox可以让vim ...
- Java SpringBoot注解方式开启异步支持
package task.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import ...
- datax开启hana支持以及dolphinscheduler开启datax任务
datax开启hana支持以及dolphinscheduler开启datax任务 前面(@,@) 前段时间因为要做异构数据导入导出,所以搜了下,发现这类工具收费的居多,使用起来未必趁手~ 于是我找了下 ...
- 让Lua支持Linq吧
第一次接触Linq是在使用C#的时候,这种语法,在处理列表数据非常方便.如果想了解Linq的更多内容可以百度一下Linq,不过你不了解也没关系,让我在Lua中给你展示一下Linq的魅力.简单点说,Li ...
- Nginx 开启PATHINFO支持ThinkPHP框架实例
ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可.在Apache下只需要开启mod_rew ...
随机推荐
- 未来已来,OpenHarmony 3.2 Release发布,迈入发展新阶段
2023年4月9日,在社区开发者的期盼中,在春风送暖万物更新的季节里,我们迎来了OpenAtom OpenHarmony(以下简称"OpenHarmony")3.2 Relea ...
- Git安装和配置教程:Windows/Mac/Linux三平台详细图文教程,带你一次性搞定Git环境
Git是一款免费.开源的分布式版本控制系统,广泛应用于软件开发领域.随着开源和云计算的发展,Git已经成为了开发者必备的工具之一.本文将为大家介绍Git在Windows.Mac和Linux三个平台上的 ...
- VS 2020制作安装包
VS制作安装包的一般步骤. 一·新建项目 (1)新建 (2)界面跳转 二·添加引用 (1)添加卸载程序 1.在'C:WINDOWSsystem32'路径下,找到msiexec.exe . 2.将msi ...
- 打造美团外卖新体验,HarmonyOS SDK 持续赋能开发者共赢鸿蒙生态
从今年 8 月起,所有升级到 HarmonyOS 4 的手机用户在美团外卖下单后,可通过屏幕上的一个"小窗口",随时追踪到"出餐.取餐.送达"等订单状态.这个能 ...
- redis 简单整理——客户端案例分析[十八]
前言 简单整理一下客户端案例分析. 正文 现象一: 服务端现象:Redis主节点内存陡增,几乎用满maxmemory,而从节点 内存并没有变化. 客户端现象:客户端产生了OOM异常,也就是Redis主 ...
- Redis工具类,不用框架时备用
redis.hostName=127.0.0.1 redis.port=6379 redis.database=3 redis.timeout=15000 redis.usePool=true red ...
- 使用EPLAN做项目的收获点
收获点如下: 1.消息检查功能. 最具有代表性的EPLAN软件的辅助检查功能.通过自带检查可以发现设计的错误和警告. 2.导线表导出功能. 使用导入模版.宏设置,导出对应线号表. 此类接线通过一个导线 ...
- WPF/C#:让绘制的图形可以被选中并将信息显示在ListBox中
实现的效果 如果你对此感兴趣,可以接着往下阅读. 实现过程 绘制矩形 比如说我想绘制一个3行4列的表格: private void Button_Click_DrawRect(object sende ...
- 【git】ignore文件详解
1.功能 可以指定git,对于某些文件或者文件夹不进行追踪记录,例如一些依赖或者编译中间文件等. 2.使用注意 2.1 对于已经有提交记录的文件 对于已经提交的文件,即使加入了ignore文件也会被g ...
- 力扣620(MySQL)-有趣的电影(简单)
题目: 某城市开了一家新的电影院,吸引了很多人过来看电影.该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述. 作为该电影院的信息部主管,您需要编写一个 SQL查 ...