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

我有一个Python服务,它通过AMI连接到Asterisk,并侦听事件以检测何时开始调用

这似乎适用于我连接的大多数Asterisk服务器。然而,在我们的一些服务器上,当调用发生时,我们没有看到任何AMI事件(例如,
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
在my
manager.conf
中。希望这对将来的人会有所帮助:即使您能够连接到AMI,登录到AMI,从AMI接收一些事件,并向AMI发送命令并获取响应,它可能不会启用
,这将抑制大多数核心事件,如
新频道
新闻状态
,等等

一个线索是,在星号控制台中运行
manager show settings
,返回以下信息:

Global Settings:
----------------
  Manager (AMI)           No
  ...
这显然表明它没有被启用