Asterisk-Java FastAGI报错:未配置callin.agi脚本求助
问题:Asterisk-Java FastAGI 映射配置失败,无法找到callin.agi对应的脚本
环境信息
- 操作系统:Ubuntu 14.04.1 LTS
- Asterisk-Java版本:3.41.0,编译路径
/usr/src/asterisk-java/ /usr/src/asterisk-java/target/buildPackage目录文件:asterisk-java.jarExampleCallIn.classExampleCallIn.javafastagi-mapping.propertiesguava-33.3.1-jre.jar
问题现象
执行启动命令后:
sudo java -cp asterisk-java.jar:guava-33.3.1-jre.jar org.asteriskjava.fastagi.DefaultAgiServer
拨打配置好的分机1300,日志输出错误:
Nov 21, 2024 5:20:55 PM org.asteriskjava.fastagi.DefaultAgiServer startup INFO: Listening on *:4573. Nov 21, 2024 5:20:59 PM org.asteriskjava.fastagi.AbstractAgiServer getPool INFO: Thread pool started. Nov 21, 2024 5:20:59 PM org.asteriskjava.fastagi.ResourceBundleMappingStrategy loadResourceBundle INFO: Resource bundle 'fastagi-mapping' not found. Nov 21, 2024 5:20:59 PM org.asteriskjava.fastagi.internal.AgiConnectionHandler run SEVERE: No script configured for URL 'agi://192.168.2.218/callin.agi' (script 'callin.agi')
当前配置
fastagi.properties内容:
callin.agi=ExampleCallIn
extensions.conf内容:
exten => 1300,1,AGI(agi://192.168.2.218/callin.agi)
- 已设置CLASSPATH:
$ echo ${CLASSPATH} /usr/src/asterisk-java/target/buildPackage
解决方案
1. 修正启动命令的类路径
sudo执行时会重置环境变量,导致CLASSPATH无法被正确读取,且原启动命令未包含.class文件和配置文件所在目录。需显式将buildPackage目录和当前目录加入类路径:
sudo java -cp .:/usr/src/asterisk-java/target/buildPackage:asterisk-java.jar:guava-33.3.1-jre.jar org.asteriskjava.fastagi.DefaultAgiServer
2. 统一配置文件名
Asterisk-Java默认加载的映射配置文件名为fastagi-mapping.properties,但当前使用的是fastagi.properties,需重命名配置文件:
mv /usr/src/asterisk-java/target/buildPackage/fastagi.properties /usr/src/asterisk-java/target/buildPackage/fastagi-mapping.properties
3. 验证类文件的包路径
如果ExampleCallIn.java包含包声明(如package com.xxx;),需在配置文件中填写全限定类名:
callin.agi=com.xxx.ExampleCallIn
确保.class文件所在目录结构与包名一致,且该目录在类路径中。
内容的提问来源于stack exchange,提问作者The SkyRider
相关产品推荐
相关产品推荐

