Asterisk API,重定向来自通道和上下文

时间:2012-06-02 07:02:22

标签: asterisk

使用Asterisk API我可以将To频道重定向到包含或不包含上下文的扩展名。

如果我尝试将From频道重定向到分机,则除非将上下文设置为“default”,否则将终止呼叫。

为什么会这样?

另请参阅有关上下文和Asterisk的这些问题。

Why would originate call fail when using the Asterisk API with the Context set to "default"?

https://stackoverflow.com/questions/10860456/why-would-redirect-fail-when-using-the-asterisk-api-to-call-an-outside-line

2 个答案:

答案 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);

我的问题:Hangup not receiving in time asterisk ami