2011-12-23 7 views
3

私はAsteriskの場合、Flash Operator Pannelのソートを開発していますが、Flashに依存するのではなくNode.jsとSocket.ioを使用しています。node.jsからbashへのコマンドの送信と実行

ノードサーバーとフロントエンドをきれいにしましたBUTアスタリスクからノードサーバーにイベントを送信し、ソケット経由で送信されることをどうすればよいのかわかりません。

実際の拡張機能を使用していないため、AMIやAsteriskソケットに接続することで、私たちのニーズに合ったアスタリスクが大きく調整されていることがわかります。

だから、アスタリスクの部分にもかかわらず、私はbashやカールまたは何

を通じてノードAに情報を送ることができる方法を知りたい私は、サーバーへのカールを使用して考えたが、これは誰か、誰がコマンドを知っていることを引き起こす可能性があります(非常にありそうもない)アプリケーションの流れを非現実的なデータで変更する可能性があります。

EDIT:それについて再考すると、ソケット/サーバー経由でリクエストを受信できるようにしたいですか? socket.ioを介して送信されるアクションを実行できるようにします。

これは可能ですか?

+0

このプロジェクトを完了したら、私は知りたいと思うでしょう。私の連絡先をGoogleで検索してください。 – Mbrevda

答えて

1

答えは本当にあなたがアスタリスクからノードにしようとしている特定のデータに依存します。 Flash Operator Panelを交換しようとしていますが、実際の拡張機能はありません。私は、AsteriskをSBCとして使用していると推測しています。

本当にイベントドリブンのアプローチが必要な場合は、必要に応じてノードに到達するようにダイヤルプランを変更することをお勧めします。これは、いくつかの引数(何らかの言語で書かれています)を持つAGIスクリプトを呼び出すことによって最も容易に達成され、その後、HTTP POST、ソケットなどを介してノードに接続されます。

もっとパッシブなアプローチをしたい場合は、ノードがデータのアスタリスクログファイルをストリーム読み込みするか、既に示唆したようにそこからアスタリスクマネージャインターフェイス(AMI)に接続してストリームすることができます。前に述べたこととは対照的に、私はこれが非常に困難な仕事ではないと考えています。

0

アスタリスクのAMI(アスタリスクマネージャインターフェイス)へのノードからソケットを開きたいです。私は、ノードを使用することはありませんが、私はコードはおおよそ次のようになります想像:

最もよく維持AMIライブラリの
var astman = new net.socket().connect(5038);//connect to port 5039 on localhost 
astman.on('data', function(data) { 
    //do something with received data 
}); 

一つはFreePBXのphp-astmanagerです。それはPHPで書かれているが、それはあなたにあなたの必要性のかなり良いアイデアを与える必要があります。

+0

こんにちは@Mbrevda問題は、アスタリスクを制限してカスタマイズし、ダイヤルプランで呼び出しを再ルーティングするために必要な情報を取得するアクションを実行するときに発生します。だから、もし私がソケットに接続すると、私は必要とされない多くの情報を受け取ることも、それは有用です。ですから、基本的に私はアスタリスクでもノードでも同じことをやっています。 –

+0

@AntonioLaguna - 残念ながら、それがアスタリスクの仕組みです。 しかし、アスタリスクの美しさは、外部のサービスとどのように動作するかです。アスタリスクは、ユーザーが望むものを正確に得るために項目を開発、実装、実行するサイクルを焼く代わりに、「firehose」へのアクセスをあなたに指示します。あなたはすべてを得る*。さあ、あなたが望むものだけを自由にフィルタリングしてください。あなたは私がリンクしているライブラリを見ましたか?それをjsに移植すると、大部分の作業が省略されます *アスタリスクマネージャはいくつかのCOARSEフィルタを適用できます - マネージャ権限/ manager.confを参照してください。 – Mbrevda

+0

主な問題は、実際の拡張機能を使用していないし、MySQLから入​​手したディナミックキューを使用しています。エージェントとキューの両方がデータベースから取得されます。そのような柔軟性はAsterisk AS ISには存在しないため、私たちはこのように管理しました。 –

0

あなたは確かにnode.jsプログラムをセットアップして、アスタリスクからのメッセージをソケットで待ち受けることができます。

また、特に、ノードサーバーとアスタリスクサーバーが同じマシン上にない場合は、独自の接続管理スキーム、認証スキーム、メッセージ耐久性(おそらく)をロールバックする必要があります。 RabbitMQのようなメッセージキュープログラムを使うことができます。これは、プロセス間通信に関係する重要な細部の多くを処理します。それもかなり簡単です。ノード側でチェックアウトhttps://github.com/postwait/node-amqp

関連する問題