2015-04-07 61 views
1

我有一个Asterisk服务器在支付环境中工作得很好。现在,我需要将业务逻辑与Asterisk服务器分离以提高效率,并保护AGI脚本,原因很明显。如何将现有的Asterisk AGI脚本转换为FASTAGI脚本

问题是,如何将现有的工作AGI脚本转换为FASTAGI脚本,或者如何从FASTAGI服务器调用现有的AGI脚本?

我有红色的一些帖子在这个平台上的答案,但没有人清楚说明如何从头开始做这件事。很高兴能够清楚地了解如何使用PHP实现这一目标。

回答

0

您可以使用xinetd。从每一个星号框中输入您的拨号方案,调用AGI具有快速AGI参数,取代fastagi服务器的IP地址:

AGI(agi://192.168.1.100/) 

请确保您有在/etc/services类似:

agi    4573/tcp      # FAST AGI entry 

在FastAGI服务器:在一个名为/etc/xinetd.d/agi的文件中(确保/etc/xinetd.conf正在从/etc/xinetd.d/加载模块)有一个调用您的agi脚本的定义。

# description: agi service for PHP fastagi interaction 
service agi 
{ 
     socket_type = stream 
     user   = root 
     group  = nobody 
     server  = /path/to/agiLaunch.sh 
     wait   = no 
     protocol  = tcp 
     bind   = 127.0.0.1 
     disable  = no 
     per_source = UNLIMITED 
     instances = UNLIMITED 
     cps   = 1000 0 
} 

在你的AGI脚本,现在你可以只是做像往常一样,通过读取STDIN或STDOUT。

+0

好的,谢谢你的回应。在这个平台上的某个地方有红色,并尝试过它。所以,如果我已经说过10个AGI脚本已经工作了,那么我该如何使用这种方法来使用这种方法调用所有的AGI脚本? – CEDOC

+0

您可以使用xinetd为每个端口创建一个不同的端口。但!我可能会使用“网络脚本”功能,例如如果你调用'AGI(agi:// hostname [:port] [/ script],args)'你放入'/ script'部分的内容将作为一个通道变量'agi_network_script'传递给脚本。因此,使用网络脚本来编写一个处理10的哪个AGI脚本的脚本来处理它。另外,这本书“星号:电话的未来”使用xinetd和他们的fastagi例子来说明它的价值。 – dougBTV

+0

非常感谢dougBTV,你一直很乐于助人。您是否有任何想法可以进行身份​​验证,以允许经过身份验证的人员或用户从他们的拨号计划中调用FASTAGI脚本?我计划将服务扩展到任何愿意在其dialplan中使用AGI脚本的人。 – CEDOC