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

FastAGI Protocol

阅读更多

FastAGI Protocol

 

      FastAGI基于AGI通过TCP/IP Socket连接替代标准输入和标准输出做为沟通的媒介。你可以使用FastAGI运行Java应用程序(可以在不同的机器上运行Asterisk) ,它仅启动一次AGI 脚本直到它被关闭。使用此协议结合Java的多线程支持可以构建非常快的脚本。

      一个简单的实现如下,通过拨打1300分机调用AGI脚本,能听到welcome的语音。该实现共分4部分:

 

  • AGI脚本实现代码:继承BaseAgiScript基类,并在service方法中实现具体的功能调用;
  • 拨号计划:在拨号计划中定义AGI的调用;
  • AGI脚本映射:定义AGI脚本名称与具体Java实现间的映射关系;
  • AgiServer:AGI服务端,通过启动该服务,将创建一个Socket服务端开放AGI服务,同时载入fastagi-mapping中的定义,以提供给AGI应用进行调用;

 

HelloWorld

 

import org.asteriskjava.fastagi.AgiChannel;
import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.BaseAgiScript;
public class HelloAgiScript extends BaseAgiScript
{
    public void service(AgiRequest request, AgiChannel channel)
            throws AgiException
    {
        // Answer the channel...
        answer();
               
        // ...say hello...
        streamFile("welcome");
               
        // ...and hangup.
        hangup();
    }
}
 

 

extensions.conf

 

 

