简介
AMI接口实际上是一个TCP服务器,它由Asterisk服务器自动运行并直接连至Asterisk核心。当有呼叫进过Asterisk核心时,AMI接口将产生事件信息并分发到所有连至AMI TCP服务器上的客户端。
注:
- 默认情况AMI是被禁止的,需要修改manager.conf配置文件的enabled属性
- 早期的Asterisk1.0和1.2版本中,AMI接口是Asterisk的一个主要陷阱(缺陷)。主要原因是服务器是单线程模式的。因此,多用户连接到AMI接口将造成严重的死锁,特别是同时进行读和写的操作。
- Asterisk1.4和1.6版本进行了大部分的重写,允许了多线程操作。但是死锁的情况仍然存在,只是发生的概率比较低
The Manager API
Manager API 是另一种远程与Asterisk服务器交互的方式。相对于FastAGI Asterisk Manager API并没有将控制交给您的应用程序,但允许您查询和随时更改其状态。
Manager API是由三个概念组成:动作(Actions)、(Responses)和事件响应(Events)。Actions可以被发送到Asterisk执行某项操作。例如,你可以在你的应用程序里发送一个指令让Asterisk呼出一个号码,并将它连接到你的电话上。每发送一个Actions Asterisk都将返回一个包含执行结果的Responses。
事件由Asterisk发出,它并没有直接关连到应用程序的Actions上。事件在Asterisk状态发生改变时发生。例如有电话呼入、有人加入或退出会议室。
Manager API通过TCP/IP协议连接到Asterisk 服务器的端口默认为5038。
要启用Asterisk Manager API,您必须编辑manager.conf配置文件并重新启动Asterisk。该manager.conf配置文件设置了允许连接的IP地址范围和用户名/密码进行身份验证。配置文件内容可能如下:
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
[manager]
secret=pa55w0rd
permit=0.0.0.0/0.0.0.0
read=system,call,log,verbose,agent,command,user
write=system,call,log,verbose,agent,command,user
它将允许使用Manager AP从任意的 IP 地址使用用户名 "manager" 密码 "pa55w0rd"登录Asterisk服务器。配置完成后,可以通过telnet命令连接到AMI接口进行测试。
[root@localhost ~]# telnet 127.0.0.1 5038
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Asterisk Call Manager/1.1
连接成功后,可以按照接口规范定义发送命令了,以下为登录的命令演示:
Action: login
Username: admin
Secret: 000000
Response: Success
Message: Authentication accepted
注意事项:
- 注意参数跟参数值之间的空格必须要加
- 最后一个参数输入完成后再输入一个回车,AMI接口认为一个空行是输入的结束
分享到:
相关推荐
Asterisk Manager Interface客户端C库 libamievent是用C编写的Asterisk Manager Interface的异步事件驱动的客户端库。它使用作为事件循环后端。 使用libamievent,您可以发送AMI命令,还可以订阅对该命令的响应。 ...
The Asterisk Manager Interface (AMI) allows a client program to connect to an Asterisk instance and issue commands or read events over a TCP/IP stream. Integrators will find this particularly useful ...
DAMI支持发送每个动作,并能够处理[AMI API]( https://www.voip-info.org/asterisk-manager-api/中概述的每个事件)。 DAMI将返回给您的数据与Asterisk完全相同,但是对象由数组中的键/值对组成。 例如,采取“ ...
PHP Asterisk Manager Interface ( AMI ) 支持同步命令、回应和异步事件,使用模式观察者侦听器。支持多时间的命令回应,特别适合开发业务控制台和 asterisk 频道监控等。 标签:PAMI
这个gem为Asterisk Manager Interface的Ruby或RubyOnRails项目添加了支持 有一个同名的项目,但似乎已停产,所以我决定开始一个新项目 安装 轨道3 添加到您的Gemfile并运行bundle命令进行安装。 gem "ruby-...
Chapter 20 Asterisk Manager Interface (AMI) Chapter 21 Asterisk Gateway Interface (AGI) Chapter 22 Clustering Chapter 23 Distributed Universal Number Discovery (DUNDi) Chapter 24 System Monitoring and...
Nami本身只是一个库,它允许您的nodejs代码与Asterisk Manager Interface(AMI)进行通信。 但是,它包括一个完整的应用程序,可用于监视星号安装。 您将能够登录,接收异步事件并发送操作(也可以异步接收相应的...
亚娜Yana 是另一个用于 Asterisk Manager Interface 的 node.js 库。 支持的 Asterisk 版本:全部(主要使用 Asterisk 11、13 和 16 进行测试)。 支持的 node.js 版本:12+。 小(约 350 行代码) 没有依赖低级...
Asterisk 有 AMI (Asterisk Manager Interface) - 用于交换命令和事件的 telnet 安装 npm install openvox-sms --save 用法 var osms = require('openvox-sms'); var sms = new osms({host: 'localhost'}); sms.on...
该库可让您连接到Asterisk Manager Interface(AMI)。 AMI允许客户端程序连接到Asterisk实例并通过TCP / IP流发出命令或读取PBX事件。