Ruby on rails 粘连';拨号计划可以';t型轨道模型
在我的adhearsion dialplan中,我有以下代码导致立即断开与呼叫的连接,而不向日志或控制台输出任何信息: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
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控制台,查看您的模型是否已加载。使用
启动语音控制台。然后,您将拥有一个类似于Rails控制台的控制台,并且应该可以访问所有ActiveRecord模型(假设Rails集成加载正确)ahn Start console/path/to/ahn/app
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可以找到它们的位置。默认位置为
,但可以通过编辑Adhearsion应用程序基本目录中的models/
文件来更改.ahnrc
events.exception.each do |e|
ahn_log.error e.message
ahn_log.debug e.backtrace.join("\n")
end