2011-12-29 49 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