zoukankan      html  css  js  c++  java
  • Asterisk Manager Interface(AMI)

    本文转自:http://littcai.javaeye.com/blog/844682

    简介

          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地址范围和用户名/密码进行身份验证。配置文件内容可能如下:

    它将允许使用Manager AP从任意的 IP 地址使用用户名 "manager" 密码 "pa55w0rd"登录Asterisk服务器。配置完成后,可以通过telnet命令连接到AMI接口进行测试。

    Console代码 复制代码

    1. [root@localhost ~]# telnet 127.0.0.1 5038
    2. Trying 127.0.0.1...  
    3. Connected to localhost.localdomain (127.0.0.1).  
    4. Escape character is '^]'.  
    5. Asterisk Call Manager/1.1

    连接成功后,可以按照接口规范定义发送命令了,以下为登录的命令演示:

    Java代码 复制代码

    1. Action: login  
    2. Username: admin  
    3. Secret: 000000
    4. Response: Success  
    5. Message: Authentication accepted 

    注意事项:

    1. 注意参数跟参数值之间的空格必须要加
    2. 最后一个参数输入完成后再输入一个回车,AMI接口认为一个空行是输入的结束
  • 相关阅读:
    DOM基础(二)
    DOM基础(一)
    JS入门(五)
    linux的用法
    一道关于运行顺序题
    vue框架
    HTML的知识点
    从队友那偷来的主席树模板(静态区间第k小)
    网络流基础模型——任务分配模型(HDU 3572)
    HDU 5521 Meeting(建图思维)
  • 原文地址:https://www.cnblogs.com/OOAbooke/p/2294199.html
Copyright © 2011-2022 走看看