我正在使用ari4java库,我在注册stasis应用程序时遇到问题。 如果我使用命令行连接到Asterisk并侦听特定应用程序名称的事件,它可以工作。它创建了应用程序,一切都很好。当我使用Java中的ari4java库执行此操作时,会出现问题。实际上,我正在尝试从库的github存储库(即 - ConnectAndDial.java)[1]中获取示例。我理解ARI.build(...)调用:
ari = ARI.build(
ASTERISK_ADDRESS,
"app_test",
ASTERISK_USER,
ASTERISK_PASS,
AriVersion.ARI_3_0_0
);
必须创建名为“app_test”的应用程序。现实情况是,它没有。
for (Application app : ari.applications().list()) {
System.out.print(app.getName() + " ");
}
上面的代码,在ARI.build(...)之后执行,不执行任何操作。这意味着没有在Asterisk注册的应用程序。在Asterisk CLI中运行“ari show apps”也告诉我没有注册应用程序。
我无法理解,问题出在哪里?请有人帮助我吗?
提前致谢。
P.S。:我正在使用Asterisk 15.4.0
答案 0 :(得分:0)
首先,您需要像使用ARI.build一样创建ARI实例。例如:
ARI ari = ARI.build(asteriskUrl, "stasisApp", "userid", "secret", AriVersion.ARI_3_0_0);
此外,您还需要如下定义配置文件:
[general]
enabled = yes
pretty = yes
[userid]
type = user
read_only = no
password = secret
[general]
enabled = yes
pretty = yes
[userid]
type = user
read_only = no
password = secret
[general]
enabled = yes
bindaddr = 0.0.0.0
bindport = 8088
此外,在创建ARI实例后,您可以使用以下方法打开网络套接字以监听ARI事件:ari.events().eventWebsocket("stasisApp", true, ariCallback);