You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KEMI Python脚本中访问Kamailio配置文件的定义与变量

在Python KEMI环境下访问Kamailio预定义宏与配置变量的方案

访问预处理阶段的#!define定义

你找到的KSR.kx.get_def()和KSR.kx.get_defn()就是对应原生配置预处理判断的官方API,用法如下:

  • KSR.kx.get_def("宏名称"):传入预定义宏的字符串名称,若宏存在则返回其值,不存在则返回空字符串,可直接用来判断#!ifdef逻辑
  • KSR.kx.get_defn("宏名称"):返回预定义宏的数值格式结果,不存在时返回0,适合处理#!substdef声明的数字类宏

对应你给出的原生配置示例,Python侧等效实现代码如下:

# 等效 #!ifdef WITH_SIPTRACE 判断
if KSR.kx.get_def("WITH_SIPTRACE") != "":
    server_id = KSR.kx.get_defn("SERVER_ID")
    # 输出日志逻辑和原生配置一致
    KSR.xlog.notice(f"$C(yx)========= server_id={server_id} NEW $rm $pr:$si:$sp$C(xx)\n")

补充可选方案:直接读取配置文件

如果有特殊需求要解析原始配置文件内容,可以直接用Python标准文件IO读取,只要确保Kamailio运行用户对配置文件有读权限即可,示例:

# 替换为你的Kamailio配置文件实际路径
cfg_file = "/etc/kamailio/kamailio.cfg"
with open(cfg_file, "r", encoding="utf-8") as f:
    raw_cfg = f.read()
# 可自行对raw_cfg做字符串匹配、解析获取需要的内容

全局配置变量访问优化

你当前使用的$sel(cfg_get.my_group.my_var)读取全局配置变量的方法是正确的,也可以用更简洁的KSR.pv.get_cfg_var()API实现相同效果,不需要拼接PV选择器前缀:

# 等效你现有写法,结果完全一致
self.my_var = int(KSR.pv.get_cfg_var("my_group.my_var"))

内容的提问来源于stack exchange,提问作者LeeWo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:09:02