opensips开启python支持

这篇具有很好参考价值的文章主要介绍了opensips开启python支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

操作系统 :CentOS 7.6_x64  
opensips版本: 2.4.9  
python版本:2.7.5

python作为脚本语言,使用起来很方便,查了下opensips的文档,支持使用python脚本写逻辑代码。今天整理下CentOS7环境下opensips2.4.9的python模块笔记及使用示例,并提供运行效果视频和配套文件下载。

我将从以下几方面进行展开:

  • 模块安装说明

  • 模块参数说明

  • 模块函数说明

  • 模块使用示例

python模块官方文档:
https://opensips.org/docs/modules/2.4.x/python.html

opensips开启python支持

一、模块安装说明

1)安装python开发库

yum install  python-devel.x86_64

2)进入opensips源码目录

cd opensips-2.4.9

3)选中 python 模块

make menuconfig

opensips开启python支持

 4)编译及安装opensips

make && make install

opensips开启python支持

 CentOS7环境下源码安装opensips,可参考如下文章:

CentOS7环境源码安装opensips2.4.9

二、模块参数说明

模块文件: python.so
模块参数如下:

  • script_name
    用于设置python脚本的路径。

  • mod_init_function
    用于设置python脚本的初始化函数,默认是mod_init

  • child_init_method
    用于设置python脚本的子进程(子类)的初始化函数,默认是child_init

模块加载及配置数据库
文件:opensips.cfg

配置示例:

#### python module
loadmodule "python.so"
modparam("python", "script_name", "/usr/local/etc/opensips/op-test1.py")
#modparam("python", "mod_init_function", "module_initializer")
#modparam("python", "child_init_method", "child_initializer")

三、函数说明

1、cfg文件调用函数

函数: python_exec

python_exec(method_name [, extra_args])

该函数调用python脚本里面的方法。

2、python脚本内部调用函数

2.1 LM_ERR函数

在python里面,opensips作为独立的模块,导出了LM_ERR函数,定义如下(python_iface.c):

opensips开启python支持

 该函数用于打印日志,示例如下:

LM_ERR('test msg from python')

2.2 sip msg相关属性及方法

属性定义如下(python_msgobj.c):

opensips开启python支持

 方法定义如下(python_msgobj.c):

opensips开启python支持

  • Type
    msg的类型,SIP_REQUEST 或 SIP_REPLY

  • Method
    msg的方法,比如:"INVITE"

  • Status
    msg的状态,只适用于reply

  • RURI
    msg的R-URI,只适用于request

  • src_address
    msg的源地址信息

  • dst_address
    msg的目的地址信息

  • copy()
    复制当前SIP消息

  • rewrite_ruri(uri)
    修改msg的request URI,仅适用于request

  • set_dst_uri(uri)
    修改msg的destination URI ,仅适用于request

  • getHeader(hdr)
    获取SIP头的具体内容

  • call_function(funName,...)
    调用其它模块的函数

四、使用示例

这里演示下python模块的加载,及使用该模块进行简单测试。

1、打印日志

使用LM_ERR函数进行日志打印。

示例代码(op-test1.py):

from OpenSIPS import LM_ERR

class ObjA():
    def child_init(self,rank):
        return 0

    def pytest1(self,var1):
          LM_ERR("test msg from python script")
          return 1

def mod_init():
    return ObjA()

opensips.cfg配置如下:

#### python module
loadmodule "python.so"
modparam("python", "script_name", "/usr/local/etc/opensips/op-test1.py")
#modparam("python", "mod_init_function", "module_initializer")
#modparam("python", "child_init_method", "child_initializer")

####### Routing Logic ########

# main request routing logic

