1. Asterisk AMI的事件如何产生?
manager_event()函数用于产生事件和发送事件到客户端,Asterisk代码中通过调用该函数来生成发送到AMI客户端的事件。
2. 能产生的AMI事件包含哪些类型?
例如:电话会议结束会议的事件,
3. Asterisk AMI登陆用户能够获得的事件类型从哪里配置?
从manager.conf文件中配置登陆Asterisk AMI接口的用户,登陆方式是建立于安装Asterisk服务器主机服务的5038端口的TCP连接,其中端口可配置。
例如:
[meetme]
secret =111111
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = system,call,log,verbose,agent,user,config,command,dtmf,reporting,cdr,dialplan
write = system,call,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
通过这里来配置用户是否有权限执行某个动作的权限或接受某个动作的事件。例如不设置read和write中的call权限,那么以meetme登陆的用户连接中将接收不到EVENT_FLAG_CALL事件,
如asterisk发起用户挂机hangup产生的事件将接收不到。
4. Asterisk AMI怎么样把事件发送到客户端?
当asterisk内部产生事件,Asterisk首先分析当前是否有AMI客户端连接Asterisk,如果没有则无需发送;如果有则遍历连接Asterisk AMI的客户端sessions链表。每个客户端
session都包含了该登陆用户的信息,包括执行动作的权限。Asterisk根据每个连接客户端的权限来决定是否将事件发送给该客户端。