您的位置:首页 > 其它

Asterisk AMI事件几个问题说明

2010-10-15 20:24 295 查看
1. Asterisk AMI的事件如何产生?

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根据每个连接客户端的权限来决定是否将事件发送给该客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: