我正在开发一个非常简单的星号--基于Java的程序,它向调用者表示问候,从web服务中检索一些信息,将检索到的数据读入调用者,最后挂断。
我遵循的步骤:
在extensions_custom.conf上输入了以下行:
exten => 1000,n,Agi(agi://192.168.0.8/ivryobi.agi)
在C中创建了以下文件结构:\Project\target\classes\
Runnable.java
IvrYobi.java
Runnable.class
IvrYobi.class
fastagi-mapping.properties在快速贴图中,我有:
ivryobi.agi = main.IvrYobi
IvrYoby的内容如下:
public class IvrYobi extends BaseAgiScript {
public void service(AgiRequest request, AgiChannel channel) throws AgiException {
String callerMsisdn = request.getCallerIdNumber();
}当正常工作时,
在控制台中运行以下命令
asterisk-java.jar;commons-lang3-3.10.jar;commons-logging-1.2.jar;httpclient-4.5.12.jar;httpcore-4.4.13.jar;mysql-connector-java-8.0.20.jar;.
C:\Project\target\classes>java -cp -cporg.asteriskjava.fastagi.DefaultAgiServer
正如您在下面的控制台输出中所看到的,工作非常完美
6月30日,2020年6:09:04下午6:09:04 org.asteriskjava.fastagi.DefaultAgiServer启动INFORMACI N:侦听*:4573。2020年6月30日下午6:09:09 PM org.asteriskjava.fastagi.AbstractAgiServer getPool INFORMACI N:线程池启动。2020年6月30日下午6:09:09 PM org.asteriskjava.fastagi.ResourceBundleMappingStrategy loadResourceBundle INFORMACI N:向IvrYobi类添加“ivryobi.agi”映射。
当问题出现时出现
当我运行完全相同的代码,但在控制台中运行时,我使用Runnable.java
以下是Runnable.java的内容:
DefaultAgiServer server = new DefaultAgiServer();
public MyRunnable() {
ClassNameMappingStrategy strategy = new ClassNameMappingStrategy(false);
server.setMappingStrategy(strategy);
}
public void run() {
try {
server.startup();
} catch (IllegalStateException | IOException e) {
e.printStackTrace();
server.shutdown();
}
}
public void stop() {
server.shutdown();
}我们可以在Eclipse的控制台上观察到以下错误:
org.asteriskjava.fastagi.internal.DefaultAgiChannelFactory 0主调试org.asteriskjava.fastagi.DefaultAgiServer -使用channelFactory channelFactory 9主信息org.asteriskjava.fastagi.DefaultAgiServer -侦听*:4573。4806主调试org.asteriskjava.fastagi.DefaultAgiServer -从/192.168.0.254 4810接收到的连接org.asteriskjava.fastagi.DefaultAgiServer -线程池启动.4849 available 1.1调试org.asteriskjava.fastagi.ClassNameMappingStrategy -无法创建ivryobi.agi类型的AgiScript实例:未找到类,确保类存在并且在CLASSPATH 4849 available 1.1错误org.asteriskjava.fastagi.internal.FastAgiConnectionHandler上可用-没有为URL‘agi://192.168.0.8/ivryobi.agi(脚本'ivryobi.agi')配置的脚本
试图对进行故障排除
CLASSPATH.
拜托,你还有什么其他的想法我可以试试吗?
发布于 2020-07-16 19:53:49
终于自己找到了解决办法
我不得不使用项目的源代码重新编译asterisk-java.jar
在DefaultAgiServer.java上更改行:
resourceBundle = ResourceBundle.getBundle(configResourceBundleName);通过以下方式:
FileInputStream fis = new FileInputStream("myivr.properties");
resourceBundle = new PropertyResourceBundle(fis);
logger.info("resourceBundle cargado ok!");在捕获时,替换
return;具有更好的响应,因此您将知道资源是否无法加载。
logger.info("resourceBundle cargado ok!");
}
catch (MissingResourceException | IOException e)
{
logger.error("No existe el recurso invocado: " + e.getMessage());
return;
}https://stackoverflow.com/questions/62667876
复制相似问题