0

使用 Asterisk API,我可以将 To 通道重定向到带有或不带有上下文的扩展。

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

为什么是这样?

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

为什么使用 Asterisk API 且 Context 设置为“default”时发起调用会失败?

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

4

2 回答 2

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 发送到套接字)

无需指定Channel: , Context: , Exten:Priority:

于 2013-03-02T14:12:43.687 回答
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);

我的问题:挂断没有及时收到星号 ami

于 2018-12-10T05:13:15.717 回答