首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Adhearsion之外的rails应用程序上接收实时星号AMI事件

在Adhearsion之外的rails应用程序上接收实时星号AMI事件
EN

Stack Overflow用户
提问于 2012-07-07 10:32:16
回答 1查看 1.4K关注 0票数 1

我有一个rails应用程序,我试图通过AMI从星号获取实时事件。

我成功地创建了一个脚本,该脚本可以在不创建新的adhearsion项目的情况下从附件源代码中发起调用。

我创建了一个类,扩展了adhearsion的ManagerInterface类并重写了event_message_received方法。从Rails,CLI,如果有人调用,我按enter 2或3次,我得到事件,但我必须介入才能得到它。

这是我的代码:

代码语言:javascript
复制
    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

我需要运行一个后台进程才能做到这一点吗?如果我做了,我该怎么做?

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2012-07-09 17:04:36

虽然可以在Adhearsion应用程序之外使用Adhearsion类,但它实际上并不是一种受支持的使用。Adhearsion应用程序提供的部分功能是帮助处理从星号接收到的事件所需的守护和事件子系统,这两个子系统都不是真正必要的,就像您之前所做的那样。如果您真的坚持使用Adhearsion应用程序之外的库,那么您需要做的不仅仅是子类ManagerInterface。不过要小心:您不想做的事情(主要是出于性能原因)是在每个Rails web请求中创建/拆卸一个新的AMI连接。

我强烈建议您使用Adhearsion应用程序来处理来自AMI的事件,然后使用类似于DRb的方法来处理Rails和Adhearsion之间的通信。在一些情况下,我们需要在Rails中访问星号事件(例如,显示调用队列统计信息),这种方法对我们非常有效。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11374232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档