[default]
...
exten => 1300,1,Agi(agi://192.168.0.100/hello.agi)
 

 

fastagi-mapping.properties

 

hello.agi = HelloAgiScript
 

 

最终的目录结构

 

 

$ ls -l
-rw-r--r-- 1 srt srt 163689 2005-03-11 22:07 asterisk-java.jar
-rw-r--r-- 1 srt srt     26 2005-03-11 20:50 fastagi-mapping.properties
-rw-r--r-- 1 srt srt    624 2005-03-11 22:07 HelloAgiScript.class
-rw-r--r-- 1 srt srt    438 2005-03-11 20:50 HelloAgiScript.java
 

 

启动服务

 

$ java -jar asterisk-java.jar
 

服务配置

通过修改fastagi.properties可更改DefaultAgiServer的默认值

 

 

bindPort = 1234   #Socket端口
poolSize = 20      #并发数(线程数)

 

注意事项

  1. 您编写的AgiScript必须是线程安全的
  2. 线程池最大线程数为100,即时你配置超过100也只能并发100个
分享到:
评论

相关推荐

    Asterisk-java-2.0.3

    The Asterisk-Java package consists of a set of Java classes that allow you to... Asterisk-Java supports both interfaces that Asterisk provides for this scenario: The FastAGI protocol and the Manager API.

    拧紧枪 OP协议控制 OpenProtocol 开放式协议

    在IT行业中,拧紧枪OP协议控制OpenProtocol是一种专用于无线拧紧工具的开放式通信协议。这个协议的设计目的是为了高效、精确地控制和监控拧紧工具的运行状态,确保在汽车制造、航空航天和其他精密工程领域中的螺纹...

    C语言头文件 PROTOCOL

    C语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOLC语言头文件 PROTOCOL...

    protocol buffers 官网中文教程

    Protocol Buffers是Google开发的一种数据序列化协议,用于结构化数据的序列化,可以视为一种跨平台、跨语言的数据交换格式。它允许开发者定义数据结构,然后生成代码以轻松地在各种数据流之间读写这些数据。Protocol...

    urlprotocol协议设置

    在IT行业中,URLProtocol协议是一种自定义协议处理方式,它允许开发者扩展Windows系统对URL的解析功能,使得系统能够识别并处理自定义的协议类型,比如`myurl:`。这通常用于实现特定软件的内部链接或者集成不同应用...

    URL Protocol网页调用本地程序,带参数测试版,对URLProtocol不了解的可学习

    使用URL Protocol实现网页调用本地程序,通过不同参数,可进行不同操作,简单测试版。 在浏览器无法调用本地资源,项目需要网页打开本地excel,而进行URL Protocol研究测试。 无法编辑下载需要的分数,很抱歉。 所有...

    libsignal-protocol-javascript-example:有关“如何使用libsignal-protocol-javascript?”的示例

    libsignal-protocol-javascript示例有关“如何使用libsignal-protocol-javascript ?”的示例组件server.js index.html和scripts怎么跑使用以下节点运行服务器: node server.js 。 (我认为只需要ws ) 在浏览器中...

    Protocol_Buffer官网文档中文版

    ### Protocol_Buffer官网文档中文版知识点总结 #### 一、简介与概览 - **Protocol Buffer**是一种用于数据序列化的高效工具,支持多种编程语言(如Java、C++、Python等),能够实现数据的有效存储和传输。 #### ...

    OpenProtocol_Specification_.pdf

    《OpenProtocol_Specification_》是一份详细的技术规范文档,它主要介绍了PF4000开放协议Atlas以及OpenProtocol协议的报文格式和使用方法。PF4000是阿特拉斯·科普柯(Atlas Copco)工业技术公司推出的一套工业通讯...

    Google_Protocol_Buffe

    标题与描述中提到的“Google Protocol Buffers”,通常简称为Protobuf,是Google开发的一种数据交换格式,它具有高效、简洁、自动化的特性。Protocol Buffers可以将结构化数据序列化,可用于网络通信和数据存储等...

    OpenProtocol-MTF6000

    标题“OpenProtocol-MTF6000”指向了一种特定的技术协议,即Open Protocol,它被应用于阿特拉斯·科普柯(Atlas Copco)的MTF6000控制器产品中。Open Protocol是一种工业通信协议,专为自动化装配线和机器人工具控制所...

    ADASIS v3 Protocol v3.1.0 英文版本

    ADASIS v3 Protocol v3.1.0 英文版本知识点 标题解释 本文档的标题是"ADASIS v3 Protocol v3.1.0 英文版本”,它表明了本文档的主题是关于ADASIS v3 Protocol的规范说明,版本号为v3.1.0,并且是英文版本。 描述...

    OpenProtocol_Specification_R_2_10_0_9836 4415 01.pdf

    根据提供的文件内容,知识点可以围绕阿特拉斯·科普柯工业技术集团发布的《OpenProtocol Specification R 2.10.0》文档展开。该文档详细描述了一种名为“OpenProtocol”的开放式通信协议,专门应用于电枪设备和工业...

    OpenProtocol纯手写源码实例

    OpenProtocol纯手写源码实例 /// /// 初始化连接 /// /// 是否开启TCP层KeepAlive功能 /// <returns></returns> public bool Init(bool KeepAlive) { try { if (mSocket != null) { Close(); } /...

    Appendix for PowerFocus 6000 Open Protocol【阿塔拉斯开放协议】

    "阿塔拉斯开放协议_appendix_for_PowerFocus_6000_Open_Protocol" 阿塔拉斯开放协议是PowerFocus 6000的一个开放接口,允许用户在远程控制或数据订阅控制器时构建应用程序。该协议独立于平台,可以在Linux、PLC、...

    Protocol Buffer

    Protocol Buffer是一种由Google开发的数据序列化协议,它旨在简化数据的存储和通信。Protocol Buffer与平台无关,是一种高效的二进制格式,用于结构化数据的串行化(序列化)。它通常用于替代传统文本格式,如XML或...

    URL Protocol 注册程序

    网页通过 URL Protocol 协议调用本地程序。该程序将协议信息写到注册表中。

    01 Protocol Buffer技术详解(语言规范).doc

    Protocol Buffer 技术详解(语言规范) Protocol Buffer 是一种语言中立、平台中立、可扩展的序列化数据格式,用于在通信网络和数据存储中交换结构化数据。Protocol Buffer 技术的主要优点是可以在不同的语言和平台...

Global site tag (gtag.js) - Google Analytics