使用 Asterisk API,我可以将 To 通道重定向到带有或不带有上下文的扩展。
如果我尝试将 From 频道重定向到分机,呼叫将终止,除非上下文设置为“默认”。
为什么是这样?
另请参阅有关上下文和 Asterisk 的这些问题。
使用 Asterisk API,我可以将 To 通道重定向到带有或不带有上下文的扩展。
如果我尝试将 From 频道重定向到分机,呼叫将终止,除非上下文设置为“默认”。
为什么是这样?
另请参阅有关上下文和 Asterisk 的这些问题。
我相信您必须始终指定上下文。
在一个工作示例中,我使用:
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:
以我的经验,我认为实际上重定向不会将频道转发或转移到一个分机。它实际上重定向了拨号计划执行的顺序。因此,通过重定向,您必须指定目标上下文、扩展名、优先级。以便重定向的调用接受适当的调用并执行。除非您指定上下文,否则它可能会采用默认上下文。如果找不到匹配项,我认为它可能已断开连接。我想这可能会发生在你身上。它可以从星号 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