Отправка и выполнение команд из node.js в bash - PullRequest
3 голосов
/ 23 декабря 2011

Я разрабатываю своего рода Панель оператора Flash для Asterisk, но с Node.js и Socket.io вместо зависимости от Flash.

Я полировал сервер узлови интерфейс НО Я не знаю, как я могу отправлять события от Asterisk на сервер узла и делать вещи, которые будут отправлены через сокет.

Учитывая тот факт, что у нас естьТщательно настроенный Asterisk в соответствии с потребностями нашей компании, подключение к AMI и к сокету Asterisk не решит мою проблему, потому что мы не работаем с реальными расширениями.

Итак, несмотря на часть Asterisk, я хочу знать, как можноЯ отправляю информацию на узел через bash или curl или любым другим способом

Я думал об использовании curls на сервере, но это может привести к тому, что кто-то, кто знает команды (довольно маловероятно), может изменить поток приложения с нереальными данными.

РЕДАКТИРОВАТЬ: Переосмысливая об этом, я просто хотел бы иметь возможность получать запросы через сокет / сервер ???и затем сможет выполнять действия, которые будут генерироваться через socket.io.

Это вообще возможно?

Ответы [ 4 ]

1 голос
/ 05 января 2012

Ответ действительно зависит от того, какие конкретные данные вы пытаетесь получить от Asterisk к Node. Вы пытаетесь заменить панель оператора Flash, но у вас нет реальных расширений. Я предполагаю, что вы используете Asterisk в качестве SBC / своего рода прокси.

Если вы действительно хотите подход, основанный на событиях, я предлагаю изменить вашу схему набора номеров, чтобы охватить узел при необходимости, с любыми данными, которые вы хотите. Этого легче всего достичь, вызвав скрипт AGI с некоторым количеством аргументов (написанных на любом языке), который затем подключается к Node через HTTP POST, сокет или другое.

Если вы хотите более пассивный подход, вы можете настроить Node для потокового чтения файлов журналов звездочек для данных или, как уже предлагалось, подключиться к интерфейсу Asterisk Manager (AMI) и выполнить потоковую передачу оттуда. Вопреки тому, что было сказано ранее, я не считаю это очень сложной задачей.

0 голосов
/ 27 декабря 2011

Вы хотите открыть сокет от узла до AMI Asterisk (интерфейс менеджера звездочек).Я никогда не использовал Node, но я думаю, что код будет выглядеть примерно так:

var astman = new net.socket().connect(5038);//connect to port 5039 on localhost
astman.on('data', function(data) {
    //do something with received data
});

Одна из наиболее хорошо поддерживаемых библиотек ami - это php-astmanager FreePBX.Хотя он написан на php, он должен дать вам довольно хорошее представление о том, что вам нужно делать.

0 голосов
/ 28 декабря 2011

Вы, безусловно, можете настроить свою программу node.js для прослушивания в сокете сообщений от Asterisk.Но вам придется свернуть свою собственную схему управления соединениями, схему аутентификации, долговечность сообщений (возможно) и т. Д.

Альтернативно - и особенно, если сервер узлов и сервер звездочек не находятся на одном компьютереВы можете использовать программу очереди сообщений, как RabbitMQ.Это заботится о многих важных деталях, связанных с межпроцессным взаимодействием.Это тоже довольно легко.На стороне узла проверьте https://github.com/postwait/node-amqp

0 голосов
/ 24 декабря 2011

Я никогда не использовал Asterisk, но запуск программ командной строки можно выполнить с помощью модуля child_process.

http://nodejs.org/docs/latest/api/child_processes.html

...