Asterisk事件系统中的事件概念

 

 Asterisk事件系统主要用于模块之间的通信,例如当新的语音留言产生,Asterisk生成一个AST_EVENT_MWI事件,当订阅该事件的模块将收到该事件,并根据事件内容进行相应的处理。

 

1.  asterisk支持订阅事件包含的类型?

  

2. 如何订阅该事件?

struct ast_event_sub *ast_event_subscribe(enum ast_event_type type, ast_event_cb_t cb,

       void *userdata, ...)

       type:事件类型

       cb:当事件发生时,处理该事件的函数

       userdata: 传递给事件处理函数的参数   

       剩下的参数用于指定传递给订阅者的具体事件。

 

       peer->mwi_event_sub = ast_event_subscribe(AST_EVENT_MWI, mwi_event_cb, peer,

 AST_EVENT_IE_MAILBOX, AST_EVENT_IE_PLTYPE_STR, peer->mailbox,

 AST_EVENT_IE_END);

 

 AST_EVENT_MWI事件,该事件包含的信息单元类型是AST_EVENT_IE_MAILBOX,信息单元的载荷类型是字符串,该字符串是peer->mailbox

 AST_EVENT_IE_END表示参数结束。

 

3. 如何产生事件?

  产生语音留言信息提示,其中包含三个信息单元,语音邮箱,新邮件数量和旧邮件数量。

 

希望大家对事件生成以及订阅的内部机制研究一下,一起学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值