首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >星号AGI Python脚本完成,返回0

星号AGI Python脚本完成,返回0
EN

Stack Overflow用户
提问于 2017-08-20 12:41:53
回答 1查看 3.4K关注 0票数 1

我使用在线教程使用AGI以星号运行Python脚本。但它回来了,

代码语言:javascript
复制
AGI Script easy.py completed, returning 0

因此,我启用了调试模式并获得了一个输出。

启用AGI调试

代码语言:javascript
复制
== 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)这表明

代码语言:javascript
复制
AGI Script easy.py completed, returning 0

我也不知道为什么。正如一个在线论坛所建议的,我甚至将easy.py位置更改为/var/test/easy.py,但它没有工作。所以我想解决这个问题,因为它并没有给出我所期望的。

这是easy.py代码。

代码语言:javascript
复制
#!/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)当电话铃响时,您可以看到easy.py已经执行了两次。(这只显示了两次,但当它一直响时,它会在一个循环中执行)。我找不到解决办法。另外,从第二个循环开始,它将callerid显示为OBITRUNK1。

3)当该代码运行时,我的固定电话停止响,但当我从extensions.conf文件中删除代码并放置标准extensions.conf代码时,固定电话就会像往常一样响。

备注:我知道这是错误的。但是,由于向extensions_custom.conf添加扩展不起作用,我修改了extensions.conf文件。实际上,下面是extensions.conf文件在AGI工作时的样子。

extensions.conf

代码语言:javascript
复制
from trunk:
[from-trunk]
exten => _X.,1,Answer()
exten => _X.,n,AGI(/var/test/easy.py)

希望有人能帮我。我试着在几个网站和书籍中为他们找到解决方案,但没有成功。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-20 19:24:26

这意味着脚本中有错误(语法或其他错误)。

请注意,调试通常是最上面的。

对于调试脚本,第一次停止星号

代码语言:javascript
复制
asterisk -rx "core stop now"

之后,在控制台中启动它。

代码语言:javascript
复制
asterisk -vvvvgc

然后打电话

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45782252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档