python-3.x - 如何在 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 我也pyst3
从https://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")
最终通过以下方式解决:
- 卸载
pyst3
和 - 强制重新安装
pyst2
likepip3 install --upgrade --force-reinstall pyst2
。不知道一开始出了什么问题。
解决方案
您的简约版本适用于我(通过 pip 安装 pyst2)
检查权限和已安装的软件包。还要确保您的星号在能够找到安装的 python3 和软件包的环境下运行。
推荐阅读
- python - 为 Google Adwords API 设置客户 ID
- python - 如何从一个数字的文本文件和该数字前面的单词创建对?
- node.js - 如何使用 Puppeteer 和 JSDOM 下载 HTML、CSS 和 IMG
- android - 我尝试使用 android studio 将位图图像保存在我的 SD 卡中
- android - 为什么我不能从 onChanged() 中访问适配器 submitList() 方法?
- java - 如何在android中为按钮的文本添加阴影?
- c# - 为什么我的 C# 程序无法识别长度?
- amazon-cloudformation - 无服务器部署:CloudFormation 更新后停止观看
- javascript - 将数据从 Ajax 发送到 Laravel 控制器。Vuejs
- solr - solr可以提前缓存请求吗?