2

アスタリスクAGIを使用してシェルスクリプトを実行しようとしています。ここに記載されているチュートリアルを使用しました http://www.shiffman.net/p5/asterisk/

私のextensions.confは次のとおりです

[default]
include => clicall

[clicall]
exten => _X,1,Goto(s,1);
exten => _X.,1,Goto(s,1);
exten => s,1,Answer();
exten => s,n,EAGI(runEAGI.sh);

私が実行しようとしているスクリプト(runEAGI.sh)は次のとおりです

#!/bin/bash
java /home/sphata001/Downloads/EAGI/JEAGIClient $$

権限は755に設定されており、スクリプトはに配置されてい/var/lib/asterisk/agi-bin/ます。javaファイル(JEAGIClient)も事前にコンパイルされています。スクリプトを手動で実行すると、正常に実行され、サーバーに接続します。ただし、SIPクライアントから電話をかけると、スクリプトはアスタリスクコンソールに従って実行されますが、結果は表示されません。コンソールに次の出力が表示されます

 == Using SIP RTP CoS mark 5
    -- Executing [888@default:1] Goto("SIP/1001-00000027", "s,1") in new stack
    -- Goto (default,s,1)
    -- Executing [s@default:1] Answer("SIP/1001-00000027", "") in new stack
    -- Executing [s@default:2] EAGI("SIP/1001-00000027", "runEAGI.sh") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/runEAGI.sh
    -- <SIP/1001-00000027>AGI Script runEAGI.sh completed, returning 0
    -- Auto fallthrough, channel 'SIP/1001-00000027' status is 'UNKNOWN'

解決策はありますか?

ありがとうございました。

4

2 に答える 2

2

最も可能性が高いのは、Javaへのフルパスを指定する必要があることです。

ヒント:アスタリスクをデバッグするためのAGIの簡単な解決策は、アスタリスクを停止してコンソールに接続して開始することです。そうすれば、すべてのスクリプトエラーが表示されます。

asterisk -rx "core stop now"
asterisk -vvvvgc

また、アスタリスクコンソールでAGIデバッグを有効にすることもできます。

agi set debug on
于 2013-03-07T23:03:37.280 に答える
2

スクリプトとそれに必要なリソースが Asterisk ユーザーによって所有されていること、および SELinux がスクリプトの正常な実行を妨げていないことを確認してください

于 2013-03-07T20:26:39.200 に答える