originate calls via DRb throws exception on answer.
Reported by Daniel Boyles | November 24th, 2009 @ 06:37 AM
Summary
The call is 'originated', but exception 'Adhearsion::VoIP::Asterisk::Manager::ManagerInterfaceResponse does not refer class/module (TypeError)' is raised.
Setup
- Asterisk 1.4.21 running on IP 10.46.163.219
- Outcalling on Asterisk is via H.323 trunk to 10.46.163.13:1720 (this works flawless for everything else)
- Adhearsion 0.8.3 is running on IP 10.46.163.107
- ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
- rubygems 1.3.5
- Installed gems
activesupport (2.3.4) adhearsion (0.8.3) cgi_multipart_eof_fix (2.5.0) daemons (1.0.10) fastthread (1.0.7) gem_plugin (0.2.3) jsgoecke-restful_adhearsion (0.1.1) json (1.1.9) log4r (1.1.2) mongrel (1.1.5) rack (1.0.1) rest-client (1.0.3) rubigen (1.5.2) sinatra (0.9.4)
Asterisk Configs
manager.conf
[ahn_ami]
secret = adhearsion
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
extensions.conf
[default]
; single Adhearsion extension
exten => 8001,1,AGI(agi://10.46.163.107)
exten => 8001,n,Hangup
...
Adhearsion configs
config/startup.rb
...
config.logging :level => :debug
...
config.asterisk.enable_ami :host => "10.46.163.219", :username => "ahn_ami", :password => "adhearsion", :events => true
config.enable_drb
...
dialplan.rb
default {
@destination = self.call.variables[:destination] = variable("destination")
if @destination
play 'one-moment-please'
dial @destination
end
}
test.rb
require 'drb'
Adhearsion = DRbObject.new_with_uri 'druby://localhost:9050'
options = { :channel => "H323/6702@10.46.163.13:1720",
:context => "default",
:priority => "1",
:exten => "8001",
:async => 'true',
:variable => "destination=H323/6969@10.46.163.13:1720"}
Adhearsion.originate options
Results
- Extension H323/6702 rings
- H323/6702 hears "One Moment please"
- Extension H323/6969 rings and is connected to H323/6702
Output from test.rb
ruby test.rb
/usr/lib/ruby/1.8/drb/drb.rb:585:in `load': Adhearsion::VoIP::Asterisk::Manager::ManagerInterfaceResponse does not refer class/module (TypeError)
from /usr/lib/ruby/1.8/drb/drb.rb:585:in `load'
from /usr/lib/ruby/1.8/drb/drb.rb:581:in `synchronize'
from /usr/lib/ruby/1.8/drb/drb.rb:581:in `load'
from /usr/lib/ruby/1.8/drb/drb.rb:633:in `recv_reply'
from /usr/lib/ruby/1.8/drb/drb.rb:923:in `recv_reply'
from /usr/lib/ruby/1.8/drb/drb.rb:1202:in `send_message'
from /usr/lib/ruby/1.8/drb/drb.rb:1093:in `method_missing'
from /usr/lib/ruby/1.8/drb/drb.rb:1177:in `open'
from /usr/lib/ruby/1.8/drb/drb.rb:1092:in `method_missing'
from /usr/lib/ruby/1.8/drb/drb.rb:1110:in `with_friend'
from /usr/lib/ruby/1.8/drb/drb.rb:1091:in `method_missing'
from test.rb:11
Output from ahn start .
INFO ahn: Adhearsion initialized!
DEBUG ami: Sending AMI action:
>>> Action: login
>>> ActionID: ncJRdg3j-ZoZ3-53UX-CE2J-XJx5zuhAYU7h
>>> Username: ahn_ami
>>> Secret: adhearsion
>>> Events: Off
>>>
INFO ami: Successful AMI actions-only connection into ahn_ami@10.46.163.219
INFO ami: Successful AMI events-only connection into ahn_ami@10.46.163.219
WARN deprecation: The implementation of the ping, originate, introduce, hangup, call_into_context and call_and_exec methods will soon be moved from this class to SuperManager. At the moment, the SuperManager abstractions are not completed. Don't worry. The migration to SuperManager will be very easy. See http://docs.adhearsion.com/AMI for more information.
DEBUG ami: Sending AMI action:
>>> Action: originate
>>> ActionID: ei65iJoY-s6NT-HiMT-WD9e-dpLntOqkFUFL
>>> exten: 8001
>>> priority: 1
>>> channel: H323/6702@10.46.163.13:1720
>>> context: default
>>> async: true
>>> variable: destination=H323/6969@10.46.163.13:1720
>>>
INFO agi: Handling call with variables {:type=>"H323", :language=>"en", :enhanced=>0.0, :uniqueid=>"asterisk-1259059528.412", :dnid=>6702, :request=>#<URI::Generic:0xb7822168 URL:agi://10.46.163.107>, :callingpres=>0, :query=>{}, :callerid=>nil, :calleridname=>nil, :callingtns=>0, :rdnis=>nil, :context=>"default", :extension=>8001, :type_of_calling_number=>:unknown, :accountcode=>"", :network=>true, :channel=>"H323/10.46.163.13:1720-73", :callingani2=>0, :priority=>1}
DEBUG agi: >>> ANSWER
DEBUG agi: <<< 200 result=0
DEBUG agi: >>> GET VARIABLE destination
DEBUG agi: <<< 200 result=1 (H323/6969@10.46.163.13:1720)
DEBUG agi: >>> EXEC playback one-moment-please
DEBUG agi: <<< 200 result=0
DEBUG agi: >>> EXEC Dial H323/6969@10.46.163.13:1720||
DEBUG agi: <<< 200 result=-1
Hopefully that's enough info to fix the error ..
Comments and changes to this ticket
-
Daniel Boyles November 24th, 2009 @ 08:20 AM
Updated the ticket with ruby & rubygems version.
Also corrected the installed adhearsion version to 0.8.3 (not 0.8.4) -
jreynolds December 11th, 2009 @ 10:46 AM
I had this same problem, it is because you are naming the remote drb object "Adhearsion" which conflicts with module called "Ahearsion". Try:
AdhearsionRemote = DRbObject.new_with_uri 'druby://localhost:9050'
... AdhearsionRemote.originate optionsI no longer get that exception, but asterisk hangs up once it's answered.
-
Daniel Boyles December 16th, 2009 @ 03:44 PM
Thanks jreynolds.
It works now & thanks for the explanation.
I actually got the code for test.rb from jicksta's click-to-call
Now I can hopefully get that to work for me :-)I don't get asterisk hanging up on me, so perhaps you're experiencing another issue ?
-
Ben Klang July 28th, 2010 @ 09:55 PM
- Assigned user changed from Jay Phillips to Ben Klang
- Milestone order changed from 0 to 0
Just a bit of housekeeping: it looks like this is not a bug (though perhaps a documentation issue). Any reason not to close this out?
-
Ben Klang August 19th, 2010 @ 07:52 PM
- State changed from new to invalid
Please Sign in or create a free account to add a new ticket.
With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile ยป
People watching this ticket
Referenced by
- 37 DRb call to proxy.introduce() throws exception upon answer I'm getting the same response for originate via DRb. Full...