2011-12-29 178 views
4

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

+0

[Asterisk vs FreeSwitch,有没有与FreeSWITCH中的AMI&AGI相似](http://stackoverflow.com/questions/8662270/asterisk-vs-freeswitch-are-there-parallels-to-ami- agi-in-freeswitch) – jprofitt 2011-12-29 00:33:40

+0

@jprofitt,因为前面的问题的一部分请求比较使用Asterisk和FreeSWITCH的场景,并将其关闭。所以现在我发布了另一半,这与比较无关。 – 2011-12-29 00:39:24

回答

6

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

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

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

另一个控制像AGI这样的调用的ESL相关方法是使用fs_ivrd守护进程。它比ESL更少使用,但对于类似AGI的脚本来说是一个不错的选择。有关更多详细信息,请参见this wiki page

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

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

+0

谢谢你提供这样的信息答案。在AGI中,我可以用PHP编写代码,不需要学习任何新的逻辑实现。所以第一个问题,使用PHP脚本仍然是一个选项,而不是Lua?其次,如果使用PHP而不是Lua,它会在系统上造成多少开销? – 2012-01-02 19:23:41

2

AGI用于在呼叫期间使用的脚本(即从拨号计划拨号规则执行中调用)。倾听AMI并等待事件的脚本是独立的。虽然后者在技术上也可以完成前者的工作,但是让他们保持分离更好。

+0

我明白那一部分。我最近听说FreeSWITCH比Asterisk更好,更可靠。由于我目前正在使用AMI和AGI,所以我不知道FreeSWITCH在这两件事上是否有相似之处。 – 2011-12-30 06:27:37

+0

对于AMI和AGI之间的区别,我从来没有听说过像这样的每个分裂的用例。你可以扩大你的答案,或引用一个来源? (仍在学习星号。) – Thufir 2015-04-02 00:59:15

+0

Agi的性质在通话过程中被星号拉开。没有其他方法来启动agi脚本。另一方面,您可以启动任何脚本/进程并将其连接到AMI并对事件做出反应。资料来源:Core FreePBX开发者已有超过五年的时间。 – Mbrevda 2015-04-02 10:53:30

2

FreeSWITCH wiki上有一个页面,可解决大部分“星号到FreeSWITCH”问题:Rosetta Stone