FreeSWITCH中是否与Asterisk AMI和AGI有相似之处?

时间:2011-12-29 00:26:18

标签: php voip asterisk freeswitch

Asterisk有Asterisk Manager Interface (AMI)Asterisk Gateway Interface (AGI),使用哪一个可以在Asterisk的某些事件中触发PHP脚本。使用相同的PHP脚本还可以指示Asterisk在呼叫/会议旁边做什么。在FreeSWITCH中是否与AMI和AGI有相似之处?

4 个答案:

答案 0 :(得分:6)

这些都是好问题。我只想在@dkwiebe所说的内容中添加一些内容(这是正确的,BTW)。

FreeSWITCH中的AMI等效项是事件套接字。 (从技术上讲,它不是“事件套接字库”或ESL,它是用于编写使用事件套接字的程序的抽象层。我只想做出这种区别。)事实上,FreeSWITCH等效于“asterisk -r”实际上是一个名为“fs_cli”的基于ESL的程序 - FreeSWITCH命令行界面的缩写。 fs_cli程序是您使用ESL可以完成的一个很好的例子。

此外,没有理由不能使用ESL程序执行可以使用AGI脚本执行的许多操作。 ESL“连接对象”可以“锁定”到单个呼叫支路并控制它。维基上有一些例子,即将发布的FreeSWITCH Cookbook将有一些关于这个主题的食谱。 (完全披露:我是FreeSWITCH Cookbook的合着者。)

另一种控制AGI等调用的ESL方法是使用fs_ivrd守护进程。它不像ESL那么常用,但对于类似AGI的脚本来说是个不错的选择。有关详细信息,请参阅this wiki page

最后,我想提一下Lua是编写脚本/逻辑/等的绝佳选择。在呼叫控制中。它简单,轻便,易于学习。在实验室中,我们在8核机器上看到了几千个并发Lua控制的呼叫。 Lua甚至在一些非常苛刻的环境中工作。

欢迎加入irc.freenode.net上的#freeswitch,与FreeSWITCH社区讨论您的问题。

答案 1 :(得分:2)

AGI用于呼叫期间使用的脚本(即从拨号方案durrign拨号方案执行调用)。收听AMI并等待事件的脚本是独立的。虽然后者在技术上可以做前者的工作,但最好不要将它们分开。

答案 2 :(得分:2)

FreeSWITCH wiki上有一个页面解决了大部分“Asterisk to FreeSWITCH”问题:Rosetta Stone

答案 3 :(得分:1)

@dkwiebe在serverfault- https://serverfault.com/a/345513/105376

上给出了答案
  

对于AMI,您正在寻找Event Socket Library。 mod_event_socket页面上有几个例子。

     

AGI有点不同。您可以在FreeSWITCH中执行类似的操作,但他们会建议您使用lua。我个人使用了FreeSWITCH mod_perl,效果很好。