python - Asterisk python agi 问题

标签 python asterisk agi

我有基本的 python agi 代码,其中 pyst lib 为:

扩展.conf

[from-internal]
exten => _.,1,answer()
exten => _.,2,AGI(test.py)

我在/var/lib/asterisk/agi-bin 中有 test.py 作为

#!/usr/bin/python
import sys
import os
from agi import AGI
def test_call(agi = None,text = ""):
    agi.say_alpha(text, "#")
    agi.hangup()
if __name__ == "__main__":
    text = 'abcdefr'
    agi = AGI()
    test_call(agi,text)

我有一个文件 agi.py,它是从 pyst lib 获取的。

当我尝试调用这个 agi 时,我遇到了这个问题

Executing [123@from-internal:1] Answer("SIP/12345-00000016", "") in new stack
[Mar 14 00:01:29] NOTICE[2790]: res_rtp_asterisk.c:2358 ast_rtp_read: Unknown RTP codec 126 received from '169.254.38.82:20338'
    -- Executing [123@from-internal:2] AGI("SIP/12345-00000016", "test.py") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/test.py
 test.py: Failed to execute '/var/lib/asterisk/agi-bin/test.py': No such file or directory
    -- Auto fallthrough, channel 'SIP/12345-00000016' status is 'UNKNOWN'
    -- Executing [h@from-internal:1] Hangup("SIP/12345-00000016", "") in new stack
  == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/12345-00000016'

我发现我在/var/lib/asterisk/agi-bin 中有这个文件,它有 777 权限。

请建议让这个基本脚本正常工作。

提前感谢大家

最佳答案

导致此类错误的原因可能有两个:

  1. 该位置没有文件/var/lib/asterisk/agi-bin/test.py 或由于某种原因 asterisk 无法访问该文件 - Linux 一般权限问题。
  2. 文件/var/lib/asterisk/agi-bin/test.py,但没有某些库(python 给出相同的错误)。这个可能性更大一些。尝试从 Asterisk 用户执行脚本手册,看看它说了什么。

建议:使用 FastAGI 而不是 AGI。

关于python - Asterisk python agi 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15391851/

相关文章:

Asterisk-使用发起命令创建调用并传递参数并设置调用者 ID

php - 从 php 连接到 Asterisk

c - (Asterisk PBX) 如何从 features.conf 中的 asterisk agi 控制用 C 编写的程序

python - 在 Python 中轻松发出 YAML

python - 尝试 fsync 目录时出错

python - 使用 timeit.Timer() 时如何传递函数的参数

centos - 继续检测 SELinux,即使它已停用(安装 FreePBX 时)

php - asterisk agi (php) 文件调试

c - Asterisk AGI 与 C 问题

python - 给定点坐标和相机外参/内参,哪个 openCv 函数可用于计算 BEV 透视变换?