首页 > 其他分享 >opensips开启lua支持

opensips开启lua支持

时间:2024-05-20 16:07:18浏览次数:20  
标签:.. xlog 开启 lua opensips 模块 msg

操作系统 :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/[email protected]: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/[email protected]:5060 &echo

运行效果如下:

 好,就这么多了,别忘了点赞哈!

标签:..,xlog,开启,lua,opensips,模块,msg
From: https://www.cnblogs.com/MikeZhang/p/18202208/oplua20240520

相关文章

  • 【Nginx】开启SSI模块支持include文件引入
    SSI是ServerSideInclude的首字母缩略词。包含有嵌入式服务器方包含命令的HTML文本。在被传送给浏览器之前,服务器会对SHTML文档进行完全地读取、分析以及修改。在Nginx中,开启SSI支持非常简单,通过向nginx.conf中添加几行设置命令即可实现。将下面的3行代码添加到ngi......
  • 正式开启全站HTTPS加密之旅
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`正式开启全站HTTPS加密之旅日期:2017-7-14阿珏谈天说地浏览:2158次评论:0条经过有段时间的内测,博客正式开启全站https。建站到......
  • AI绘画拉取模型失败,DOS开启代理
    我用了这么久的代理第一次知道DOS里面要开代理,惭愧惭愧。在我远程拉取模型的时候,挂科学也一直失败。在网上找报错找了很长时间没找到,最后经过一位群友的提示下,才知道问题出在DOS代理上面。直接看文章第一部分就行,要是直接tun不行,再看下面的直接开启tun这个是V2的开启方法......
  • 热更学习笔记10~11----lua调用C#中的List和Dictionary、拓展类中的方法
    [10]Lua脚本调用C#中的List和Dictionary调用还是在上文中使用的C#脚本中Student类:lua脚本:print("------------访问使用C#脚本中的List和Dictionary-----------")student.list:Add(2024)student.list:Add(5)student.list:Add(18)locallistSize=student.list.Countprin......
  • jenkins docker 开启debug 简单说明
    jenkinsdocker镜像为了方便调试,已经内置了一个环境变量可以方便的开启基于jdwp协议的debug处理,以下是一个简单使用参考配置docker-compose文件services:jenkins:image:jenkins/jenkins:ltsenvironment:-DEBUG=trueports:......
  • 使用-C---C--和-Lua-的-CryENGINE-游戏编程-全-
    使用C++、C#和Lua的CryENGINE游戏编程(全)原文:zh.annas-archive.org/md5/9DE4C1E310A0B5A13812B9CEED44823A译者:飞龙协议:CCBY-NC-SA4.0前言开发和维护游戏的过程在过去几年中发生了非常快速的变化。越来越普遍的是游戏开发者许可第三方游戏引擎,如CryENGINE,以便完全......
  • kubernetes 源码开启 go work 模式
    为了更方便进行go项目多模块管理,go社区在gomod之后引入了go workspaces模式。kubernetes社区最近在 kubernetes源码中启用 go workspaces模式。go提出 go workspaces模式的issue,和社区 thockin 的关注 cmd/go:supportvendoringinworkspacemode·Is......
  • 源服务器开启gzip,CDN上没开启,CDN节点请求是以gzip大小算还是按原来的大小算
    今天学到一个知识:当源服务器开启了gzip压缩,而CDN上没有开启gzip时,CDN节点请求的流量计算通常是基于未压缩的原始文件大小来计算的。这是因为CDN通常是根据其接收到的内容来计算流量,而不会主动去解压缩已压缩的内容来计算。具体来说,当CDN节点从源服务器获取内容时,如果源服务器返......
  • yolov8开启tensorboard
    什么是TensorBoard?TensorBoard是一个用于可视化机器学习模型训练过程中的各种指标的工具,它可以帮助用户更好地理解和调试模型。TensorBoard可以显示各种类型的数据,如损失函数值、准确率、权重矩阵等,并且支持多种图表类型,如折线图、柱状图、散点图等。通过使用TensorBoard,用户可......
  • Linux - 开启FTP服务
    vsftpd 一、Centos6.x配置ftp1.1、安装OpenSSH-serverOpenSSH-server包含了FTP服务,通常,CentOS6.x默认已经安装了OpenSSH-server(1)查看是否安装:rpm-qopenssh-server(2)安装openssh-server:yum-yinstallopenssh-server 1.2、创建用户和目录(1)创建用户:useradd-mftpu......