java - 星号-Java AGI。 DefaultAgiServer 在启动方法运行时卡住

标签 java spring agi asterisk-java

尝试使用 agi 来收听 asterisk。

但是启动方法运行后,我的应用程序卡住了。没有错误出现...

我的 Spring Bean :

@Bean(name = "agi")
public DefaultAgiServer getAsteriskAgi() throws Exception {
    DefaultAgiServer agiServer = new DefaultAgiServer();
    agiServer.startup();
    return agiServer;
}

我的 map

public class AsteriskAgi extends BaseAgiScript{
@Override
public void service(AgiRequest agiRequest, AgiChannel agiChannel) throws AgiException {
    // Answer the channel...
    answer();
    // ...say hello...
    streamFile("welcome");
    streamFile("tt-monkeys");
    // ...and hangup.
    hangup();

}

我的属性文件

fastagi-mapping.properties 

位于资源文件夹中

为什么会这样?

UPD 最后两个控制台输出:

2018-05-21 15:19:53 DEBUG DefaultAgiServer:81 - Using channelFactory org.asteriskjava.fastagi.internal.DefaultAgiChannelFactory
2018-05-21 15:19:53  INFO DefaultAgiServer:315 - Listening on *:4573.

最佳答案

Tomcat 在启动时挂起,因为 AGI 服务器正在阻止它并等待来自套接字连接的传入 AGI 数据 link . 要解决这个问题,您应该将 AgiServer 包装在一个单独的线程中,以便它在后台运行或使用 AgiServerThread .

结果我的 asterisk agi 配置如下所示:

@Bean
public AgiServerThread agiServerThread(){
    AgiServerThread agiServerThread = new AgiServerThread(getDefaultAgiServer());
    agiServerThread.startup();
    return agiServerThread;
}

@Bean
public DefaultAgiServer getDefaultAgiServer(){
    return new DefaultAgiServer(getAsteriskAgiScript());
}

@Bean
public AgiScript getAsteriskAgiScript(){
    return new AsteriskAgi();
}

关于java - 星号-Java AGI。 DefaultAgiServer 在启动方法运行时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50448048/

相关文章:

java - 改变 JFileChooser 行为 : preventing "choose" on enter in file path JTextField

java - 如何在不引发 org.threeten.bp.zone.ZoneRulesException 的情况下对使用 ZoneId.systemDefault 的代码进行单元测试

java - 如何限制上传到 Spring MVC3 Controller 的文件类型

java - Java 中的事件引发处理

java - 何时在 Hadoop Map-Reduce 中使用 NLineInputFormat?

java - 未从查询字符串获取值

spring - 如何创建指向返回 void 的 Spring Controller 操作的链接

PHPAGI : Exec format error

java - Asterisk Java AGI : utils. c write() 返回错误:管道损坏

php - 在 Asterisk 拨号方案中将单词转换为数字