星号:用AMI将一个通道连接到另一个通道

时间:2013-10-17 16:41:02

标签: node.js asterisk asteriskami

我有Asterisk 11.4.0,远程云服务器和Node.js服务器作为中间件。当任何帐户尝试拨打电话时,我需要来自远程服务器的信息使用哪条外线(甚至根本不拨打这个电话!)。这些数据无法直接在Asterisk中计算。只有在云的响应之后才能进行呼叫。我的操作队列如下所示:

使用中间服务器上的AMI从Asterisk捕获呼叫启动;

将信息发送到云进行分析;

使用AMI通过响应外线进行呼叫(或根本不进行);

问题是,我不知道如何制作它。我想,当一个人试图拨打电话时,我可以在dialplan选项中使用WaitExten并使用中间服务器捕获Newchannel事件,将所有信息发送到云端。当它响应时,我可以使用现有的等待线发起呼叫。

您能告诉我,如何将通道附加到Originate操作,当我将其作为“通道”参数传递时,Asterisk不会将此行连接到被调用的exten。

1 个答案:

答案 0 :(得分:1)

您需要使用FastAGI或AGI(fastagi更快但更复杂)来控制频道的呼叫流程。

http://www.voip-info.org/wiki/view/Asterisk+FastAGI

在AGI中,您可以使用“拨号”命令获取呼叫信息,决定将其放置在何处。呼叫将自动桥接。

http://www.voip-info.org/wiki/view/Asterisk+cmd+Dial

此外,您可以使用Bridge ami动作来桥接2个频道,但这不是如何创建的。正确的方式 - 通过拨号。

http://www.voip-info.org/wiki/view/Asterisk+cmd+Bridge

您还可以在拨号方案CURL功能中使用外部API上的http请求帮助。这将与fastagi具有相同的成本,但由于您喜欢node.js

,因此可以更简单

如果使用Originate ami命令,则可以通过

向该命令添加任何变量
 "Set" =>  "variablename=somethign"
PS实际上几乎任何东西都可以在星号内部计算,确定你是否已经知道了。 Asterisk有完整的语言(意思是你可以在dialplan中描述任何算法),具有请求db info等功能。

免责声明:我建议阅读星号书,如“Asterisk the future of telephony” BEFORE 使用星号pbx创建任何应用程序设计。如果您忽略此警告,您的应用程序可能会不稳定,并且在将其投入生产后需要完全重写。