0


Asterisk サーバーと統合された単純なポップアップ アプリケーションを作成しています。私たちのテスト環境は、いくつかの SIP トランクを構成した FreePBX に基づいています。テストは、2 つの内線番号 3000 と 3001 の間です。

3000、3001、およびその他の内線番号は、テスト目的で SIP クライアント (microsip) によって制御され、後で他の sip クライアントまたはソフトフォンになる可能性があります。

私が必要としているのは、誰かが内線 3000 に電話をかけると、オペレーターは通常の SIP クライアントを使用して電話に応答でき、私のアプリケーションは通話に関する情報を表示することです。AMIを使用してそれを達成できました。ここで、通話を保留にするためのボタンをアプリケーションに追加したいと考えています。私は、AMI がそのような機能を公開していないことを知っているので、Async AGI を使用しようとしています。(ところで、アスタリスクと通信するために asternet を使用しています)

AgiAction agi = new AgiAction(channel, "MusicOnHold");
ManagerResponse resp = manager.SendAction(agi);

それをしたら返事が来ました

Failed to add AGI command to channel SIP/3000-00000003 queue

私はそれが何を意味するのだろうか?

また、CLI経由で「MusicOnHold」コマンドを開始しようとしており、応答があります

Channel XXXXX is not controlled by AGI"

そのようなものをダイヤルプラン(extensions.conf)に追加しようとしました:

[default]
exten => 3000,1,NoOp(Async AGI)
same => n,AGI(agi:async)

これにより、「チャネル XXXXX は AGI によって制御されていません」というエラーは削除されますが、「AGI コマンドをチャネル SIP/3000-00000003 キューに追加できませんでした」というエラーは残ります。そして最悪なのは、このダイヤル プランを取得した後、AMI はまだそれをキャプチャできたにもかかわらず、私の sip クライアントが通話を受信しなくなったことです。

私が望むものを達成するための正しい方法は何だろうか?私はアスタリスクがまったく初めてで、基本的な概念が欠けている可能性があるので、良い例をいただければ幸いです。ありがとうございました。

4

1 に答える 1