Запустите Asterisk CLI с Java

Я пытаюсь запустить Asterisk CLI с Java. Например

asterisk -rx "core show license"

Я реализую код Java следующим образом

            Process p = Runtime.getRuntime().exec("asterisk -rx \"core show license\"");
        p.waitFor();
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                p.getInputStream()));
        String line = reader.readLine();

Но то, что я получил, это

No such command '"core' (type 'core show help core' for other possible commands)

из консоли линукса.

Мне интересно, что я сделал ошибку.

Спасибо


person user454083    schedule 14.06.2012    source источник
comment
С какой стати вам нужно делать это вместо использования AMI (API менеджера звездочек)?   -  person pdeschen    schedule 24.06.2012
comment
на самом деле, я знаю, что это можно сделать с помощью менеджера, но мне просто любопытно.   -  person user454083    schedule 24.06.2012
comment
@pdeschen С какой стати документация по использованию API ограничена.   -  person Siddharth    schedule 23.06.2013
comment
Все эти ссылки предоставляют SDK, но не КАК. Документация Asterisk хороша, но неполна. Я не думаю, что они слишком заботятся о решении этого вопроса. По мере того, как компания становится больше, они меньше заботятся о более мелких проблемах. Если кто-то достаточно смел, чтобы рискнуть и попробовать и разработать на звездочке, я думаю, что лучше всего, чтобы мы поддержали. Нам нужна поддержка сообщества, когда компания ее не предоставляет. Я не знаю почему, но этот сайт никогда не открывается для меня.. asterisk-java.org/development   -  person Siddharth    schedule 27.06.2013


Ответы (2)


Как насчет этого:

Process p = Runtime.getRuntime().exec(
    new String[] {"asterisk", "-rx", "core show license"});
person Rekin    schedule 14.06.2012

Process p = Runtime.getRuntime().exec(new String[]{"asterisk","-rx","\"core show license\""});

В вашей версии exec(String) String будет токенизирован с помощью StringTokenizer по умолчанию, который разделяет токены пробелами. Это причина того, что неизвестная основная команда в asterisk.

(Не обязательно, если команда «core show license» должна заключаться в кавычки)

person PeterMmm    schedule 14.06.2012