Asterisk AGI Python 脚本完成,返回 0
Asterisk AGI Python Script completed, returning 0
我使用在线教程 运行 使用 AGI 在星号中编写 Python 脚本。但它 returns,
AGI Script easy.py completed, returning 0
所以我启用了调试模式并得到了输出。
AGI 调试已启用
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [0112617769@from-trunk:1] Answer("SIP/OBITRUNK1-0000000b", "")
in new stack
-- Executing [0112617769@from-trunk:2] AGI("SIP/OBITRUNK1-0000000b", "easy.py") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/easy.py
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_request: easy.py
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_channel: SIP/OBITRUNK1-0000000b
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_language: en
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_type: SIP
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_uniqueid: 1503228907.11
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_version: 13.15.0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callerid: 0713029474
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_calleridname: unknown
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingpres: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingani2: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callington: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingtns: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_dnid: 0112617769
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_rdnis: unknown
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_context: from-trunk
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_extension: 0112617769
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_priority: 2
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_enhanced: 0.0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_accountcode:
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_threadid: 1956721696
<SIP/OBITRUNK1-0000000b>AGI Tx >>
-- <SIP/OBITRUNK1-0000000b>AGI Script easy.py completed, returning 0
-- Auto fallthrough, channel 'SIP/OBITRUNK1-0000000b' status is 'UNKNOWN'
-- Executing [h@from-trunk:1] Answer("SIP/OBITRUNK1-0000000b", "") in new stack
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/OBITRUNK1-0000000b'
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [0112617769@from-trunk:1] Answer("SIP/OBITRUNK1-0000000c", "")
in new stack
-- Executing [0112617769@from-trunk:2] AGI("SIP/OBITRUNK1-0000000c", "easy.py") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/easy.py
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_request: easy.py
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_channel: SIP/OBITRUNK1-0000000c
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_language: en
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_type: SIP
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_uniqueid: 1503228913.12
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_version: 13.15.0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callerid: OBITRUNK1
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_calleridname: unknown
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingpres: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingani2: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callington: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingtns: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_dnid: 0112617769
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_rdnis: unknown
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_context: from-trunk
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_extension: 0112617769
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_priority: 2
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_enhanced: 0.0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_accountcode:
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_threadid: 1980019744
<SIP/OBITRUNK1-0000000c>AGI Tx >>
-- <SIP/OBITRUNK1-0000000c>AGI Script easy.py completed, returning 0
-- Auto fallthrough, channel 'SIP/OBITRUNK1-0000000c' status is 'UNKNOWN'
-- Executing [h@from-trunk:1] Answer("SIP/OBITRUNK1-0000000c", "") in new stack
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/OBITRUNK1-0000000c'
== Using SIP RTP TOS bits 184
以上代码是我接到电话时得到的。还有我想解决的三个问题
问题
1) 这表明
AGI Script easy.py completed, returning 0
我也不知道为什么。正如在线论坛所建议的那样,我什至将 easy.py 位置更改为 /var/test/easy.py 但它没有用。所以我想解决这个问题,因为它没有达到我的预期。
这是 easy.py 代码。
#!/usr/bin/env python
import sys
from asterisk.agi import *
agi = AGI()
agi.verbose("python agi started")
callerId = agi.env['agi_callerid']
agi.verbose("call from %s" % callerId)
while True:
agi.stream_file('vm-extension')
result = agi.wait_for_digit(-1)
agi.verbose("got digit %s" % result)
if result.isdigit():
agi.say_number(result)
else:
agi.verbose("bye!")
agi.hangup()
sys.exit()
2) 当phone响起时,可以看到easy.py执行了两次。 (这只显示两次,但当它不断响起时,它会循环执行)。我找不到解决方案。同样从第二个循环开始,它开始将 callerid 显示为 OBITRUNK1。
3) 当此代码 运行s 时,我的座机 phone 停止响铃但是当我从 extensions.conf 文件中删除代码并放置标准 extensions.conf 代码时, 座机铃声像往常一样。
注意 : 我知道这是错误的。但是由于向 extensions_custom.conf 添加扩展名不起作用,我修改了 extensions.conf 文件。实际上下面是 extensions.conf 文件在 AGI 工作时的样子。
extensions.conf
from trunk:
[from-trunk]
exten => _X.,1,Answer()
exten => _X.,n,AGI(/var/test/easy.py)
希望有人能帮助我。我试图在几个网站和书籍中为他们找到解决方案,但没有成功。谢谢。
这很可能意味着您的脚本中有错误(语法或其他)。
请注意,调试是 SO 上的主题。
对于调试脚本,先停止asterisk
asterisk -rx "core stop now"
之后在您的控制台中启动它
asterisk -vvvvgc
并致电
我使用在线教程 运行 使用 AGI 在星号中编写 Python 脚本。但它 returns,
AGI Script easy.py completed, returning 0
所以我启用了调试模式并得到了输出。
AGI 调试已启用
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [0112617769@from-trunk:1] Answer("SIP/OBITRUNK1-0000000b", "")
in new stack
-- Executing [0112617769@from-trunk:2] AGI("SIP/OBITRUNK1-0000000b", "easy.py") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/easy.py
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_request: easy.py
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_channel: SIP/OBITRUNK1-0000000b
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_language: en
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_type: SIP
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_uniqueid: 1503228907.11
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_version: 13.15.0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callerid: 0713029474
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_calleridname: unknown
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingpres: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingani2: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callington: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_callingtns: 0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_dnid: 0112617769
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_rdnis: unknown
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_context: from-trunk
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_extension: 0112617769
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_priority: 2
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_enhanced: 0.0
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_accountcode:
<SIP/OBITRUNK1-0000000b>AGI Tx >> agi_threadid: 1956721696
<SIP/OBITRUNK1-0000000b>AGI Tx >>
-- <SIP/OBITRUNK1-0000000b>AGI Script easy.py completed, returning 0
-- Auto fallthrough, channel 'SIP/OBITRUNK1-0000000b' status is 'UNKNOWN'
-- Executing [h@from-trunk:1] Answer("SIP/OBITRUNK1-0000000b", "") in new stack
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/OBITRUNK1-0000000b'
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Executing [0112617769@from-trunk:1] Answer("SIP/OBITRUNK1-0000000c", "")
in new stack
-- Executing [0112617769@from-trunk:2] AGI("SIP/OBITRUNK1-0000000c", "easy.py") in new stack
-- Launched AGI Script /var/lib/asterisk/agi-bin/easy.py
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_request: easy.py
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_channel: SIP/OBITRUNK1-0000000c
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_language: en
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_type: SIP
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_uniqueid: 1503228913.12
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_version: 13.15.0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callerid: OBITRUNK1
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_calleridname: unknown
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingpres: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingani2: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callington: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_callingtns: 0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_dnid: 0112617769
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_rdnis: unknown
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_context: from-trunk
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_extension: 0112617769
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_priority: 2
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_enhanced: 0.0
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_accountcode:
<SIP/OBITRUNK1-0000000c>AGI Tx >> agi_threadid: 1980019744
<SIP/OBITRUNK1-0000000c>AGI Tx >>
-- <SIP/OBITRUNK1-0000000c>AGI Script easy.py completed, returning 0
-- Auto fallthrough, channel 'SIP/OBITRUNK1-0000000c' status is 'UNKNOWN'
-- Executing [h@from-trunk:1] Answer("SIP/OBITRUNK1-0000000c", "") in new stack
== Spawn extension (from-trunk, h, 1) exited non-zero on 'SIP/OBITRUNK1-0000000c'
== Using SIP RTP TOS bits 184
以上代码是我接到电话时得到的。还有我想解决的三个问题
问题
1) 这表明
AGI Script easy.py completed, returning 0
我也不知道为什么。正如在线论坛所建议的那样,我什至将 easy.py 位置更改为 /var/test/easy.py 但它没有用。所以我想解决这个问题,因为它没有达到我的预期。
这是 easy.py 代码。
#!/usr/bin/env python
import sys
from asterisk.agi import *
agi = AGI()
agi.verbose("python agi started")
callerId = agi.env['agi_callerid']
agi.verbose("call from %s" % callerId)
while True:
agi.stream_file('vm-extension')
result = agi.wait_for_digit(-1)
agi.verbose("got digit %s" % result)
if result.isdigit():
agi.say_number(result)
else:
agi.verbose("bye!")
agi.hangup()
sys.exit()
2) 当phone响起时,可以看到easy.py执行了两次。 (这只显示两次,但当它不断响起时,它会循环执行)。我找不到解决方案。同样从第二个循环开始,它开始将 callerid 显示为 OBITRUNK1。
3) 当此代码 运行s 时,我的座机 phone 停止响铃但是当我从 extensions.conf 文件中删除代码并放置标准 extensions.conf 代码时, 座机铃声像往常一样。
注意 : 我知道这是错误的。但是由于向 extensions_custom.conf 添加扩展名不起作用,我修改了 extensions.conf 文件。实际上下面是 extensions.conf 文件在 AGI 工作时的样子。
extensions.conf
from trunk:
[from-trunk]
exten => _X.,1,Answer()
exten => _X.,n,AGI(/var/test/easy.py)
希望有人能帮助我。我试图在几个网站和书籍中为他们找到解决方案,但没有成功。谢谢。
这很可能意味着您的脚本中有错误(语法或其他)。
请注意,调试是 SO 上的主题。
对于调试脚本,先停止asterisk
asterisk -rx "core stop now"
之后在您的控制台中启动它
asterisk -vvvvgc
并致电