扩展Asterisk1.8.7 AMI接口教程
需积分: 0 43 浏览量
更新于2024-08-05
收藏 197KB PDF 举报
"这篇文章主要介绍了如何扩展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的开发者来说是非常有价值的参考资料。
2022-08-04 上传
2017-07-27 上传
点击了解资源详情
2022-08-04 上传
2021-05-14 上传
2022-09-20 上传
2022-07-14 上传
2022-09-24 上传
2022-09-24 上传
蟹蛛
- 粉丝: 31
- 资源: 323
最新资源
- 深入浅出:自定义 Grunt 任务的实践指南
- 网络物理突变工具的多点路径规划实现与分析
- multifeed: 实现多作者间的超核心共享与同步技术
- C++商品交易系统实习项目详细要求
- macOS系统Python模块whl包安装教程
- 掌握fullstackJS:构建React框架与快速开发应用
- React-Purify: 实现React组件纯净方法的工具介绍
- deck.js:构建现代HTML演示的JavaScript库
- nunn:现代C++17实现的机器学习库开源项目
- Python安装包 Acquisition-4.12-cp35-cp35m-win_amd64.whl.zip 使用说明
- Amaranthus-tuberculatus基因组分析脚本集
- Ubuntu 12.04下Realtek RTL8821AE驱动的向后移植指南
- 掌握Jest环境下的最新jsdom功能
- CAGI Toolkit:开源Asterisk PBX的AGI应用开发
- MyDropDemo: 体验QGraphicsView的拖放功能
- 远程FPGA平台上的Quartus II17.1 LCD色块闪烁现象解析