g
フラグは次のDial
とおりです (使用しているアスタリスクのバージョンによって若干異なる場合があります)。
g:宛先チャネルがハングアップした場合、現在の内線番号の次の優先順位でダイヤルプランの実行を続行します。
あなたが直面している問題はDial
、ダイヤルプランから実行されていないことです。AGI によって実行されているため、Dial
終了すると話は終わりです。
この仕事をするために、私はこのようなことをします...
まず、開いてextensions.conf
、最後に次の行に沿って何かを追加します (これはテストされていません)。
【フェイルオーバー】
exten => doit,1,Dial(SIP/${TARGET}@${IP1},30,g)
exten => doit,n,Dial(SIP/${TARGET}@${IP2},30,g)
次に、AGI で:
// These set the necessary variables
$agi->set_variable('TARGET', $target);
$agi->set_variable('IP1', $ip);
$agi->set_variable('IP2', $ip2);
// And tell Asterisk where to go after the AGI exits
$agi->set_context('failover');
$agi->set_extension('doit');
$agi->set_priority(1);
exit(0);
次に、Asterisk CLI を起動し、ダイヤルプランをリロードします。
user@host:~$ アスタリスク -r
*CLI> ダイヤルプランのリロード
AGI が終了すると、failover
コンテキストにドロップされて実行され、何らかの理由で最初のエラーが発生した場合はDial
2 番目のエラーが発生します。Dial
両方の 試行後にさらに処理を行う必要がある場合はDial
、dialplan で行うか、事後に別の AGI を起動する必要があります。