Ruby on rails 粘连';拨号计划可以';t型轨道模型

Ruby on rails 粘连';拨号计划可以';t型轨道模型,ruby-on-rails,ruby,asterisk,Ruby On Rails,Ruby,Asterisk,在我的adhearsion dialplan中,我有以下代码导致立即断开与呼叫的连接,而不向日志或控制台输出任何信息: the_flow = CallFlow.where(:dnis => dnis).first CallFlow是我的rails应用程序(gui/app/models/call_flow.rb)中的一个模型,它位于我的adhearsion应用程序的gui目录中。在我的.ahnrc文件中,我有: paths: # All paths are relative to th

在我的adhearsion dialplan中,我有以下代码导致立即断开与呼叫的连接,而不向日志或控制台输出任何信息:

the_flow = CallFlow.where(:dnis => dnis).first
CallFlow是我的rails应用程序(gui/app/models/call_flow.rb)中的一个模型,它位于我的adhearsion应用程序的gui目录中。在我的.ahnrc文件中,我有:

paths:
  # All paths are relative to this file's directory
  init: config/startup.rb
  dialplan: dialplan.rb
  events: events.rb
  models: gui/app/models/*.rb
这是call_flow.rb:

class CallFlow < ActiveRecord::Base
  belongs_to :routable, :polymorphic => true

  def dialplan
    puts self.routable.description.squeeze("\n").strip
  end

  def target_route=(params)
    self.routable = params[:kind].constantize.new(params.reject {|k,v| k == "kind"})
  end
end

我知道这个模型可以工作,因为我可以使用rails服务器创建记录。但我甚至不知道如何获取有关拨号计划在到达上面的第一行时断开呼叫的任何信息。

尝试在rails控制台中运行此代码

首先启动控制台

bundle exec rails console
然后尝试运行导致问题的代码

CallFlow.where(:dnis => "something").first # replace "something" with something valid
一些需要检查的事项:

  • 确保在
    config/startup.rb
  • 确保启用了Rails集成或数据库集成,而不是两者都启用
  • 如果您运行的是1.1.0之前的Adhearsion版本,则dialplan.rb中出现的某些异常可能会自动丢失。考虑升级到1.1.0或更高版本(1.2.0是当前稳定的),并创建异常处理程序。这可以是一个简单的消息记录器,也可以向Airbrake报告异常。请参阅本文底部的一个简单的Adhearsion异常记录器
  • 尝试启动Adhearsion控制台,查看您的模型是否已加载。使用
    ahn Start console/path/to/ahn/app
    启动语音控制台。然后,您将拥有一个类似于Rails控制台的控制台,并且应该可以访问所有ActiveRecord模型(假设Rails集成加载正确)
Adhearsion 1.1.0或更高版本的异常记录器示例。将此内容放入您的events.rb:

events.exception.each do |e|
  ahn_log.error e.message
  ahn_log.debug e.backtrace.join("\n")
end
关于Rails与数据库集成的一般说明:

  • 对于Rails集成,有一行类似于
    config.enable\u Rails:path=>'/path/to/Rails/app',:env=>:production
  • 对于数据库集成,请使用以下内容:
    config.enable_数据库:适配器=>'mysql',
    :username=>“root”,
    :密码=>'',
    :host=>localhost'
  • 仅对于数据库集成(而不是Rails集成),您应该确保您的模型位于Adhearsion可以找到它们的位置。默认位置为
    models/
    ,但可以通过编辑Adhearsion应用程序基本目录中的
    .ahnrc
    文件来更改

如果我知道如何解决ActiveRecord问题,可能会有所帮助……使用较新版本的adhearsion是否容易?使用较新版本的adhearsion应该非常容易。只需更新您的Gemfile(假设您至少使用了ahn1.0),捆绑安装,然后就可以了。我个人升级了Adhearsion应用程序,最早可以追溯到0.8.3版本,没有任何代码更改。在Ahn 2.0之前,1.0 API保证向后兼容。如果不是,那就是一个bug。你用events.rb部分几乎救了我的命。IMO应该作为一个选项与一个全局配置文件一起内置到Adhearsion中:)感谢Bent在随后的Adhearsion 1.2版本中将此功能添加到框架本身。
events.exception.each do |e|
  ahn_log.error e.message
  ahn_log.debug e.backtrace.join("\n")
end