首页 > 解决方案 > 如何在 python3 中使用 Asterisk AGI?

问题描述

使用 Asterisk 16.2.1 我的AGI脚本(在底部)适用于 python2 #!/usr/bin/env python2,但不适用于 python3 #!/usr/bin/env python3

我什至没有达到agi.verbose("python agi started")(使用python3),所以我认为它与AGI导入或初始化有关agi = AGI()

用过agi set debug on并没有真正帮助,我看到的唯一信息是

Launched AGI Script /home/.../asteriskAgi.py
    -- <SIP/..-00000002>AGI Script /home/.../asteriskAgi.py completed, returning 0

因为它适用于 python2,但不是 3 我也pyst3https://pypi.org/project/pyst3/安装,但它没有帮助(无论是否安装它都不起作用pyst3)。

问:知道如何asterisk为 python3 配置,或者如何找到根本原因?有机会获得有关脚本实际失败位置的更详细日志信息_

#!/usr/bin/env python3

import sys
import rpyc

from asterisk.agi import AGI

agi = AGI()
agi.verbose("python agi started")
aCallerId = agi.env['agi_callerid']
aType = agi.env["agi_type"]
agi.verbose("XXXXXXXXXXXXXX call from %s" % aCallerId)
agi.verbose(sys.executable)

l = [aCallerId, aType]
agi.verbose("XXXXXXXXXXXXXX l")

c = rpyc.connect("localhost", 18861)
c.root.asteriskCall(l)

即使是这个简约版本也不适用于“3”

#!/usr/bin/env python3

import rpyc

from asterisk.agi import AGI

agi = AGI()
agi.verbose("python agi started")

最终通过以下方式解决:

  1. 卸载pyst3
  2. 强制重新安装pyst2like pip3 install --upgrade --force-reinstall pyst2。不知道一开始出了什么问题。

标签: python-3.xasteriskagi

解决方案


您的简约版本适用于我(通过 pip 安装 pyst2)

检查权限和已安装的软件包。还要确保您的星号在能够找到安装的 python3 和软件包的环境下运行。


推荐阅读