OpenSIPS 发布新 Python 包,让集成更简单、更快速、更高效

在当今的集成服务世界中,OpenSIPS 与外部应用程序交互的能力不再是可选的 – 而是一种必需品。为了满足这种必要性,OpenSIPS 发布了一个新的 Python 包, 一种“瑞士军刀”工具,以提供与 OpenSIPS 集成的更简单、更快速、更高效的方式。

该包通过提供 Python 模块来促进高效的双向通信:

  • 运行命令:通过管理接口(MI)轻松发送命令并接收响应——opensips.mi模块。  
  • 事件处理:通过事件接口(EVI)接收和处理实时事件——opensips.event模块。

它还包括以下强大的命令行工具:

  • opensips-mi:用于执行 MI 命令的工具。它直接在控制台中显示输出。它是opensips-cli -x mi命令的简化替代方案。
  • opensips-event:注册特定事件并将其直接输出到控制台的实用程序。非常适合轻松测试各种场景中的事件生成。

opensips.mi

该模块可用于向OpenSIPS MI接口发送命令。目前支持三种不同的传输协议:

fifo:用于在OpenSIPS运行的同一台机器上本地运行命令。  

datagram:用于通过数据报消息运行命令。  

http:通过HTTP查询运行命令。  

当然,确保OpenSIPS加载了适当的MI模块是至关重要的。此外,还必须正确配置以供外部使用。

该模块以JSON对象的形式返回命令响应,允许根据需要进行无缝的进一步处理。

opensips.event

该模块在OpenSIPS中注册特定事件。当事件触发时,它通过数据报传输接收通知。可以选择性地包含一个过期超时时间。每当事件发生时,会调用一个指定的函数。事件负载作为JSON对象传递,包含与事件相关的所有信息。

该模块提供后端支持,在单独的线程中同步等待事件。它还使用asyncio接口来异步处理I/O事件。

示例

使用此软件包的最简单方法是使用opensips-mi工具运行OpenSIPS MI的任意命令。

$ opensips-mi uptime
{
    "Now": "Wed Nov 20 10:40:23 2024",
    "Up since": "Wed Nov 20 10:37:52 2024",
    "Up time": "151 [sec]"
}

此命令在控制台以 JSON 格式输出结果——用户可以获取并相应地处理它(例如,使用 jq)。然而,用户也可以通过以下脚本以编程方式轻松实现这一点。

$ python -c 'import opensips.mi; print(opensips.mi.OpenSIPSMI().execute("uptime"))'
OrderedDict({'Now': 'Wed Nov 20 10:44:34 2024', 'Up since': 'Wed Nov 20 10:37:52 2024', 'Up time': '402 [sec]'}

最新版本当然在构建命令和处理响应方面提供了更高的灵活性。用户可以在以下部分找到高级用法示例。

通过OpenSIPS Python包处理事件也相当简单:如果用户仅想测试事件的生成/接收,可以使用opensips-event命令。

$ opensips-event E_TEST
{
    "jsonrpc": "2.0",
    "method": "E_TEST",
    "params": {
        "attempt": 0
    }
}

可以通过以下脚本以编程方式实现相同的行为:

import time
from opensips.mi import OpenSIPSMI, OpenSIPSMIException
from opensips.event import OpenSIPSEvent, OpenSIPSEventHandler
 
mi_connector = OpenSIPSMI()
hdl = OpenSIPSEventHandler()
event = hdl.subscribe('E_TEST', print)
time.sleep(3600)
event.unsubscribe('E_TEST')

运行此脚本的结果是:

$ python3 opensips-event.py
OrderedDict({'jsonrpc': '2.0', 'method': 'E_TEST', 'params': OrderedDict({'attempt': 0})})

项目

目前已经有很多项目使用 OpenSIPS Python 包:

  • OpenSIPS CLI已迁移至使用此包来运行 MI 命令
  • SIPSSert – 提供运行 MI 命令的任务
  • OpenSIPS SIPSSert测试 – 使用opensips.mi模块运行命令来检查 OpenSIPS 测试的状态
  • OpenSIPS AI 语音连接器社区版 – 使用 Python 模块与 OpenSIPS B2B UA 实例进行交互。

python-opensips模块对于开发人员来说是一个很有价值的工具。它允许他们在基于 OpenSIPS 的电信项目中充分利用 Python 的简单性和多功能性。

原文:https://blog.opensips.org/2024/11/20/enhance-opensips-integration-with-new-python-package/

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/54065.html

(0)

相关推荐

发表回复

登录后才能评论