我目前在生产中使用的是较旧版本的Kamailio。我希望能够编写一些自定义逻辑,而v5允许我使用KEMI解释器在Python语言中实现这一点-所以我对升级很感兴趣。然而,我遇到了一些我以前从未见过的事情。
Kamailio网站上的示例脚本显示了此示例.py脚本:
import sys
import KSR as KSR
def dumpObj(obj):
for attr in dir(obj):
KSR.info("obj.%s = %s\n" % (attr, getattr(obj, attr)))
def mod_init():
KSR.info("===== from Python mod init\n")
# dumpObj(KSR)
return kamailio()
class kamailio:
def __init__(self):
KSR.info('===== kamailio.__init__\n')
def child_init(self, rank):
KSR.info('===== kamailio.child_init(%d)\n' % rank)
return 0
def ksr_request_route(self, msg):
KSR.info("===== request - from kamailio python script\n")
KSR.setdsturi("sip:alice@127.0.0.1:5080")
KSR.tm.t_on_branch("ksr_branch_route_one")
KSR.tm.t_on_reply("ksr_onreply_route_one")
KSR.tm.t_on_failure("ksr_failure_route_one")
KSR.sl.send_reply(100, "Trying")
if KSR.tm.t_relay() < 0 :
KSR.sl.send_reply(500, "Server error")
return 1
def ksr_reply_route(self, msg):
KSR.info("===== response - from kamailio python script\n")
return 1
def ksr_onsend_route(self, msg):
KSR.info("===== onsend route - from kamailio python script\n")
return 1
def ksr_branch_route_one(self, msg):
KSR.info("===== branch route - from kamailio python script\n")
return 1
def ksr_onreply_route_one(self, msg):
KSR.info("===== onreply route - from kamailio python script\n")
return 1
def ksr_failure_route_one(self, msg):
KSR.info("===== failure route - from kamailio python script\n")
return 1所以我的问题是:"KSR“是从哪里来的?几乎看起来Kamailio正在神奇地将该库挂在那里,以便Python导入。我找不到任何方法来安装它,所以我很想知道交易是什么,如果有人知道的话。
谢谢!
发布于 2021-10-18 21:28:40
KSR来自kamailio.cfg文件。您不能单独运行sample.py文件。
基本上,如果您想使用Python KEMI解释器,则必须安装app_python3.so Kamailio模块。然后在kamailio.cfg (Kamailio的配置文件)中加载模块"app_python3.so“,并在路由逻辑中导入sample.py文件。
modparam("app_python3", "load", "/etc/kamailio/sample.py")
cfgengine "python"因此,您自己启动Kamailio,它将处理运行的sample.py。
有关更多信息,我推荐这篇文章:https://nickvsnetworking.com/kamailio-bytes-python-sip-with-kemi/
https://stackoverflow.com/questions/65744575
复制相似问题