Asterisk 星号AMI事件有时缺失
我有一个Python服务,它通过AMI连接到Asterisk,并侦听事件以检测何时开始调用 这似乎适用于我连接的大多数Asterisk服务器。然而,在我们的一些服务器上,当调用发生时,我们没有看到任何AMI事件(例如,Asterisk 星号AMI事件有时缺失,asterisk,asteriskami,Asterisk,Asteriskami,我有一个Python服务,它通过AMI连接到Asterisk,并侦听事件以检测何时开始调用 这似乎适用于我连接的大多数Asterisk服务器。然而,在我们的一些服务器上,当调用发生时,我们没有看到任何AMI事件(例如,Newstate),尽管调用完成后我们会看到Cdr事件 我已经确认这不是我们用来连接到AMI()的库所特有的,因为我在手动连接时看到了完全相同的东西,例如 $ openssl s_client -connect my-asterisk-server:5039 ... Asteris
Newstate
),尽管调用完成后我们会看到Cdr
事件
我已经确认这不是我们用来连接到AMI()的库所特有的,因为我在手动连接时看到了完全相同的东西,例如
$ openssl s_client -connect my-asterisk-server:5039
...
Asterisk Call Manager/2.10.3
Action: Login
Username: manager
Secret: ThisIsWhereITypedTheActualPassword
Response: Success
Message: Authentication accepted
Event: FullyBooted
Privilege: system,all
Status: Fully Booted
Action: Events
EventMask: on
Response: Success
Events: on
在上面的代码块中,我手动连接到AMI,以Python代码使用的管理员身份登录,并确保所有事件都已打开(尽管我的星号配置应该已经显示了默认情况下我关心的所有事件)
在此之后,我在我的一些Asterisk服务器上看到的是一系列预期事件,如Newstate
,然后是最终的Cdr
事件。在其他服务器上,我只看到Cdr事件,没有任何处理。这在每个服务器中都是完全一致的,这意味着服务器要么总是发送所有预期事件,要么永远不会发送
我已经检查了asterisk的版本,manager.conf
config文件,extensions.conf
dialplan,在详细模式下的asterisk控制台(即通过asterisk-vvvr
连接到正在运行的进程),并且通常只是比较我的配置文件和实际工作的asterisk服务器
我很困惑到底是什么导致了这一点,甚至下一步该怎么做。如果重要的话,我的manager.conf
如下所示:
[general]
tlsenable=yes
tlsbindaddr=10.0.0.123:5039
tlscertfile=/etc/pki/asterisk/ami.crt
tlsprivatekey=/etc/pki/asterisk/ami.key
[admin]
secret=TheActualPasswordIsOnThisLine
read=system,call,log,verbose,command,agent,user,originate,cdr
write=system,call,log,verbose,command,agent,user,originate,cdr
编辑:经过进一步挖掘,似乎只有出现的事件是Cdr
事件,所以即使是对等注册事件也不会出现。我还确认,我所有的Asterisk 13.19.0-1服务器都表现出这种行为,并且唯一工作的服务器运行的是Asterisk的旧版本
奇怪的是,调用确实成功地通过了,所以问题不是我缺少了一些必要的模块。(或者我是?是否有一些“使事件在AMI中显示”模块需要确保已加载?)
进一步编辑:我能够打开CEL事件(频道事件日志记录),这些事件会显示出来,但这是一组不同于我正在寻找的标准
Newchannel
/Newstate
/等的事件。理论上,我可以重写大部分服务来使用CEL事件,但理想情况下,我只需打开标准的Newstate
/Newchannel
/挂断事件。问题在于我没有看到这些事件
enabled=yes
在mymanager.conf
中。希望这对将来的人会有所帮助:即使您能够连接到AMI,登录到AMI,从AMI接收一些事件,并向AMI发送命令并获取响应,它可能不会启用
,这将抑制大多数核心事件,如新频道
,新闻状态
,等等
一个线索是,在星号控制台中运行manager show settings
,返回以下信息:
Global Settings:
----------------
Manager (AMI) No
...
这显然表明它没有被启用