星号 AMI - 接听电话



我想使用 AMI 在星号中接听电话。我可以发起电话,但完全不知道,如何接听电话...调用脚本:

#login
sock = socket.socket(af, socktype, proto)
sock.connect(sockaddr)
sock.send('Action: loginrn')
sock.send('Events: offrn')
sock.send('Username: '+str(ast_server.login)+'rn')
sock.send('Secret: '+str(ast_server.password)+'rnrn')
#originate call
sock.send('Action: originatern')
sock.send('Channel: ' + str(user.asterisk_chan_type) + '/' + str(user.internal_number)+'rn')
sock.send('Timeout: '+str(ast_server.wait_time*1000)+'rn')
sock.send('CallerId: '+str(user.callerid)+'rn')
sock.send('Exten: '+str(ast_number)+'rn')
sock.send('Context: '+str(ast_server.context)+'rn')
if ast_server.alert_info and user.asterisk_chan_type == 'SIP':
    sock.send('Variable: SIPAddHeader=Alert-Info: '+str(ast_server.alert_info)+'rn')
sock.send('Priority: '+str(ast_server.extension_priority)+'rnrn')
#logout
sock.send('Action: Logoffrnrn')
time.sleep(1)
sock.close()

我需要类似的东西,但用于接听电话。在 *CLI 中找不到任何有用的命令>管理器显示命令

把我啪啪

您无法直接通过 AMI 应答呼叫。这是因为新呼叫将"到达"拨号计划中配置的给定上下文/优先级/分机(如果找不到适用的呼叫,它将被拒绝)。因此,无论该呼叫发生什么,都将从拨号计划中给定的上下文/优先级/分机开始。

如果要通过 AMI 处理呼叫,请尝试使用异步 AGI,如下所示:

exten => _X.,1,AGI(agi:async)

这将通过发出您可以使用 AMI 客户端处理的事件 (AsyncAGI) 来处理对至少具有 1 位数字的任何分机的所有调用。

然后,从您的 AMI 客户端,您可以发送 AGIAction,例如:

Action: AGI
Channel: SIP/adevice
Command: ANSWER
CommandID: MyCommandID

这将有效地允许您从 AMI 客户端运行 AGI 命令(并像通常在任何 AGI 脚本中一样处理调用)。

希望对您有所帮助!

相关内容

  • 没有找到相关文章

最新更新