简体   繁体   English

获取/订阅停滞消息(星号ARI)

[英]Get/Subscribe to stasis message (asterisk ARI)

I am trying to send messages from a custum asterisk plugin to my application. 我正在尝试从custum星号插件向我的应用程序发送消息。

After some effort, I can send stasis message from my plugin, but I don't know how to handle them in java. 经过一些努力,我可以从插件发送停滞消息,但是我不知道如何在Java中处理它们。 (I use ari4java project). (我使用ari4java项目)。

On the plugin I send my message with two different methods : 在插件上,我使用两种不同的方法发送消息:

stasis_publish("StasisTest", msg);
// or
int result = stasis_app_send("StasisTest", inte);

I can get the message in the plugin, so I suppose there are sent to the application. 我可以在插件中获取消息,因此我想将其发送到应用程序。

First my extension.conf 首先我的extension.conf

exten => 3000,1,NoOp(test ARI)
 same => n,Answer()
 same => n,StasisTest()

On the java side, I don't know where the message can be received, I have supposed there are handled by AriCallback or AriCallback : 在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");
        }
    }

I register to the ARI (that's working fine): 我注册了ARI(工作正常):

ari = AriFactory.nettyHttp(url, username, password, AriVersion.ARI_1_7_0);

And I try to get the message notification : 我试图得到消息通知:

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);
    }

When I am making a call on [3000], I get the following output : 当我拨打[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]

I suppose no one of this message are mine message, how can I get back this stasis message ? 我想这个消息中没有一个是我的消息,我怎么能得到这个停滞消息呢? Are they send to the ARI ? 他们被发送到ARI吗? If not, what kind of message can I send between ARI and my plugin ? 如果没有,我可以在ARI和我的插件之间发送什么样的消息?

I used your example sa jumping off point for my own project, here's what I've come up with so far: 我以您的示例作为起点,介绍了自己的项目,到目前为止,这是我想出的内容:

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()));

        if (result instanceof StasisStart)
        {
            StasisStart stasisStart = (StasisStart)result;
            System.out.println
            (
                String.format("StasisStart - Channel: %s State: %s", stasisStart.getChannel().getId(), stasisStart.getChannel().getState())
            );

        } else if (result instanceof ChannelDtmfReceived) {

            ChannelDtmfReceived channelDtmfReceived = (ChannelDtmfReceived)result;
            System.out.println
            (
                String.format("ChannelDtmfReceived received - Channel: %s Digit: %s", channelDtmfReceived.getChannel().getId(), channelDtmfReceived.getDigit())
            );

        } else if (result instanceof ChannelHangupRequest) {

            ChannelHangupRequest channelHangupRequest = (ChannelHangupRequest)result;

            System.out.println
            (
                String.format("ChannelHangupRequest - Channel: %s", channelHangupRequest.getChannel().getId())
            );

        } else if (result instanceof StasisEnd) {

            StasisEnd stasisEnd = (StasisEnd)result;

            System.out.println
            (
                String.format("Stasis End")
            );
        }

    }

    @Override
    public void onFailure(RestException e) {
        System.out.println("fail callback message");
    }
}    

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM