自定义AMI命令

转自:http://blog.csdn.net/southflow/article/details/5939006

Asterisk manager interface的应用及Asterisk中目前所拥有的AMI接口可以参考:http://www.voip-info.org/wiki/view/Asterisk+manager+API

那么我们如何为自己添加一个AMI命令呢?

添加AMI的接口如下:

int ast_manager_register2(const char *action, int auth, int (*func)(struct mansession *s, const struct message *m), const char *synopsis, const char
*description)
{
 struct manager_action *cur = NULL;
 if (!(cur = ast_calloc(1, sizeof(*cur))))
  return -1;
 cur->action = action; //命令名称
 cur->authority = auth; //命令的执行权限,所有的AMI命令分为很多类
 cur->func = func; //命令执行函数
 cur->synopsis = synopsis; //命令摘要描述
 cur->description = description; // 命令具体使用描述,在命令行查看帮组时将看到
 if (ast_manager_register_struct(cur)) {
  ast_free(cur);
  return -1;
 }
 return 0;
}

添加AMI命令使用该接口如下:

ast_manager_register2("MeetmeList", EVENT_FLAG_REPORTING,
        action_meetmelist, "List participants in a conference", mandescr_meetmelist);

动作函数的编写方法:

static int action_meetmelist(struct mansession *s, const struct message *m){
....
....
}

AMI协议以键值协议传递,那么在AMI会话中通过键拿到值的接口:

const char *astman_get_header(const struct message *m, char *var);

对于命令的回复使用到下面接口:

static void astman_send_response_full(struct mansession *s, const struct message *m, char *resp, char *msg, char *listflag);

对于执行AMI命令的结果产生的事件使用到下面的接口:

int __manager_event(int category, const char *event, const char *file, int line, const char *func, const char *fmt, ...);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值