Java ESL 客户端
关于
本页面记录了在freeswitch-contrib git存储库中维护的org.freeswitch.esl.client库。请参见Java ESL页面,了解使用Java与FreeSWITCH Event Socket的其他选项。
点击此处展开目录
- 1 功能
- 2 获取Java ESL库
- 2.1 二进制jar文件
- 2.2 从contrib git中构建
- 3 用法
- 3.1 入站客户端用法
- 3.2 出站套接字客户端用法
- 4 问题
- 5 路线图
- 6 捐赠
- 7 参见
功能
- 根据Apache许可证版本2授权 http://www.apache.org/licenses/LICENSE-2.0
- 运行时依赖于Netty(Apache 许可证)和SLF4j(MIT许可证)库
- 没有本地库运行时依赖
- 支持ESL入站和出站,请参见Event Socket和Event Socket Outbound.
- 支持OSGi
- 使用maven构建
获取Java ESL库
二进制jar文件
当前发布版本
- org.freeswitch.esl.client-0.9.2.jar
- org.freeswitch.esl.client-0.9.2-sources.jar
- org.freeswitch.esl.client-0.9.2-javadoc.jar
这些构件都使用GPG密钥1024D/74B7C72A (david.varnes [at] gmail [dot] com)签名,可以验证您下载的二进制文件与最初上传的文件是否相同。
手动下载
可直接从以下地址下载构件:
现在它在Github上可用并更新了,欢迎您加入我们。^_^
https://github.com/esl-client/
这是由Sonatype维护的托管存储库,用于OSS项目。文件会自动从那里同步到Maven中央存储库。
从Maven中央存储库获取
假设您使用的构建工具可以从Maven 2中央存储库解析依赖项,请将以下内容添加到您的项目pom.xml中:
<dependencies>
...
<dependency>
<groupId>org.freeswitch.esl.client</groupId>
<artifactId>org.freeswitch.esl.client</artifactId>
<version>0.9.2</version>
</dependency>
...
</dependencies>
注意:netty依赖项在Maven 2中央存储库中不可用。您可以选择:
遵循netty网站上的说明,或者
在您的Maven构建中启用'jboss-public-repository'配置文件,该配置文件包含在org.freeswitch.esl.client pom中,并将合适的jboss存储库添加到您的构建中。 例如:运行
mvn install -Pjboss-public-repository
运行时依赖项
如果您手动下载并安装了jar文件,则还必须在Java类路径上提供以下jar文件
- netty-3.2.1.Final.jar 用于异步套接字通信
- slf4j-api-1.6.1.jar 用于日志记录
- 使用slf4j-nop.jar作为日志记录的实现,如果不需要日志记录。
从contrib git源代码构建
当然,可以使用以下步骤从最新的git HEAD(或TAG)构建上述的二进制文件。
在构建工具上依赖maven工具
一个类似于“autotools”和“make”的Java构建工具,用于主要的FreeSWITCH代码,该库使用maven构建工具构建。
在本页面的范围之外安装maven,只需使用链接中提供的最新版本即可,maven也已为一些主要的Linux发行版打包。
Maven会为您下载两个编译依赖项(netty和slf4j-api)和测试依赖项(logback),以及编译Java类,运行单元测试并组装“jar”归档文件。
从git中检出
必须首先安装git。代码可以从freeswitch-contrib git存储库获取。以下命令获取该存储库(您还可以获取freeswitch-contrib中的其他好东西)。
$ git clone git://git.freeswitch.org/freeswitch-contrib.git
编译、运行测试和生成jar
假设'mvn'在路径上。
$ cd freeswitch-contrib/dvarnes/java/esl-client $ mvn install
如果这是您首次运行maven工具,由于它要从中央maven存储库下载一组看似无穷无尽的jar,所以需要一些时间。首次下载之后,后续构建将会快得多。
注意:某些测试将尝试连接到默认端口8021和密码上正在运行的FreeSWITCH安装。请参阅Event_Socket的配置部分。这些测试将不会在正常的maven构建中运行,您需要以通常的方式运行它们,如调用junit测试用例(IDE等)。
这些测试试图连接到一个名为'freeswitch-test'的主机,因此请将一个条目添加到您的主机文件中,将'freeswitch-test'指向一个具有监听ESL套接字的主机,可以是本地主机。
用法
有关ESL的通用用法,请浏览维基页面,下面是一些链接。各种语言绑定和客户端的维基页面都提供了有用的代码段和线索。
FreeSWITCH技术手册的第9章还介绍了事件和ESL。
入站客户端用法
源代码的src/test/java目录中包括一个简单的单元测试:
org.freeswitch.esl.client.inbound.ClientTest
此测试假定它可以连接到一个名为'freeswitch-test'的主机上的默认套接字端口和密码的FreeSWITCH。
请注意,测试源代码不包含在打包的JAR文件中,它可以从Git存储库中获取。
出站套接字客户端用法
一个非常简单的示例在主客户端jar中作为示例实现:请参考以下类
org.freeswitch.esl.client.outbound.example.SimpleHangupOutboundHandler
其中提供了如何在src/test/java源代码目录中的出站'unit'测试(实际上是一个应用示例)中运行它的示例。
为了使测试工作正常,请配置一个与运行中的FreeSWITCH类似的扩展,如下所示:
<extension>
<condition field="destination_number" expression="444">
<action application="socket" data="192.168.100.88:8084 async full"/>
</condition>
</extension>
在测试运行期间,IP地址需要是FreeSWITCH将连接你正在运行的测试的地址。然后运行测试,它将给你45秒的时间来拨打分机444并观察信息是否记录到控制台,之后呼叫将被挂断,然后测试将结束(关闭出站套接字客户端)。
注意上述描述的单元测试源代码未包含在打包的jar文件中,它可以从git仓库获取。
出站应用程序
应用程序开发者需要扩展(最重要的是)org.freeswitch.esl.client.outbound.AbstractOutboundClientHandler
和(非常简单)org.freeswitch.esl.client.outbound.AbstractOutboundPipelineFactory
类并根据自己的逻辑来调用org.freeswitch.esl.client.outbound.SocketClient
。
已知问题
待办事项 - 在FreeSWITCH Jira下设置模块。
对于反馈、问题、bug修复,可以直接发送到下面的电子邮件地址,或通过freeswitch-users邮件列表提出。作者通常在IRC上使用昵称'dvarnes'。
路线图
截至2010年8月30日
- 在Jira中添加本节内容
- 填写本文档页中的待办事项
- 完成更多示例
- 完成项目源代码根目录中的TODO.txt项目
捐赠
这个Java库是作者利用空闲时间创建和维护的。
你可以通过Paypal向作者捐赠,捐赠地址为david.varnes [at] gmail [dot] com。