Asterisk AMI事件几个问题说明
2010-10-15 20:24
295 查看
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根据每个连接客户端的权限来决定是否将事件发送给该客户端。
manager_event()函数用于产生事件和发送事件到客户端,Asterisk代码中通过调用该函数来生成发送到AMI客户端的事件。
#define EVENT_FLAG_SYSTEM (1 << 0) /* System events such as module load/unload */ #define EVENT_FLAG_CALL (1 << 1) /* Call event, such as state change, etc */ #define EVENT_FLAG_LOG (1 << 2) /* Log events */ #define EVENT_FLAG_VERBOSE (1 << 3) /* Verbose messages */ #define EVENT_FLAG_COMMAND (1 << 4) /* Ability to read/set commands */ #define EVENT_FLAG_AGENT (1 << 5) /* Ability to read/set agent info */ #define EVENT_FLAG_USER (1 << 6) /* Ability to read/set user info */ #define EVENT_FLAG_CONFIG (1 << 7) /* Ability to modify configurations */ #define EVENT_FLAG_DTMF (1 << 8) /* Ability to read DTMF events */ #define EVENT_FLAG_REPORTING (1 << 9) /* Reporting events such as rtcp sent */ #define EVENT_FLAG_CDR (1 << 10) /* CDR events */ #define EVENT_FLAG_DIALPLAN (1 << 11) /* Dialplan events (VarSet, NewExten) */ #define EVENT_FLAG_ORIGINATE (1 << 12) /* Originate a call to an extension */ #define EVENT_FLAG_AGI (1 << 13) /* AGI events */
2. 能产生的AMI事件包含哪些类型?
例如:电话会议结束会议的事件,
manager_event(EVENT_FLAG_CALL, "MeetmeEnd", "Meetme: %s/r/n", conf->confno);
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根据每个连接客户端的权限来决定是否将事件发送给该客户端。
相关文章推荐
- 遍历Repeater与ItemDataBound事件发现的几个问题。
- iOS UIControl 几个事件的说明
- 转:用ATL库开发COM组件常见的几个问题 (ie不响应事件,解决悲剧的方法)
- gitlab6 配置的几个问题说明
- iOS UIControl 几个事件的说明
- iOS UIControl 几个事件的说明
- iOS UIControl 几个事件的说明
- gitlab6 配置的几个问题说明
- iOS UIControl 几个事件的说明(转载)
- iOS UIControl 几个事件的说明
- 【转载】gridview的几个事件说明
- MO中几个常用消息事件对应的函数说明
- 从吴洪彬事件看职业经理人和老板之间的几个问题
- 【JAVA语言程序设计基础篇】--事件驱动程序设计--几个问题
- js中一维数组和二位数组中的几个问题示例说明
- 有关数据库 行 锁 的几个问题(rowlock) 行锁的基本说明: SELECT au_lname FROM authors WITH (NOLOCK) 锁定提示
- 几个可运行的,可以说明问题的Ajax实例
- js中一维数组和二位数组中的几个问题示例说明
- iOS UIControl 几个事件的说明