Asterisk Hangup caller 接听后挂断电话

Asterisk Hangup caller after answered's hangup

你好我的èxtensions_conf`,这是一个队列;

        exten => 1,1,NoOp(call for call center)
                same => n,Set(__OTHERCHANNEL=${CHANNEL})
                ;same => n,Set(CHANNEL(hangup_handler_push)=call-center,csh,1(args))
                same => n,Dial(SIP/trunk/XXXXXXXXX,,tTG(msg,1))

        exten => msg,1,Goto(anum,1)
        exten => msg,2,Goto(cnum,1)

        exten => anum,1,BridgeWait()
        exten => anum,n,NoOp("after bridgewait")

        exten => cnum,1,Playback(hello)
        exten => cnum,n,Set(CHANNEL(hangup_handler_wipe)=call-center,csh,1(args))
        exten => cnum,n,WaitExten(100)

        exten => csh,1,Verbose(0)
                same => n,AGI(test.py,${ORIGCHANNEL},${OTHERCHANNEL})
                same => n,Return()
                ;same => n,AGI(test.py,${ORIGCHANNEL})

        exten => #,1,NoOp(press #)
                same => n,Bridge(${ORIGCHANNEL})

        exten => 9,1,AGI(test.py,${ORIGCHANNEL})
                same => n,Hangup()

我的test.py;

#!/usr/bin/env python3

import sys
from asterisk.agi import AGI

agi = AGI()

if sys.argv[2]:
    agi.env['agi_channel'] = sys.argv[2]

agi.hangup(channel=sys.argv[1])

我想在接听时按9键挂断接听和来电通道。这很好用。但是当回答挂断 phone 时,我在挂断处理程序中的 agi 脚本 运行 不会挂断呼叫者的频道。给我 RESULT_LINE: 511 Command Not Permitted on a dead channel or intercept routine 错误。我可以尝试更改为 àgi_channel` 但这不起作用。如何解决这个问题。挂断应答后如何挂断来电。谢谢回复。

由于 DeadAGI 和 AGI 现在是同一个应用程序,因此该行为是正常的。

您负责检测通道挂断,例如您可以检查拨号命令响应代码或发出 CHANNEL(状态)检查。