route{
    if(python_exec("pytest1"))  {
        xlog("python test1 return true\n");
    }
    exit;

运行效果如下:

opensips开启python支持

运行效果视频可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2024042301 获取。

2、调用其它模块函数

示例代码及配置可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20240423 获取。

运行效果如下:

opensips开启python支持

 运行效果视频可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2024042302 获取。

3、实现呼叫路由

这里演示下python实现话务路由的功能。

机器列表:

freeswitchA :192.168.137.31:5080

opensips :192.168.137.33:5060

freeswitchB :192.168.137.32:5080

测试目标:将freeeswitchA呼叫opensips的通话路由到freeswitchB机器。

拨号方案等信息参考如下文章:

opensips使用drouting进行路由

示例代码及配置可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20240423 获取。

运行效果如下:

opensips开启python支持

 抓包效果如下:

opensips开启python支持

 运行效果视频可从如下渠道获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2024042303 获取。

五、资源下载

本文涉及资源,可以从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20240423 获取。

opensips开启python支持

 好,就这么多了,别忘了点赞哈!文章来源地址https://www.toymoban.com/news/detail-856736.html

到了这里,关于opensips开启python支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows 10操作系统中开启Ping功能(ICMP)的方法

    本文主要介绍在 Windows 10 操作系统中打开启 Ping 功能,即 ICMP 回显请求的方法。 1. 在“设置”中找到并打开“Windows安全中心”; 2. 在“Windows安全中心”页面中,打开“防火墙和网络保护-允许应用通过防火墙”对应页面,在该页面的“允许的应用和功能(A)”窗口中找到“文

    2024年02月11日
    浏览(48)
  • 介绍一些操作系统— CentOS 系统

    CentOS 系统 CentOS 是 Linux 发行版之一,是免费的、开源的、可以 重新分发 的开源操作系统。 CentOS Linux发行版是一个稳定的,可预测的,可管理的和可复现的平台,源于 Red Hat Enterprise Linux(RHEL)依照开放源代码规定释出的源码所编译而成。 自 2004 2004 2004 年 3 3 3 月以来,Cen

    2024年02月13日
    浏览(45)
  • 安卓系列机型 另类体验第三方系统 DSU操作步骤解析 不影响主系统开启第二系统

    dsu loader即 动态系统更新,可以在使用动态分区的安卓设备上,不影响原来系统的同时安装一个副系统,用于体验最新的原生安卓系统。可以不影响主系统的基础上体验其他gsi第三方。DSU 依赖于 Android 动态分区功能,并要求 GSI 作为可信系统映像由 Google 或您的 OEM 进行签名

    2024年02月08日
    浏览(55)
  • .NET各版本支持的操作系统

    借助虚拟机和测试机,检测各版本操作系统对.NET的支持情况。 安装操作系统后,实测安装相应运行时并能够运行星尘代理为通过。 测试平台:VMware Workstation 镜像来源:MSDN I Tell You 参考: .NET Framework 版本和依赖关系 .NET Framework 系统要求 系统 .NET2.0 SP2 .NET3.5 SP1 .NET4.0 .NET4.5

    2024年02月16日
    浏览(44)
  • Docker 介绍 及 支持的操作系统

    Docker组成: Docker主机(Host): 一个物理机或虚拟机, 用于运行Docker服务进程和容器, 也成为宿主机, node节点。 Docker服务器端(Server): Docker守护进程, 运行Docker容器。 Docker客户端(Client): 客户端使用docker命令或其他工具调用docker API。 Docker仓库(Registry):保存镜像的仓库, 官方仓库

    2024年02月02日
    浏览(41)
  • 银河麒麟服务器操作系统 V10 SP1 开启SSH服务

    此处显示已经安装了openssh。 如果此处没有任何输出显示,表示没有安装openssh 当发现没有安装openssh时,使下面的命令安装openssh: 如图所示,已经开启sshd服务。 如果显示未开启sshd服务,使用下列命令开启sshd服务 使用下面的命令查看ssh服务是否开机启动 如上图所示,ssh已经

    2023年04月22日
    浏览(54)
  • CentOS-7操作系统安装与配置

    1.软硬件准备 软件:VMware工作站允许一台真实的计算机同时运行数个操作系统,如Windows、Linux、BSD等衍生版本。 VMware 15.5 PRO下载:https://my.vmware.com/cn/web/vmware/downloads 镜像:CentOS是一个基于Red Hat Linux提供的可自由使用源代码的企业级Linux发行版本。CentOS 7下载:http://www.centos

    2024年02月11日
    浏览(53)
  • 优化操作系统脚本(仅适用centos)

    2024年02月13日
    浏览(39)
  • macOS 12 Monterey v12.7.1正式版:开启全新的操作系统体验

    macOS 12 Monterey已经向所有兼容的Mac设备推出,为您带来了一系列强大的新功能和改进。这个全新的操作系统版本,不仅带来了更流畅的用户体验,还增强了与iOS设备的无缝集成,让您的设备使用更加高效,更加便捷。 macOS 12 Monterey v12.7.1正式版的推出,标志着苹果操作系统的一

    2024年02月07日
    浏览(74)
  • Centos操作系统yum源的使用

            Yum是Centos操作系统中的一个重要工具,它可以帮助用户方便地管理软件安装和更新,而yum源则是提供这些软件的资源库。本文将介绍Centos操作系统中如何使用yum源。 在Centos中,我们可以通过执行以下命令查看已有的yum源: 以上命令可以列出yum源配置文件所在的目

    2024年02月07日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包