扩展Asterisk1.8.7 AMI接口教程
"这篇文章主要介绍了如何扩展Asterisk 1.8.7版本的AMI(Asterisk Manager Interface)接口,包括新增自定义函数并实现功能。" 在Asterisk PBX系统中,AMI接口是用于与外部应用程序交互的重要部分,它提供了控制Asterisk服务器的能力,如创建呼叫、挂断呼叫、监控通道等。本文主要关注的是如何自定义扩展这个接口,以增加新的功能。 首先,我们来看扩展AMI接口的第一步:**函数注册**。在Asterisk源码的`main/manager.c`文件中,我们需要在`int __init_manager(int reload)`函数中注册新的接口。在这个例子中,作者添加了一个名为`myOriginate`的接口。通过调用`ast_manager_register_xml()`函数,将新接口的名字("myOriginate")、事件标志(EVENT_FLAG_ORIGINATE)和处理函数(`action_myOriginate`)传入,完成注册过程。 接下来是**功能实现**的部分。`action_myOriginate`是刚刚注册的接口对应的处理函数,它的任务是根据接收到的参数发起一个新的呼叫。在函数中,我们可以看到通过`astman_get_header(m, "HeaderName")`来获取来自管理接口的消息头,这些头信息包括了发起呼叫所需的参数,如: 1. `Channel`: 要拨打的通道名。 2. `Exten`: 拨号计划中的扩展号。 3. `Context`: 扩展号所在的上下文。 4. `Priority`: 呼叫优先级。 5. `Timeout`: 呼叫超时时间。 6. `CallerID`: 主叫ID。 这里还注释掉了其他可能的参数,例如`Account`、`Application`、`Data`、`Async`、`ActionID`、`Codecs`等,这些参数可以根据实际需求进行使用。 在`action_myOriginate`函数内部,作者创建了一个临时字符串`tmp`,用来组合一个唯一标识符,由当前时间戳和`name`(通道名)组成,确保每次呼叫都有唯一的`ActionID`。这个标识符对于跟踪和管理呼叫非常有用。 最后,文章虽然没有给出完整的代码实现,但可以看出接下来的逻辑应该是使用这些参数通过Asterisk的API发起一个呼叫。这通常会涉及到调用如`ast_channel_new()`、`ast_channel ANSWER()`、`ast_format_string()`等Asterisk API函数。 通过扩展Asterisk的AMI接口,开发者可以创建定制化的PBX功能,比如自定义的呼叫路由策略、高级呼叫控制或者集成第三方应用。这种灵活性使得Asterisk成为一个强大且可定制的VoIP解决方案。 总结来说,本文提供的方法为Asterisk 1.8.7版本的AMI接口扩展提供了一个实例,展示了如何注册新接口和实现特定功能,这对于熟悉C语言和Asterisk API的开发者来说是非常有价值的参考资料。
![](https://csdnimg.cn/release/download_crawler_static/86328996/bg1.jpg)
下载后可阅读完整内容,剩余3页未读,立即下载
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/1401380cf72f44ecb6f8686b9fb3d9cd_weixin_35828338.jpg!1)
- 粉丝: 29
- 资源: 323
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决本地连接丢失无法上网的问题
- BIOS报警声音解析:故障原因与解决方法
- 广义均值移动跟踪算法在视频目标跟踪中的应用研究
- C++Builder快捷键大全:高效编程的秘密武器
- 网页制作入门:常用代码详解
- TX2440A开发板网络远程监控系统移植教程:易搭建与通用解决方案
- WebLogic10虚拟内存配置详解与优化技巧
- C#网络编程深度解析:Socket基础与应用
- 掌握Struts1:Java MVC轻量级框架详解
- 20个必备CSS代码段提升Web开发效率
- CSS样式大全:字体、文本、列表样式详解
- Proteus元件库大全:从基础到高级组件
- 74HC08芯片:高速CMOS四输入与门详细资料
- C#获取当前路径的多种方法详解
- 修复MySQL乱码问题:设置字符集为GB2312
- C语言的诞生与演进:从汇编到系统编程的革命
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)