0
我想從custum asterisk插件發送消息到我的應用程序。獲取/訂閱停滯消息(星號ARI)
經過一番努力,我可以從我的插件發送停滯消息,但我不知道如何在java中處理它們。 (我使用ari4java項目)。
在插件我把我的消息,兩種不同的方法:
stasis_publish("StasisTest", msg);
// or
int result = stasis_app_send("StasisTest", inte);
我可以在插件的消息,所以我想有發送到應用程序。
首先我extension.conf
exten => 3000,1,NoOp(test ARI)
same => n,Answer()
same => n,StasisTest()
在Java端,我不知道在哪裏可以收到消息,我都應該有被AriCallback或AriCallback處理:
private static class DummyCallBack implements AriCallback<Message> {
@Override
public void onSuccess(Message result) {
System.out.println(String.format("Dummy message callback receive [%s] with class [%s]",
result.getType(),
result.getClass()));
}
@Override
public void onFailure(RestException e) {
System.out.println("fail callback message");
}
}
private static class AppDummyCallback implements AriCallback<ch.loway.oss.ari4java.generated.Application> {
@Override
public void onSuccess(ch.loway.oss.ari4java.generated.Application result) {
System.out.println(String.format("Dummy Application callback receive name [%s] with class [%s]",
result.getName(),
result.getClass()));
}
@Override
public void onFailure(RestException e) {
System.out.println("fail callback application");
}
}
我註冊到ARI(這工作正常):
ari = AriFactory.nettyHttp(url, username, password, AriVersion.ARI_1_7_0);
我試着獲取消息通知:
public static AriApplication createAriApplication(final ARI ari,
final String applicationName,
final EndpointTypes endpointTypes,
final AriCallback<Message> callback,
final AriCallback<Application> appHandler
) throws ARIException {
ActionEvents actionApplications = ari.getActionImpl(ActionEvents.class);
actionApplications.eventWebsocket(applicationName, callback);
ari.applications().subscribe(applicationName, endpointTypes.getEndpoint(), appHandler);
return new AriApplication(ari, applicationName, callback);
}
public AriApplication(final ARI ari,
final String applicationName,
final AriCallback<Message> callback) throws ARIException {
this.ari = ari;
this.applicationName = applicationName;
ActionEvents actionEvents = ari.getActionImpl(ActionEvents.class);
actionEvents.eventWebsocket(applicationName, callback);
}
當我在撥打電話[3000],我得到下面的輸出:
Dummy Application callback receive name [StasisTest] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.Application_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ApplicationReplaced_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.EndpointStateChange_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelCreated_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelStateChange_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelDialplan_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelDialplan_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelStateChange_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelDialplan_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelHangupRequest_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelVarset_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.ChannelDestroyed_impl_ari_1_7_0]
Dummy message callback receive [null] with class [class ch.loway.oss.ari4java.generated.ari_1_7_0.models.EndpointStateChange_impl_ari_1_7_0]
我想沒有這個消息的一個是我的消息,我怎麼能找回這個淤滯信息 ?他們是否發送給ARI?如果不是,我可以在ARI和我的插件之間發送什麼樣的消息?