4

私は現在、Asterisk AMI を使用して通話の着信を検出し、通話の発信者と発信者に基づいて Web 要求を実行する Windows サービスを作成しています。これらの詳細の両方が含まれているのを聞くことができるアスタリスクのイベントを知っている人はいますか? 通話しているシステム外の人の番号が必要ですが、アスタリスクの外で使用できる限り、呼び出されている内部電話番号を識別するために使用できるものは何でも問題ありません.

私はイベントを見ていましたが、それらはすべて外部発信者の番号を持っていますが、サービスでこれらの辞書を構築しない限り、uniqueid 以外の内部発信者にリンクするものはありません。使用する。

4

2 に答える 2

6

そのため、最終的には、AMI のみを使用して呼び出しイベントをリッスンすることで、これを行うことができました。私たちがアクセスしたかったもので、Newchannel イベント、Dial イベント、Hangup イベントをリッスンしましたが、電話をかけている人の数と電話をかけている人の数だけを求めている場合は、監視を回避できると確信しています。ダイヤルイベントのみ。

Newchannel イベントを受信するたびに Channel オブジェクトを作成し、それを現在 Asterisk サーバー上にある Channels のリストに追加しました。次に、Begin の Subevent を使用して Dial イベントをリッスンすることで、通話に関係する両当事者の一意のチャネル ID を抽出し、関係する番号を取得することができました。ハングアップ イベントが受信されたとき、破棄されていたチャネルを削除しました。これは今のところうまく機能しているようですが、完全にテストする時間はありませんでしたので、正しいことを願っています.

于 2010-03-10T02:32:41.990 に答える
0

私にはアイデアがありますが、おそらく答えは気に入らないでしょう:)

私たちはこれをやろうとして失敗したので、何か悪いことをしました:)

私たちが行ったのは、agiスクリプトを作成し、Managerインターフェイスを使用してそれらを呼び出し、コマンドラインをスクレイプすることでした。

コアショーチャネルのようなものは簡潔ですが、それは機能します..正規表現を使用して文字列出力を解析し、そこから情報を取得しました。そのようなことを行う場合の唯一の問題は、パッチを適用するたびに監視する必要があることです。コマンドラインからの出力は、パッチごとに変わる傾向があります。

c#apiを使用し、agiを使用せずにこれを行う方法を見つけた場合、私は非常に興味がありますが、最終的にagiスクリプトを使用せずに、apiで必要なことを実行できませんでした。

于 2010-03-04T15:06:33.293 に答える