我有一個Rails應用程序,我試圖通過AMI從我的星號中獲取實時事件。在Rails應用程序上接收實時Asterisk AMI事件Adhearsion之外
我成功創建了一個腳本,可以在不創建新的adhearsion項目的情況下從adhearsion源代碼發起調用。
我創建了一個擴展adhearsion的ManagerInterface類並覆蓋event_message_received方法的類。從Rails CLI如果有人打電話,我按下輸入2或3次,我得到的事件,但我必須介入獲得它。
這裏是我的代碼:
class Astercall < Adhearsion::VoIP::Asterisk::Manager::ManagerInterface
def initialize
super(:host => "host", :username => "username", :password => "password", :events => true)
connect!
end
def self.click_call(number, exten, name)
# asterisk = connect()
originate(:channel => "SIP/#{exten}",
:context => "from-internal",
:exten => number,
:priority => "1",
:caller_id => "Calling #{name}")
end
def event_message_received(event)
if(event.kind_of? Adhearsion::VoIP::Asterisk::Manager::ManagerInterfaceEvent)
puts event.inspect
end
end
end
我是不是要運行一個後臺進程來做到這一點。如果我這樣做,我該怎麼做呢?
在此先感謝
好的!我不知道我能做到這一點!那麼我怎麼把事件從adhearsion項目推到rails應用程序?如果我用這種方法正確理解了這一點,您可以從rails應用程序訪問adhearsion應用程序的方法,而不是周圍的其他方式!一旦發生事件,我將如何將事件推送到Rails應用程序? – Matsoui 2012-07-10 15:52:18
問題是,如果你在請求之外,你的Rails應用程序將如何處理它收到的事件?爲什麼會關心他們?更有可能的是你的用戶界面將會關心,你應該使用像[faye](http://faye.jcoglan.com/)這樣的事件將事件從Adhearsion推送到瀏覽器(可能不是真正的AMI事件,但某些事情您的客戶端應用程序將很容易理解)。 – 2012-07-24 15:10:07