使用Asterisk API我可以将To频道重定向到包含或不包含上下文的扩展名。
如果我尝试将From频道重定向到分机,则除非将上下文设置为“default”,否则将终止呼叫。
为什么会这样?
另请参阅有关上下文和Asterisk的这些问题。
Why would originate call fail when using the Asterisk API with the Context set to "default"?
答案 0 :(得分:0)
我相信您必须始终指定上下文。
在一个工作示例中,我使用:
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发送到套接字)
无需指定频道:,上下文:, Exten:和优先级:
答案 1 :(得分:0)
根据我的经验,我认为实际上重定向不转发或将信道转移到一个分机。它实际上重定向了拨号计划执行的顺序。因此,通过重定向,您必须指定目标上下文,扩展名,优先级。这样重定向的呼叫将执行适当的呼叫并执行。除非您指定上下文,否则它可能采用默认值。如果找不到匹配项,我认为它可能会断开连接。我认为这可能发生在您身上。可以从星号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);