adhearsion-drb is an Adhearsion Plugin providing DRb connectivity. It allows third party ruby clients to connect to an Adhearsion instance for RPC.
- Adhearsion 2.0+
Add adhearsion-drb
to your Adhearsion app's Gemfile.
In your Adhearsion app configuration file, add the following values:
Adhearsion.config[:adhearsion_drb] do |config|
config.host = "DRb service host"
config.port = "DRB service port".to_i
config.acl.allow = ["127.0.0.1"] # list of allowed IPs (optional)
config.acl.deny = [] # list of denied IPs (optional)
config.shared_object = some_shared_object
end
The shared_object
in the config is the endpoint to which a 3rd-party client will be bound on connection. The most basic scenario looks something like this:
class DrbEndpoint
def foo
:bar
end
end
Adhearsion.config.adhearsion_drb.shared_object = DrbEndpoint.new
with the following client:
require 'drb'
adhearsion_api = DRbObject.new_with_uri 'druby://localhost:9050'
p adhearsion_api.foo
When the Adhearsion application is running, and the client script runs, it should print :foo
to stdout.
A more useful example to return the number of active calls:
class DrbEndpoint
def call_count
Adhearsion.active_calls.count
end
end
Or to trigger an outbound call:
class DrbEndpoint
def place_call(number, provider)
call = Adhearsion::OutboundCall.originate "SIP/#{number}@#{provider}", controller: FooController
call.id
end
end
NB: Be careful not to define #call
on your shared object, else it will be evaluated by the config system incorrectly.
Original author: Juan de Bravo
- Fork the project.
- Make your feature addition or bug fix.
- Add tests for it. This is important so I don't break it in a future version unintentionally.
- Commit, do not mess with rakefile, version, or history.
- If you want to have your own version, that is fine but bump version in a commit by itself so I can ignore when I pull
- Send me a pull request. Bonus points for topic branches.
Copyright (C) 2012 Adhearsion Foundation Inc. Released under the MIT License - Check License file