操作系统 :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,可参考如下文章:

CentOS7环境源码安装opensips2.4.9

二、模块参数说明

这里列举下常用参数,完整内容参考官方文档。模块文件: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支持的更多相关文章

  1. windows 下 gvim/vim lua支持问题,neocomplete等插件支持

    此文是按照知乎 https://www.zhihu.com/question/29333426 "windows下vim的lua支持问题?" 一文汇总的解决方案. 题主提供了不错的 ...

  2. Tomcat7开启CGI支持的方法

    tomcat默认没有开启cgi支持,因此有了tomat开启cgi的探索.因为原本对tomcat没多了解,所以中间或多或少走了点弯路.还好最终配置成功了,现在jy也用上这个方法了.    该方法在apa ...

  3. 为cocos2d-x项目增加Lua支持

    开始为游戏增加Lua脚本支持,今天主要配置了一下开发环境:cocos2d-x 2.2.1,xcode5. 1. 创建cocos2d-x-lua项目 类似于创建C++项目,用以下命令即可: python ...

  4. 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 ...

  5. 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 ...

  6. Ubuntu中vim添加lua支持

    系统:Ubuntu 15.10/16.04 因为Ubuntu15.10系统自带vim不支持lua,所以得自己编译安装. $ sudo apt install vim-nox vim-nox可以让vim ...

  7. Java SpringBoot注解方式开启异步支持

    package task.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import ...

  8. datax开启hana支持以及dolphinscheduler开启datax任务

    datax开启hana支持以及dolphinscheduler开启datax任务 前面(@,@) 前段时间因为要做异构数据导入导出,所以搜了下,发现这类工具收费的居多,使用起来未必趁手~ 于是我找了下 ...

  9. 让Lua支持Linq吧

    第一次接触Linq是在使用C#的时候,这种语法,在处理列表数据非常方便.如果想了解Linq的更多内容可以百度一下Linq,不过你不了解也没关系,让我在Lua中给你展示一下Linq的魅力.简单点说,Li ...

  10. Nginx 开启PATHINFO支持ThinkPHP框架实例

    ThinkPHP支持通过PATHINFO和URL rewrite的方式来提供友好的URL,只需要在配置文件中设置 'URL_MODEL' => 2 即可.在Apache下只需要开启mod_rew ...

随机推荐

  1. 稀疏镜像在OpenHarmony上的应用

    一.稀疏镜像升级背景 常用系统镜像格式为原始镜像,即RAW格式.镜像体积比较大,在烧录固件或者升级固件时比较耗时,而且在移动设备升级过程时比较耗费流量.为此,将原始镜像用稀疏描述,可以大大地缩减镜像体 ...

  2. Go 语言 Printf 函数和格式化动词详解

    Printf() 函数可以使用多种格式化动词对输出进行格式化.下面是可以与所有数据类型一起使用的一些通用格式化动词: 以下动词适用于所有数据类型: 动词 描述 %v 以默认格式打印值 %#v 以 Go ...

  3. 深入了解图片Base64编码

    title: 深入了解图片Base64编码 date: 2024/4/8 10:03:22 updated: 2024/4/8 10:03:22 tags: Base64编码 图片转换 HTTP请求 ...

  4. HMS Core Discovery第15期直播预告|构筑立体世界,共造沉浸式营销

    [导读] AR技术,是一种将真实世界信息和虚拟世界信息"无缝"衔接的技术,现如今AR技术受到日益广泛的关注,在我们生活中发挥着重要的作用,并显示出巨大的潜力--它是如何改变我们观察 ...

  5. cas登录成功后跳转地址和退出后跳转首页

    cas登录成功后跳转地址和退出后跳转首页 CAS版本5.3 1.登录页面 的登录链接地址为 login.html ...<span v-if="username == ''" ...

  6. HDC2021技术分论坛:HarmonyOS本地模拟器重磅来袭!

    作者:longjiangyun,模拟器开发工程师 HarmonyOS模拟器是应用开发者使用IDE进行代码开发.调试.测试等活动中必不可少的工具,它分为本地模拟器和远程模拟器,其中远程模拟器又分为单设备 ...

  7. HUAWEI DevEco Studio 3.1版本发布,配套ArkTS声明式开发全面升级

     原文:https://mp.weixin.qq.com/s/ap5gH7vm3BUm0nU2WOzAzw,点击链接查看更多技术内容.     今年开发者大会发布了HarmonyOS应用开发套件Dev ...

  8. HDC 2022精彩继续,多重亮点进来看!

    原文:https://mp.weixin.qq.com/s/YX5vD4cxM8dA4v2ukFooyA,点击链接查看更多技术内容.  

  9. mm系列权重文件瘦身

    瘦身脚本: (会在resnet50.pth文件的同级目录下生成一个resnet50_thin.pth) import os import torch root_dir = os.getcwd() de ...

  10. 利用navicat 完成两台服务器之间的数据库迁移,安全可靠

    首先,准备工作先做好 1. 工具,navicat,我这里用的是navicat12+ 2. 建立两台服务器的链接,即新建链接,mysql,同时,需要在迁移目标服务器上面实现建立好对应的数据库,即如果有1 ...