Asterisk API を使用すると、コンテキストの有無にかかわらず、To チャネルを拡張機能にリダイレクトできます。
From チャネルを内線番号にリダイレクトしようとすると、コンテキストが「デフォルト」に設定されていない限り、通話が終了します。
どうしてこれなの?
コンテキストとアスタリスクに関するこれらの質問も参照してください。
Context を "default" に設定して Asterisk API を使用すると、発信呼び出しが失敗するのはなぜですか?
Asterisk API を使用すると、コンテキストの有無にかかわらず、To チャネルを拡張機能にリダイレクトできます。
From チャネルを内線番号にリダイレクトしようとすると、コンテキストが「デフォルト」に設定されていない限り、通話が終了します。
どうしてこれなの?
コンテキストとアスタリスクに関するこれらの質問も参照してください。
Context を "default" に設定して Asterisk API を使用すると、発信呼び出しが失敗するのはなぜですか?
常にコンテキストを指定する必要があると思います。
私が使用する実例では:
fputs($socket, "Action: Redirect\r\n");
fputs($socket, "ActionID: $actionID\r\n");
fputs($socket, "Channel: $channel\r\n");
fputs($socket, "Context: agents\r\n");
fputs($socket, "Exten: customHangup\r\n");
fputs($socket, "Priority: 1\r\n\r\n");
fputs($socket, "Action: Logoff\r\n\r\n"); // Log off
(これはPHPがソケットに送信していることに注意してください)
Channel:、Context:、Exten:およびPriority:を指定する必要はありません。
私の経験では、実際には、リダイレクトはチャネルを 1 つの拡張機能に転送または転送しないと思います。ダイヤルプラン実行のシーケンスを実際にリダイレクトしています。したがって、リダイレクトすることにより、宛先コンテキスト、拡張子、優先度を指定する必要があります。リダイレクトされた呼び出しが適切な呼び出しを受けて実行されるようにします。コンテキストを指定しない限り、デフォルトのコンテキストが使用される場合があります。一致するものが見つからない場合は、切断されている可能性があると思います。これはあなたに起こるかもしれないと思います。これは、アスタリスク CLI から識別される場合があります。あるフォームから別のコンテキストにリダイレクトするときに、最初に転送拡張機能のハングアップが転送された拡張機能を含む完全な会話の後にのみ到着するときに、別の問題があります。
次のように私のダイヤルプラン:
[forwarding]
;callforwarding
exten => _XXXX,1,Answer()
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
[external]
exten => _XXXX,1,Answer()
same => n,Dial(SIP/${EXTEN})
same => n,Hangup()
AMI リダイレクト アクション (php):
$msg="Action: Redirect\r\n";
$msg.="Exten: $ToExten\r\n";
$msg.="Context: forwarding\r\n";
$msg.="Priority: 1\r\n";
$msg.="Channel: $channel\r\n\r\n";
fputs($this->amisocket, $msg);