Asterisk支持多种语言实现AGI脚本,因此运行AGI脚本需要服务器支持脚本语言环境,例如某个AGI脚本是通过JAVA语言编写,那么服务器需要运行整个JAVA虚拟机环境。这给对于多个AGI脚本并发执行给服务器带来的负担是不可忽略的。那么是否可以提供一种机制,使得执行AGI脚本与运行Asterisk的服务器从物理上独立开来,即AGI脚本
在其他机器上执行,执行的结果送到Asterisk服务器,由AGI服务器与Asterisk服务器交互来完成命令的发起与执行动作。
Fastagi提供了这样的功能。
Fastagi提供了这种机制使得Asterisk与AGI脚本之间通过TCP Socket连接交互,同时代替了标准的STDIN/STDOUT接口。Fastagi使得运行Asterisk执行应用分布到多个服务器上去执行,与asterisk分离。Asterisk连接Fastagi服务的默认端口为4573.
Fastagi的示例拨号方案如下:
[testFastagi]
exten =>_X.,1,Answer()
exten =>_X.,n,AGI(agi://192.168.1.44)
exten =>_X.,n,Hangup()
若是指定端口6987:
[testFastagi]
exten =>_X.,1,Answer()
exten =>_X.,n,AGI(agi://192.168.1.44:6987)
exten =>_X.,n,Hangup()