`
littcai
  • 浏览: 245829 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

Asterisk Manager Interface(AMI)

阅读更多

 

简介

 

      AMI接口实际上是一个TCP服务器,它由Asterisk服务器自动运行并直接连至Asterisk核心。当有呼叫进过Asterisk核心时,AMI接口将产生事件信息并分发到所有连至AMI TCP服务器上的客户端。      

 

注:

 

  1. 默认情况AMI是被禁止的,需要修改manager.conf配置文件的enabled属性
  2. 早期的Asterisk1.0和1.2版本中,AMI接口是Asterisk的一个主要陷阱(缺陷)。主要原因是服务器是单线程模式的。因此,多用户连接到AMI接口将造成严重的死锁,特别是同时进行读和写的操作。
  3. 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
 

注意事项:

  1. 注意参数跟参数值之间的空格必须要加
  2. 最后一个参数输入完成后再输入一个回车,AMI接口认为一个空行是输入的结束

 

 

 

 

 

分享到:
评论

相关推荐

    libamievent:Asterisk Manager Interface客户端C库

    Asterisk Manager Interface客户端C库 libamievent是用C编写的Asterisk Manager Interface的异步事件驱动的客户端库。它使用作为事件循环后端。 使用libamievent,您可以发送AMI命令,还可以订阅对该命令的响应。 ...

    Asterisk Manager API的C语言开发包

    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:适用于Deno的Asterisk Manager Interface(AMI)客户端

    DAMI支持发送每个动作,并能够处理[AMI API]( https://www.voip-info.org/asterisk-manager-api/中概述的每个事件)。 DAMI将返回给您的数据与Asterisk完全相同,但是对象由数组中的键/值对组成。 例如,采取“ ...

    PHP的Asterisk管理接口PAMI.zip

    PHP Asterisk Manager Interface ( AMI ) 支持同步命令、回应和异步事件,使用模式观察者侦听器。支持多时间的命令回应,特别适合开发业务控制台和 asterisk 频道监控等。 标签:PAMI

    ruby-asterisk:Ruby中的Asterisk Manager界面

    这个gem为Asterisk Manager Interface的Ruby或RubyOnRails项目添加了支持 有一个同名的项目,但似乎已停产,所以我决定开始一个新项目 安装 轨道3 添加到您的Gemfile并运行bundle命令进行安装。 gem "ruby-...

    Asterisk权威文档(第3版)

    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:适用于Node.js的Asterisk管理器界面(AMI)客户端

    Nami本身只是一个库,它允许您的nodejs代码与Asterisk Manager Interface(AMI)进行通信。 但是,它包括一个完整的应用程序,可用于监视星号安装。 您将能够登录,接收异步事件并发送操作(也可以异步接收相应的...

    ya-node-asterisk:用于 Asterisk 管理器界面的 node.js 客户端库

    亚娜Yana 是另一个用于 Asterisk Manager Interface 的 node.js 库。 支持的 Asterisk 版本:全部(主要使用 Asterisk 11、13 和 16 进行测试)。 支持的 node.js 版本:12+。 小(约 350 行代码) 没有依赖低级...

    openvox-sms:OpenVox VoxStack GSM 网关短信发送器

    Asterisk 有 AMI (Asterisk Manager Interface) - 用于交换命令和事件的 telnet 安装 npm install openvox-sms --save 用法 var osms = require('openvox-sms'); var sms = new osms({host: 'localhost'}); sms.on...

    libastman-开源

    该库可让您连接到Asterisk Manager Interface(AMI)。 AMI允许客户端程序连接到Asterisk实例并通过TCP / IP流发出命令或读取PBX事件。

Global site tag (gtag.js) - Google Analytics